Version Description
- Changed: Template Export excludes array items with empty strings
- Fixed: Admin notices displaying on plugin Welcome/activation screen
- Fixed: WPForms admin pages displaying blank due to conflicts with a few other plugins
Download this release
Release Info
Developer | jaredatch |
Plugin | Contact Form by WPForms – Drag & Drop Form Builder for WordPress |
Version | 1.3.9.1 |
Comparing to | |
See all releases |
Code changes from version 1.3.8 to 1.3.9.1
- assets/css/admin-addons.css +0 -156
- assets/css/admin-builder.css +3 -3
- assets/css/admin-menu.css +0 -29
- assets/css/admin-overview.css +0 -19
- assets/css/admin-settings.css +0 -477
- assets/css/admin-welcome.css +0 -40
- assets/css/admin.css +2 -0
- assets/css/jquery.minicolors.css +169 -177
- assets/css/wpforms-preview.css +117 -32
- assets/images/cross-inverse.svg +1 -0
- assets/images/cross.svg +1 -0
- assets/images/flags.png +0 -0
- assets/images/icon-cc-amex.png +0 -0
- assets/images/icon-cc-discover.png +0 -0
- assets/images/icon-cc-lock.png +0 -0
- assets/images/icon-cc-maestro.png +0 -0
- assets/images/icon-cc-mastercard.png +0 -0
- assets/images/icon-cc-svc.png +0 -0
- assets/images/icon-cc-visa.png +0 -0
- assets/images/jquery.minicolors.png +0 -0
- assets/images/logo-builder.png +0 -0
- assets/images/logo.png +0 -0
- assets/images/settings-captcha-addon.png +0 -0
- assets/images/settings-email-html.png +0 -0
- assets/images/settings-email-plaintext.png +0 -0
- assets/images/spinner-small.gif +0 -0
- assets/images/spinner.gif +0 -0
- assets/images/welcome-feature-icon-1.png +0 -0
- assets/images/welcome-feature-icon-10.png +0 -0
- assets/images/welcome-feature-icon-2.png +0 -0
- assets/images/welcome-feature-icon-3.png +0 -0
- assets/images/welcome-feature-icon-4.png +0 -0
- assets/images/welcome-feature-icon-5.png +0 -0
- assets/images/welcome-feature-icon-6.png +0 -0
- assets/images/welcome-feature-icon-7.png +0 -0
- assets/images/welcome-feature-icon-8.png +0 -0
- assets/images/welcome-feature-icon-9.png +0 -0
- assets/images/welcome-features.png +0 -0
- assets/images/welcome-testimonial-bill.jpg +0 -0
- assets/images/welcome-testimonial-david.jpg +0 -0
- assets/images/welcome-video.png +0 -0
- assets/js/admin-builder.js +24 -6
- assets/js/admin-overview.js +0 -21
- assets/js/admin-settings.js +0 -224
- assets/js/admin.min.js +1 -0
- assets/js/choices.min.js +4 -0
- assets/js/jquery.fitvids.js +0 -87
- assets/js/jquery.minicolors.min.js +8 -11
- assets/js/wpforms-preview.js +0 -17
- changelog.txt +16 -0
- includes/admin/admin.php +310 -0
- includes/admin/ajax-actions.php +43 -43
- includes/admin/builder/class-builder.php +5 -5
- includes/admin/builder/panels/class-providers.php +2 -2
- includes/admin/class-am-deactivation-survey.php +279 -0
- includes/admin/class-am-notification.php +353 -0
- includes/admin/class-menu.php +92 -16
- includes/admin/class-notices.php +136 -0
- {lite/includes → includes}/admin/class-review.php +60 -3
- includes/admin/class-settings.php +505 -0
- includes/admin/class-tools.php +534 -0
- includes/admin/class-welcome.php +210 -140
- includes/admin/overview/class-overview-table.php +5 -5
- includes/admin/overview/class-overview.php +32 -52
- includes/admin/settings-api.php +305 -0
- includes/class-preview.php +127 -43
- includes/fields/class-base.php +4 -9
- includes/fields/class-checkbox.php +58 -54
- includes/fields/class-radio.php +51 -48
- includes/fields/class-select.php +5 -5
- includes/functions.php +196 -18
- includes/providers/class-base.php +7 -7
- languages/wpforms.pot +1098 -876
- lite/includes/admin/class-settings.php +0 -699
- lite/wpforms-lite.php +349 -52
- readme.txt +17 -1
- wpforms.php +264 -229
assets/css/admin-addons.css
DELETED
@@ -1,156 +0,0 @@
|
|
1 |
-
/* ==========================================================================
|
2 |
-
Addons Styles
|
3 |
-
========================================================================== */
|
4 |
-
|
5 |
-
#wpforms-addons .wpforms-clear:before {
|
6 |
-
content: " ";
|
7 |
-
display: table;
|
8 |
-
}
|
9 |
-
|
10 |
-
#wpforms-addons .wpforms-clear:after {
|
11 |
-
clear: both;
|
12 |
-
content: " ";
|
13 |
-
display: table;
|
14 |
-
}
|
15 |
-
|
16 |
-
#wpforms-addons .intro {
|
17 |
-
margin-bottom: 30px;
|
18 |
-
}
|
19 |
-
|
20 |
-
.wpforms-addons-basic-message {
|
21 |
-
border: 1px solid #ddd;
|
22 |
-
padding: 20px;
|
23 |
-
}
|
24 |
-
|
25 |
-
.wpforms-addons-basic-message h5 {
|
26 |
-
font-size: 16px;
|
27 |
-
font-weight: 700;
|
28 |
-
margin: 0 0 15px 0;
|
29 |
-
}
|
30 |
-
|
31 |
-
.wpforms-addons-basic-message p {
|
32 |
-
margin: 0;
|
33 |
-
}
|
34 |
-
|
35 |
-
.wpforms-addons-unlock {
|
36 |
-
margin: 35px 0 25px;
|
37 |
-
}
|
38 |
-
|
39 |
-
.wpforms-addons-unlock h4 {
|
40 |
-
font-size: 23px;
|
41 |
-
font-weight: 400;
|
42 |
-
margin: 0 0 6px 0;
|
43 |
-
line-height: 29px;
|
44 |
-
}
|
45 |
-
|
46 |
-
.wpforms-addons-unlock p {
|
47 |
-
margin: 0;
|
48 |
-
}
|
49 |
-
|
50 |
-
.wpforms-addon-item {
|
51 |
-
background-color: #fff;
|
52 |
-
border: 1px solid #ddd;
|
53 |
-
width: 49%;
|
54 |
-
float: left;
|
55 |
-
clear: right;
|
56 |
-
min-height: 118px;
|
57 |
-
margin: 0 0 18px 0;
|
58 |
-
position: relative;
|
59 |
-
}
|
60 |
-
|
61 |
-
.wpforms-addon-item.wpforms-second {
|
62 |
-
float: right;
|
63 |
-
}
|
64 |
-
|
65 |
-
.wpforms-addon-image {
|
66 |
-
float: left;
|
67 |
-
height: 92px;
|
68 |
-
width: 92px;
|
69 |
-
border: 1px solid #ddd;
|
70 |
-
margin: 12px 0 0 12px;
|
71 |
-
}
|
72 |
-
|
73 |
-
.wpforms-addon-image img {
|
74 |
-
display: block;
|
75 |
-
margin: 0 auto;
|
76 |
-
max-width: 100%;
|
77 |
-
}
|
78 |
-
|
79 |
-
.wpforms-addon-text {
|
80 |
-
margin: 0 200px 0 126px;
|
81 |
-
padding: 22px 0;
|
82 |
-
}
|
83 |
-
|
84 |
-
.wpforms-addon-text h4 {
|
85 |
-
margin: 0;
|
86 |
-
font-size: 16px;
|
87 |
-
font-weight: 700;
|
88 |
-
margin: 0 0 8px 0;
|
89 |
-
}
|
90 |
-
|
91 |
-
.wpforms-addon-text p {
|
92 |
-
margin: 0;
|
93 |
-
}
|
94 |
-
|
95 |
-
.wpforms-addon-action {
|
96 |
-
position: absolute;
|
97 |
-
top: 0;
|
98 |
-
right: 0;
|
99 |
-
width: 180px;
|
100 |
-
height: 100%;
|
101 |
-
text-align: center;
|
102 |
-
border-left: 1px solid #ddd;
|
103 |
-
}
|
104 |
-
|
105 |
-
.wpforms-addon-action a,
|
106 |
-
.wpforms-addon-action button {
|
107 |
-
font-size: 14px;
|
108 |
-
color: #fff;
|
109 |
-
background-color: #0085ba;
|
110 |
-
border: 1px solid #006d98;
|
111 |
-
text-decoration: none;
|
112 |
-
width: 130px;
|
113 |
-
margin: 40px auto 0 auto;
|
114 |
-
display: block;
|
115 |
-
border-radius: 5px;
|
116 |
-
padding: 10px 0;
|
117 |
-
cursor: pointer;
|
118 |
-
}
|
119 |
-
|
120 |
-
.wpforms-addon-action a:hover,
|
121 |
-
.wpforms-addon-action button:hover {
|
122 |
-
background-color: #006d98;
|
123 |
-
}
|
124 |
-
|
125 |
-
.wpforms-addon-status-active .wpforms-addon-action {
|
126 |
-
background-color: #edfaff;
|
127 |
-
}
|
128 |
-
|
129 |
-
.wpforms-addon-status-inactive .wpforms-addon-action {
|
130 |
-
background-color: #f5f6f7;
|
131 |
-
}
|
132 |
-
|
133 |
-
.wpforms-error {
|
134 |
-
color: #b94a48;
|
135 |
-
background-color: #f2dede;
|
136 |
-
padding: 8px;
|
137 |
-
}
|
138 |
-
|
139 |
-
.wpforms-success {
|
140 |
-
color: #468847;
|
141 |
-
background-color: #dff0d8;
|
142 |
-
padding: 8px;
|
143 |
-
}
|
144 |
-
|
145 |
-
/*
|
146 |
-
@media only screen and (max-width: 1240px) {
|
147 |
-
*/
|
148 |
-
.wpforms-addon-item,
|
149 |
-
.wpforms-addon-item.wpforms-second {
|
150 |
-
max-width: 800px;
|
151 |
-
width: 100%;
|
152 |
-
float: none;
|
153 |
-
}
|
154 |
-
/*
|
155 |
-
}
|
156 |
-
*/
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
assets/css/admin-builder.css
CHANGED
@@ -213,12 +213,12 @@ body {
|
|
213 |
|
214 |
#wpforms-builder .wpforms-toolbar .wpforms-left {
|
215 |
position: absolute;
|
216 |
-
left:
|
217 |
-
top:
|
218 |
}
|
219 |
|
220 |
#wpforms-builder .wpforms-toolbar .wpforms-left img {
|
221 |
-
height:
|
222 |
}
|
223 |
|
224 |
#wpforms-builder .wpforms-toolbar .wpforms-center {
|
213 |
|
214 |
#wpforms-builder .wpforms-toolbar .wpforms-left {
|
215 |
position: absolute;
|
216 |
+
left: 12px;
|
217 |
+
top: 12px;
|
218 |
}
|
219 |
|
220 |
#wpforms-builder .wpforms-toolbar .wpforms-left img {
|
221 |
+
height: 50px;
|
222 |
}
|
223 |
|
224 |
#wpforms-builder .wpforms-toolbar .wpforms-center {
|
assets/css/admin-menu.css
DELETED
@@ -1,29 +0,0 @@
|
|
1 |
-
@font-face {
|
2 |
-
font-family: "wpforms-menu";
|
3 |
-
src:url("../fonts/wpforms-menu.eot");
|
4 |
-
src:url("../fonts/wpforms-menu.eot?#iefix") format("embedded-opentype"),
|
5 |
-
url("../fonts/wpforms-menu.woff") format("woff"),
|
6 |
-
url("../fonts/wpforms-menu.ttf") format("truetype"),
|
7 |
-
url("../fonts/wpforms-menu.svg#wpforms") format("svg");
|
8 |
-
font-weight: normal;
|
9 |
-
font-style: normal;
|
10 |
-
}
|
11 |
-
|
12 |
-
#toplevel_page_wpforms-overview .wp-menu-image:before,
|
13 |
-
.wpforms-menu-icon:before {
|
14 |
-
content: "\61";
|
15 |
-
font-family: "wpforms-menu" !important;
|
16 |
-
font-style: normal !important;
|
17 |
-
font-weight: normal !important;
|
18 |
-
font-variant: normal !important;
|
19 |
-
text-transform: none !important;
|
20 |
-
speak: none;
|
21 |
-
line-height: 1;
|
22 |
-
-webkit-font-smoothing: antialiased;
|
23 |
-
-moz-osx-font-smoothing: grayscale;
|
24 |
-
}
|
25 |
-
|
26 |
-
#toplevel_page_wpforms-overview .wp-menu-image:before {
|
27 |
-
font-size: 1.15em;
|
28 |
-
padding-top: 9px;
|
29 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
assets/css/admin-overview.css
DELETED
@@ -1,19 +0,0 @@
|
|
1 |
-
/* ==========================================================================
|
2 |
-
Overview Styles
|
3 |
-
========================================================================== */
|
4 |
-
|
5 |
-
#wpforms-overview .wp-list-table .column-id {
|
6 |
-
width: 30px;
|
7 |
-
}
|
8 |
-
|
9 |
-
#wpforms-overview .wp-list-table .column-entries {
|
10 |
-
width: 70px;
|
11 |
-
}
|
12 |
-
|
13 |
-
#wpforms-overview .wp-list-table .column-shortcode {
|
14 |
-
width: 150px;
|
15 |
-
}
|
16 |
-
|
17 |
-
#wpforms-overview .wp-list-table .column-created {
|
18 |
-
width: 145px;
|
19 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
assets/css/admin-settings.css
DELETED
@@ -1,477 +0,0 @@
|
|
1 |
-
/* ==========================================================================
|
2 |
-
Settings Styles
|
3 |
-
========================================================================== */
|
4 |
-
|
5 |
-
#wpforms-settings .wpforms-clear:before {
|
6 |
-
content: " ";
|
7 |
-
display: table;
|
8 |
-
}
|
9 |
-
|
10 |
-
#wpforms-settings .wpforms-clear:after {
|
11 |
-
clear: both;
|
12 |
-
content: " ";
|
13 |
-
display: table;
|
14 |
-
}
|
15 |
-
|
16 |
-
#wpforms-settings .wpforms-circle-loader {
|
17 |
-
margin: 50px auto;
|
18 |
-
width: 60px;
|
19 |
-
height: 60px;
|
20 |
-
position: relative;
|
21 |
-
}
|
22 |
-
|
23 |
-
#wpforms-settings .wpforms-circle-loader .wpforms-circle {
|
24 |
-
width: 100%;
|
25 |
-
height: 100%;
|
26 |
-
position: absolute;
|
27 |
-
left: 0;
|
28 |
-
top: 0;
|
29 |
-
}
|
30 |
-
|
31 |
-
#wpforms-settings .wpforms-circle-loader .wpforms-circle:before {
|
32 |
-
content: '';
|
33 |
-
display: block;
|
34 |
-
margin: 0 auto;
|
35 |
-
width: 15%;
|
36 |
-
height: 15%;
|
37 |
-
background-color: #0e6cad;
|
38 |
-
border-radius: 100%;
|
39 |
-
-webkit-animation: wpforms-circleFadeDelay 1.2s infinite ease-in-out both;
|
40 |
-
animation: wpforms-circleFadeDelay 1.2s infinite ease-in-out both;
|
41 |
-
}
|
42 |
-
#wpforms-settings .wpforms-circle-loader .wpforms-circle-2 {
|
43 |
-
-webkit-transform: rotate(30deg);
|
44 |
-
-ms-transform: rotate(30deg);
|
45 |
-
transform: rotate(30deg);
|
46 |
-
}
|
47 |
-
#wpforms-settings .wpforms-circle-loader .wpforms-circle-3 {
|
48 |
-
-webkit-transform: rotate(60deg);
|
49 |
-
-ms-transform: rotate(60deg);
|
50 |
-
transform: rotate(60deg);
|
51 |
-
}
|
52 |
-
#wpforms-settings .wpforms-circle-loader .wpforms-circle-4 {
|
53 |
-
-webkit-transform: rotate(90deg);
|
54 |
-
-ms-transform: rotate(90deg);
|
55 |
-
transform: rotate(90deg);
|
56 |
-
}
|
57 |
-
#wpforms-settings .wpforms-circle-loader .wpforms-circle-5 {
|
58 |
-
-webkit-transform: rotate(120deg);
|
59 |
-
-ms-transform: rotate(120deg);
|
60 |
-
transform: rotate(120deg);
|
61 |
-
}
|
62 |
-
#wpforms-settings .wpforms-circle-loader .wpforms-circle-6 {
|
63 |
-
-webkit-transform: rotate(150deg);
|
64 |
-
-ms-transform: rotate(150deg);
|
65 |
-
transform: rotate(150deg);
|
66 |
-
}
|
67 |
-
#wpforms-settings .wpforms-circle-loader .wpforms-circle-7 {
|
68 |
-
-webkit-transform: rotate(180deg);
|
69 |
-
-ms-transform: rotate(180deg);
|
70 |
-
transform: rotate(180deg);
|
71 |
-
}
|
72 |
-
#wpforms-settings .wpforms-circle-loader .wpforms-circle-8 {
|
73 |
-
-webkit-transform: rotate(210deg);
|
74 |
-
-ms-transform: rotate(210deg);
|
75 |
-
transform: rotate(210deg);
|
76 |
-
}
|
77 |
-
#wpforms-settings .wpforms-circle-loader .wpforms-circle-9 {
|
78 |
-
-webkit-transform: rotate(240deg);
|
79 |
-
-ms-transform: rotate(240deg);
|
80 |
-
transform: rotate(240deg);
|
81 |
-
}
|
82 |
-
#wpforms-settings .wpforms-circle-loader .wpforms-circle-10 {
|
83 |
-
-webkit-transform: rotate(270deg);
|
84 |
-
-ms-transform: rotate(270deg);
|
85 |
-
transform: rotate(270deg);
|
86 |
-
}
|
87 |
-
#wpforms-settings .wpforms-circle-loader .wpforms-circle-11 {
|
88 |
-
-webkit-transform: rotate(300deg);
|
89 |
-
-ms-transform: rotate(300deg);
|
90 |
-
transform: rotate(300deg);
|
91 |
-
}
|
92 |
-
#wpforms-settings .wpforms-circle-loader .wpforms-circle-12 {
|
93 |
-
-webkit-transform: rotate(330deg);
|
94 |
-
-ms-transform: rotate(330deg);
|
95 |
-
transform: rotate(330deg);
|
96 |
-
}
|
97 |
-
#wpforms-settings .wpforms-circle-loader .wpforms-circle-2:before {
|
98 |
-
-webkit-animation-delay: -1.1s;
|
99 |
-
animation-delay: -1.1s;
|
100 |
-
}
|
101 |
-
#wpforms-settings .wpforms-circle-loader .wpforms-circle-3:before {
|
102 |
-
-webkit-animation-delay: -1s;
|
103 |
-
animation-delay: -1s;
|
104 |
-
}
|
105 |
-
#wpforms-settings .wpforms-circle-loader .wpforms-circle-4:before {
|
106 |
-
-webkit-animation-delay: -0.9s;
|
107 |
-
animation-delay: -0.9s;
|
108 |
-
}
|
109 |
-
#wpforms-settings .wpforms-circle-loader .wpforms-circle-5:before {
|
110 |
-
-webkit-animation-delay: -0.8s;
|
111 |
-
animation-delay: -0.8s;
|
112 |
-
}
|
113 |
-
#wpforms-settings .wpforms-circle-loader .wpforms-circle-6:before {
|
114 |
-
-webkit-animation-delay: -0.7s;
|
115 |
-
animation-delay: -0.7s;
|
116 |
-
}
|
117 |
-
#wpforms-settings .wpforms-circle-loader .wpforms-circle-7:before {
|
118 |
-
-webkit-animation-delay: -0.6s;
|
119 |
-
animation-delay: -0.6s;
|
120 |
-
}
|
121 |
-
#wpforms-settings .wpforms-circle-loader .wpforms-circle-8:before {
|
122 |
-
-webkit-animation-delay: -0.5s;
|
123 |
-
animation-delay: -0.5s;
|
124 |
-
}
|
125 |
-
#wpforms-settings .wpforms-circle-loader .wpforms-circle-9:before {
|
126 |
-
-webkit-animation-delay: -0.4s;
|
127 |
-
animation-delay: -0.4s;
|
128 |
-
}
|
129 |
-
#wpforms-settings .wpforms-circle-loader .wpforms-circle-10:before {
|
130 |
-
-webkit-animation-delay: -0.3s;
|
131 |
-
animation-delay: -0.3s;
|
132 |
-
}
|
133 |
-
#wpforms-settings .wpforms-circle-loader .wpforms-circle-11:before {
|
134 |
-
-webkit-animation-delay: -0.2s;
|
135 |
-
animation-delay: -0.2s;
|
136 |
-
}
|
137 |
-
#wpforms-settings .wpforms-circle-loader .wpforms-circle-12:before {
|
138 |
-
-webkit-animation-delay: -0.1s;
|
139 |
-
animation-delay: -0.1s;
|
140 |
-
}
|
141 |
-
|
142 |
-
@-webkit-keyframes wpforms-circleFadeDelay {
|
143 |
-
0%, 39%, 100% { opacity: 0; }
|
144 |
-
40% { opacity: 1; }
|
145 |
-
}
|
146 |
-
|
147 |
-
@keyframes wpforms-circleFadeDelay {
|
148 |
-
0%, 39%, 100% { opacity: 0; }
|
149 |
-
40% { opacity: 1; }
|
150 |
-
}
|
151 |
-
|
152 |
-
#wpforms-settings .wpforms-tab,
|
153 |
-
#wpforms-tabs {
|
154 |
-
display: none;
|
155 |
-
}
|
156 |
-
|
157 |
-
#wpforms-settings .nav-tab:focus {
|
158 |
-
box-shadow: none;
|
159 |
-
}
|
160 |
-
|
161 |
-
#wpforms-settings .wpforms-tab .below-h2 {
|
162 |
-
margin-top: 22px;
|
163 |
-
}
|
164 |
-
|
165 |
-
#wpforms-settings .wpforms-tab.wpforms-active {
|
166 |
-
display: block;
|
167 |
-
}
|
168 |
-
|
169 |
-
#wpforms-settings div.updated {
|
170 |
-
margin-top: 15px;
|
171 |
-
}
|
172 |
-
|
173 |
-
#wpforms-settings td.section {
|
174 |
-
padding: 0 0 10px 0;
|
175 |
-
margin: 0;
|
176 |
-
}
|
177 |
-
|
178 |
-
#wpforms-settings td.section h4 {
|
179 |
-
margin: 15px 0 0 0;
|
180 |
-
font-size: 20px;
|
181 |
-
}
|
182 |
-
|
183 |
-
#wpforms-settings td.section p {
|
184 |
-
max-width: 800px;
|
185 |
-
}
|
186 |
-
|
187 |
-
#wpforms-settings td label {
|
188 |
-
margin: .25em 0 .5em!important;
|
189 |
-
display: inline-block;
|
190 |
-
font-style: italic;
|
191 |
-
color: #666;
|
192 |
-
}
|
193 |
-
|
194 |
-
#wpforms-settings h4 {
|
195 |
-
margin: 0;
|
196 |
-
}
|
197 |
-
|
198 |
-
#wpforms-settings input[type=text],
|
199 |
-
#wpforms-settings input[type=password] {
|
200 |
-
min-width: 300px;
|
201 |
-
}
|
202 |
-
|
203 |
-
#wpforms-settings #submit-key-refresh {
|
204 |
-
vertical-align: baseline;
|
205 |
-
}
|
206 |
-
|
207 |
-
#wpforms-settings .wpforms-color-picker {
|
208 |
-
height: auto;
|
209 |
-
padding-left: 30px !important;
|
210 |
-
overflow: visible;
|
211 |
-
}
|
212 |
-
|
213 |
-
#wpforms-settings .wpforms-color-picker .minicolors-theme-default .minicolors-swatch {
|
214 |
-
height: 24px
|
215 |
-
}
|
216 |
-
|
217 |
-
#wpforms-settings .wpforms-provider-account {
|
218 |
-
margin-bottom: 20px;
|
219 |
-
line-height: 1.8;
|
220 |
-
}
|
221 |
-
|
222 |
-
#wpforms-settings .wpforms-provider-account span {
|
223 |
-
display: inline-block;
|
224 |
-
min-width: 120px;
|
225 |
-
color: #666;
|
226 |
-
}
|
227 |
-
|
228 |
-
#wpforms-settings .wpforms-settings-upload-image-display {
|
229 |
-
display: block;
|
230 |
-
margin: 0 !important;
|
231 |
-
}
|
232 |
-
|
233 |
-
#wpforms-settings .wpforms-settings-upload-image-display img {
|
234 |
-
display: block;
|
235 |
-
margin: 0 0 10px 0 !important;
|
236 |
-
max-width: 410px;
|
237 |
-
}
|
238 |
-
|
239 |
-
/* Integrations tab
|
240 |
-
-------------------------------------------------------------- */
|
241 |
-
|
242 |
-
.wpforms-settings-provider {
|
243 |
-
border-bottom: 1px solid #ddd;
|
244 |
-
max-width: 800px;
|
245 |
-
padding: 20px 0;
|
246 |
-
}
|
247 |
-
|
248 |
-
.wpforms-settings-provider.focus-out {
|
249 |
-
opacity: 0.4;
|
250 |
-
}
|
251 |
-
|
252 |
-
.wpforms-settings-provider-header {
|
253 |
-
cursor: pointer;
|
254 |
-
}
|
255 |
-
|
256 |
-
.wpforms-settings-provider-logo {
|
257 |
-
float: left;
|
258 |
-
position: relative;
|
259 |
-
}
|
260 |
-
|
261 |
-
.wpforms-settings-provider-logo .fa {
|
262 |
-
position: absolute;
|
263 |
-
top: 50%;
|
264 |
-
margin: -9px 0 0 0;
|
265 |
-
left: 10px;
|
266 |
-
color: #666;
|
267 |
-
font-size: 18px;
|
268 |
-
}
|
269 |
-
|
270 |
-
.wpforms-settings-provider-logo img {
|
271 |
-
border: 1px solid #ddd;
|
272 |
-
max-width: 90px;
|
273 |
-
display: block;
|
274 |
-
margin: 0 0 0 40px;
|
275 |
-
}
|
276 |
-
|
277 |
-
.wpforms-settings-provider-info {
|
278 |
-
margin: 0 0 0 160px;
|
279 |
-
position: relative;
|
280 |
-
padding: 20px 0 0;
|
281 |
-
}
|
282 |
-
|
283 |
-
.wpforms-settings-provider-info h3 {
|
284 |
-
margin: 0 0 10px 0;
|
285 |
-
font-size: 20px;
|
286 |
-
font-weight: 600;
|
287 |
-
}
|
288 |
-
|
289 |
-
.wpforms-settings-provider-info p {
|
290 |
-
margin: 0;
|
291 |
-
}
|
292 |
-
|
293 |
-
.wpforms-settings-provider-info .connected-indicator {
|
294 |
-
color: #83c11f;
|
295 |
-
width: 105px;
|
296 |
-
border: 1px solid #83c11f;
|
297 |
-
border-radius: 4px;
|
298 |
-
padding: 8px 14px;
|
299 |
-
font-size: 16px;
|
300 |
-
position: absolute;
|
301 |
-
top: 28px;
|
302 |
-
right: 0;
|
303 |
-
display: none;
|
304 |
-
}
|
305 |
-
|
306 |
-
.connected .wpforms-settings-provider-info .connected-indicator {
|
307 |
-
display: block;
|
308 |
-
}
|
309 |
-
|
310 |
-
.wpforms-settings-provider-accounts {
|
311 |
-
margin: 0 0 0 160px;
|
312 |
-
display: none;
|
313 |
-
}
|
314 |
-
|
315 |
-
.focus-in .wpforms-settings-provider-accounts {
|
316 |
-
display: block;
|
317 |
-
}
|
318 |
-
|
319 |
-
.wpforms-settings-provider-accounts-list ul {
|
320 |
-
padding: 0;
|
321 |
-
margin: 0;
|
322 |
-
}
|
323 |
-
|
324 |
-
.wpforms-settings-provider-accounts-list ul li {
|
325 |
-
border-bottom: 1px solid #ddd;
|
326 |
-
margin: 0;
|
327 |
-
padding: 6px 0;
|
328 |
-
}
|
329 |
-
|
330 |
-
.wpforms-settings-provider-accounts-list ul li:first-of-type {
|
331 |
-
border-top: 1px solid #ddd;
|
332 |
-
}
|
333 |
-
|
334 |
-
.wpforms-settings-provider-accounts-list ul li:last-of-type {
|
335 |
-
margin-bottom: 16px;
|
336 |
-
}
|
337 |
-
|
338 |
-
.wpforms-settings-provider-accounts-list span.label {
|
339 |
-
display: inline-block;
|
340 |
-
width: 220px;
|
341 |
-
}
|
342 |
-
|
343 |
-
.wpforms-settings-provider-accounts-list span.date {
|
344 |
-
color: #999;
|
345 |
-
display: inline-block;
|
346 |
-
width: 240px;
|
347 |
-
}
|
348 |
-
|
349 |
-
.wpforms-settings-provider-accounts-connect {
|
350 |
-
display: none;
|
351 |
-
padding-top: 10px;
|
352 |
-
}
|
353 |
-
|
354 |
-
.focus-in .wpforms-settings-provider-accounts-connect {
|
355 |
-
display: block;
|
356 |
-
}
|
357 |
-
|
358 |
-
.wpforms-settings-provider-accounts-connect .fa {
|
359 |
-
display: none;
|
360 |
-
}
|
361 |
-
|
362 |
-
.wpforms-settings-provider-accounts-connect p,
|
363 |
-
.wpforms-settings-provider-accounts p {
|
364 |
-
margin: 0 0 15px 0;
|
365 |
-
}
|
366 |
-
|
367 |
-
/* System Details tab
|
368 |
-
-------------------------------------------------------------- */
|
369 |
-
|
370 |
-
#wpforms-settings-system {
|
371 |
-
padding-top: 20px;
|
372 |
-
}
|
373 |
-
|
374 |
-
#wpforms-settings-system .system-info-textarea,
|
375 |
-
#wpforms-import-export .template-export-textarea {
|
376 |
-
width: 100%;
|
377 |
-
height: 400px;
|
378 |
-
font-family: Menlo,Monaco,monospace;
|
379 |
-
background: #fff;
|
380 |
-
white-space: pre;
|
381 |
-
overflow: auto;
|
382 |
-
display: block;
|
383 |
-
padding: 20px;
|
384 |
-
}
|
385 |
-
|
386 |
-
/* Import/Export tab
|
387 |
-
-------------------------------------------------------------- */
|
388 |
-
|
389 |
-
#wpforms-import-export p {
|
390 |
-
margin-bottom: 10px;
|
391 |
-
}
|
392 |
-
|
393 |
-
#wpforms-import-export input[type=submit] {
|
394 |
-
margin-top: 10px;
|
395 |
-
}
|
396 |
-
|
397 |
-
#wpforms-import-export .export-list {
|
398 |
-
background-color: #fff;
|
399 |
-
max-height: 210px;
|
400 |
-
overflow-y: scroll;
|
401 |
-
border: 1px solid #ddd;
|
402 |
-
margin: 0 0 5px 0;
|
403 |
-
max-width: 510px;
|
404 |
-
}
|
405 |
-
|
406 |
-
#wpforms-import-export .export-list li {
|
407 |
-
display: block;
|
408 |
-
list-style: none;
|
409 |
-
margin: 0;
|
410 |
-
}
|
411 |
-
|
412 |
-
#wpforms-import-export .export-list li label {
|
413 |
-
display: block;
|
414 |
-
padding: 8px 10px;
|
415 |
-
border-bottom: 1px solid #eee;
|
416 |
-
font-style: normal;
|
417 |
-
margin: 0 !important;
|
418 |
-
}
|
419 |
-
|
420 |
-
#wpforms-import-export .export-list li:last-of-type label {
|
421 |
-
border-bottom: none;
|
422 |
-
}
|
423 |
-
|
424 |
-
/* Integrations tab
|
425 |
-
-------------------------------------------------------------- */
|
426 |
-
|
427 |
-
.wpforms-alert {
|
428 |
-
padding: 10px;
|
429 |
-
margin-bottom: 18px;
|
430 |
-
border: 1px solid transparent;
|
431 |
-
}
|
432 |
-
|
433 |
-
.wpforms-alert h4 {
|
434 |
-
margin-top: 0;
|
435 |
-
color: inherit;
|
436 |
-
}
|
437 |
-
|
438 |
-
.wpforms-alert > p,
|
439 |
-
.wpforms-alert > ul {
|
440 |
-
margin-bottom: 0;
|
441 |
-
}
|
442 |
-
|
443 |
-
.wpforms-alert > p + p {
|
444 |
-
margin-top: 5px;
|
445 |
-
}
|
446 |
-
|
447 |
-
.wpforms-alert-nomargin {
|
448 |
-
margin: 0;
|
449 |
-
}
|
450 |
-
|
451 |
-
.wpforms-alert-small {
|
452 |
-
font-size: 12px;
|
453 |
-
}
|
454 |
-
|
455 |
-
.wpforms-alert-success {
|
456 |
-
background-color: #dff0d8;
|
457 |
-
border-color: #d6e9c6;
|
458 |
-
color: #3c763d;
|
459 |
-
}
|
460 |
-
|
461 |
-
.wpforms-alert-info {
|
462 |
-
background-color: #d9edf7;
|
463 |
-
border-color: #bce8f1;
|
464 |
-
color: #31708f;
|
465 |
-
}
|
466 |
-
|
467 |
-
.wpforms-alert-warning {
|
468 |
-
background-color: #fcf8e3;
|
469 |
-
border-color: #faebcc;
|
470 |
-
color: #8a6d3b;
|
471 |
-
}
|
472 |
-
|
473 |
-
.wpforms-alert-danger {
|
474 |
-
background-color: #f2dede;
|
475 |
-
border-color: #ebccd1;
|
476 |
-
color: #a94442;
|
477 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
assets/css/admin-welcome.css
DELETED
@@ -1,40 +0,0 @@
|
|
1 |
-
/* ==========================================================================
|
2 |
-
Welcome / Getting Started page
|
3 |
-
========================================================================== */
|
4 |
-
|
5 |
-
.about-wrap .wpforms-badge {
|
6 |
-
position: absolute;
|
7 |
-
top: 0;
|
8 |
-
right: 0;
|
9 |
-
color: #999;
|
10 |
-
font-size: 14px;
|
11 |
-
text-align: center;
|
12 |
-
margin: 5px 0 0;
|
13 |
-
width: 150px;
|
14 |
-
}
|
15 |
-
|
16 |
-
.about-wrap .wpforms-badge .version {
|
17 |
-
display: block;
|
18 |
-
margin: 0 auto;
|
19 |
-
margin: 5px auto 0 auto;
|
20 |
-
}
|
21 |
-
|
22 |
-
.about-wrap .feature-section p {
|
23 |
-
font-size: 15px;
|
24 |
-
}
|
25 |
-
|
26 |
-
.about-wrap .feature-section.two-col .col {
|
27 |
-
vertical-align: top;
|
28 |
-
}
|
29 |
-
|
30 |
-
.about-wrap .wpforms-features-button {
|
31 |
-
font-size: 16px;
|
32 |
-
height: auto;
|
33 |
-
padding: 8px 25px;
|
34 |
-
margin-top: 20px;
|
35 |
-
}
|
36 |
-
|
37 |
-
.about-wrap .feature-section .feature-video,
|
38 |
-
.about-wrap .feature-section img {
|
39 |
-
max-width: 400px;
|
40 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
assets/css/admin.css
ADDED
@@ -0,0 +1,2 @@
|
|
|
|
|
1 |
+
.choices{position:relative;margin-bottom:24px;font-size:16px}.choices:focus{outline:none}.choices:last-child{margin-bottom:0}.choices.is-disabled .choices__inner,.choices.is-disabled .choices__input{background-color:#EAEAEA;cursor:not-allowed;user-select:none}.choices.is-disabled .choices__item{cursor:not-allowed}.choices[data-type*="select-one"]{cursor:pointer}.choices[data-type*="select-one"] .choices__inner{padding-bottom:3.0px}.choices[data-type*="select-one"] .choices__input{display:block;width:100% !important;padding:10px !important;border-bottom:1px solid #ddd !important;background-color:#FFFFFF;margin:0 !important}.choices[data-type*="select-one"] .choices__button{background-image:url("../images/cross-inverse.svg");padding:0;background-size:8px;height:100%;position:absolute;top:50%;right:0;margin-top:-10px;margin-right:25px;height:20px;width:20px;border-radius:10em;opacity:.5}.choices[data-type*="select-one"] .choices__button:hover,.choices[data-type*="select-one"] .choices__button:focus{opacity:1}.choices[data-type*="select-one"] .choices__button:focus{box-shadow:0px 0px 0px 2px #0e6cad}.choices[data-type*="select-one"]:after{content:"";height:0;width:0;border-style:solid;border-color:#333 transparent transparent transparent;border-width:5px;position:absolute;right:11.5px;top:50%;margin-top:-2.5px;pointer-events:none}.choices[data-type*="select-one"].is-open:after{border-color:transparent transparent #333 transparent;margin-top:-7.5px}.choices[data-type*="select-one"][dir="rtl"]:after{left:11.5px;right:auto}.choices[data-type*="select-one"][dir="rtl"] .choices__button{right:auto;left:0;margin-left:25px;margin-right:0}.choices[data-type*="select-multiple"]:after{content:"";height:0;width:0;border-style:solid;border-color:#333 transparent transparent transparent;border-width:5px;position:absolute;right:11.5px;top:18px;margin-top:-2.5px;pointer-events:none}.choices[data-type*="select-multiple"].is-open:after{border-color:transparent transparent #333 transparent;margin-top:-7.5px}.choices[data-type*="select-multiple"] .choices__inner,.choices[data-type*="text"] .choices__inner{cursor:text}.choices[data-type*="select-multiple"] .choices__button,.choices[data-type*="text"] .choices__button{position:relative;display:inline-block;margin-top:0;margin-right:-4px;margin-bottom:0;margin-left:8px;padding-left:16px;border-left:1px solid #0a4f7e;background-image:url("../images/cross.svg");background-size:8px;width:8px;line-height:1;opacity:.75}.choices[data-type*="select-multiple"] .choices__button:hover,.choices[data-type*="select-multiple"] .choices__button:focus,.choices[data-type*="text"] .choices__button:hover,.choices[data-type*="text"] .choices__button:focus{opacity:1}.choices__inner{display:inline-block;vertical-align:top;width:100%;background-color:#fff;padding:4px 7.5px 1px;border:1px solid #ddd;border-radius:3px;font-size:14px;min-height:35px;overflow:hidden}.is-focused .choices__inner,.is-open .choices__inner{border-color:#b7b7b7}.is-open .choices__inner{border-radius:3px 3px 0 0}.is-flipped.is-open .choices__inner{border-radius:0 0 3px 3px}.choices__list{margin:0;padding-left:0;list-style:none}.choices__list--single{display:inline-block;padding:4px 16px 4px 4px;width:100%}[dir="rtl"] .choices__list--single{padding-right:4px;padding-left:16px}.choices__list--single .choices__item{width:100%}.choices__list--multiple{display:inline}.choices__list--multiple .choices__item{display:inline-block;vertical-align:middle;border-radius:3px;padding:3px 10px;font-size:12px;font-weight:500;margin-right:4px;margin-top:0px;margin-bottom:3px;background-color:#0e6cad;border:1px solid #0c5d95;color:#FFFFFF;word-break:break-all}.choices__list--multiple .choices__item[data-deletable]{padding-right:5px}[dir="rtl"] .choices__list--multiple .choices__item{margin-right:0;margin-left:3.75px}.choices__list--multiple .choices__item.is-highlighted{background-color:#0c5d95;border:1px solid #0a4f7e}.is-disabled .choices__list--multiple .choices__item{background-color:#aaa;border:1px solid #919191}.choices__list--dropdown{display:none;z-index:1;position:absolute;width:100%;background-color:#fff;border:1px solid #ddd;top:100%;margin-top:-1px;border-bottom-left-radius:3px;border-bottom-right-radius:3px;overflow:hidden;word-break:break-all}.choices__list--dropdown.is-active{display:block}.is-open .choices__list--dropdown{border-color:#b7b7b7}.is-flipped .choices__list--dropdown{top:auto;bottom:100%;margin-top:0;margin-bottom:-1px;border-radius:.25rem .25rem 0 0}.choices__list--dropdown .choices__list{position:relative;max-height:300px;overflow:auto;-webkit-overflow-scrolling:touch;will-change:scroll-position}.choices__list--dropdown .choices__item{position:relative;padding:10px;font-size:14px}[dir="rtl"] .choices__list--dropdown .choices__item{text-align:right}@media (min-width: 640px){.choices__list--dropdown .choices__item--selectable{padding-right:100px}.choices__list--dropdown .choices__item--selectable:after{content:attr(data-select-text);font-size:12px;opacity:0;position:absolute;right:10px;top:50%;transform:translateY(-50%)}[dir="rtl"] .choices__list--dropdown .choices__item--selectable{text-align:right;padding-left:100px;padding-right:10px}[dir="rtl"] .choices__list--dropdown .choices__item--selectable:after{right:auto;left:10px}}.choices__list--dropdown .choices__item--selectable.is-highlighted{background-color:#f2f2f2}.choices__list--dropdown .choices__item--selectable.is-highlighted:after{opacity:.5}.choices__item{cursor:default}.choices__item--selectable{cursor:pointer}.choices__item--disabled{cursor:not-allowed;user-select:none;opacity:.5}.choices__heading{font-weight:600;font-size:12px;padding:10px;border-bottom:1px solid #f7f7f7;color:gray}.choices__button{text-indent:-9999px;-webkit-appearance:none;appearance:none;border:0;background-color:transparent;background-repeat:no-repeat;background-position:center;cursor:pointer}.choices__button:focus{outline:none}.choices__input{display:inline-block;vertical-align:baseline !important;background-color:#f9f9f9;font-size:14px;margin:0 !important;border:0 !important;border-radius:0 !important;max-width:100%;min-height:0 !important;width:auto !important;padding:4px 0 4px 2px !important}.choices__input:focus{outline:0}[dir="rtl"] .choices__input{padding-right:2px;padding-left:0}.choices__placeholder{opacity:.5}.wpforms-admin-page .wpforms-btn{border:0;border-radius:3px;cursor:pointer;display:inline-block;margin:0;text-decoration:none;text-align:center;vertical-align:middle;white-space:nowrap;box-shadow:none}.wpforms-admin-page .wpforms-btn-block{display:block}.wpforms-admin-page .wpforms-btn-md{font-size:13px;font-weight:600;padding:8px 12px;min-height:35px}.wpforms-admin-page .wpforms-btn-lg{font-size:16px;font-weight:600;padding:16px 28px}.wpforms-admin-page .wpforms-btn-orange{background-color:#e27730;border-color:#e27730;color:#fff}.wpforms-admin-page .wpforms-btn-orange:hover{background-color:#b85a1b;border-color:#b85a1b}.wpforms-admin-page .wpforms-btn-grey{background-color:#eee;border-color:#ccc;color:#666}.wpforms-admin-page .wpforms-btn-grey:hover{background-color:#d7d7d7;border-color:#ccc;color:#444}.wpforms-admin-page .wpforms-btn-light-grey{background-color:#f5f5f5;border:1px solid #ccc;color:#666}.wpforms-admin-page .wpforms-btn-light-grey:hover{background-color:#eee;color:#444}.wpforms-admin-page .wpforms-btn-trans-green{background-color:none;color:#2a9b39}.wpforms-admin-page .wpforms-btn-trans-green:hover{background-color:#2a9b39;color:#fff}.wpforms-admin-page .wpforms-btn-trans-green .underline{position:relative}.wpforms-admin-page .wpforms-btn-trans-green .underline:after{content:" ";border-bottom:1px dashed #2a9b39;position:absolute;bottom:-5px;left:0;width:100%}.wpforms-admin-page .wpforms-btn-trans-green .dashicons{height:18px}body div.jconfirm div.jconfirm-box-container div.jconfirm-box{border-radius:0;box-shadow:0 2px 6px rgba(0,0,0,0.2)}body div.jconfirm div.jconfirm-box div.jconfirm-content-pane{margin-bottom:20px}body div.jconfirm div.jconfirm-box div.jconfirm-content{font-size:16px;color:#555;line-height:1.5}body div.jconfirm div.jconfirm-box input[type=text]{display:block;width:99%;border:1px solid #d6d6d6;padding:10px;box-shadow:none;margin:20px auto 0 auto}body div.jconfirm div.jconfirm-box #wpforms-embed-shortcode{margin:20px 0;text-align:center;font-size:24px;padding:8px 5px}body div.jconfirm div.jconfirm-box #wpforms-embed-shortcode:disabled{color:#333}body div.jconfirm div.jconfirm-box button.btn-confirm{background-color:#83c11f;color:#fff;outline:none}body div.jconfirm div.jconfirm-box button.btn-confirm:hover{background-color:#75ac1c}body div.jconfirm div.jconfirm-box .error{display:none;color:red}body div.jconfirm div.jconfirm-box .jconfirm-title-c .jconfirm-icon-c{-webkit-transition:none !important;transition:none !important;-webkit-transform:none !important;-ms-transform:none !important;transform:none !important;font-size:45px !important}.wpforms-flag{width:16px;height:16px;background:url(../../images/flags.png) no-repeat;display:inline-block}.wpforms-flag.wpforms-flag-ad{background-position:-16px 0}.wpforms-flag.wpforms-flag-ae{background-position:-32px 0}.wpforms-flag.wpforms-flag-af{background-position:-48px 0}.wpforms-flag.wpforms-flag-ag{background-position:-64px 0}.wpforms-flag.wpforms-flag-ai{background-position:-80px 0}.wpforms-flag.wpforms-flag-al{background-position:-96px 0}.wpforms-flag.wpforms-flag-am{background-position:-112px 0}.wpforms-flag.wpforms-flag-an{background-position:-128px 0}.wpforms-flag.wpforms-flag-ao{background-position:-144px 0}.wpforms-flag.wpforms-flag-ar{background-position:-160px 0}.wpforms-flag.wpforms-flag-as{background-position:-176px 0}.wpforms-flag.wpforms-flag-at{background-position:-192px 0}.wpforms-flag.wpforms-flag-au{background-position:-208px 0}.wpforms-flag.wpforms-flag-aw{background-position:-224px 0}.wpforms-flag.wpforms-flag-az{background-position:0 -16px}.wpforms-flag.wpforms-flag-ba{background-position:-16px -16px}.wpforms-flag.wpforms-flag-bb{background-position:-32px -16px}.wpforms-flag.wpforms-flag-bd{background-position:-48px -16px}.wpforms-flag.wpforms-flag-be{background-position:-64px -16px}.wpforms-flag.wpforms-flag-bf{background-position:-80px -16px}.wpforms-flag.wpforms-flag-bg{background-position:-96px -16px}.wpforms-flag.wpforms-flag-bh{background-position:-112px -16px}.wpforms-flag.wpforms-flag-bi{background-position:-128px -16px}.wpforms-flag.wpforms-flag-bj{background-position:-144px -16px}.wpforms-flag.wpforms-flag-bm{background-position:-160px -16px}.wpforms-flag.wpforms-flag-bn{background-position:-176px -16px}.wpforms-flag.wpforms-flag-bo{background-position:-192px -16px}.wpforms-flag.wpforms-flag-br{background-position:-208px -16px}.wpforms-flag.wpforms-flag-bs{background-position:-224px -16px}.wpforms-flag.wpforms-flag-bt{background-position:0 -32px}.wpforms-flag.wpforms-flag-bw{background-position:-16px -32px}.wpforms-flag.wpforms-flag-by{background-position:-32px -32px}.wpforms-flag.wpforms-flag-bz{background-position:-48px -32px}.wpforms-flag.wpforms-flag-ca{background-position:-64px -32px}.wpforms-flag.wpforms-flag-cd{background-position:-80px -32px}.wpforms-flag.wpforms-flag-cf{background-position:-96px -32px}.wpforms-flag.wpforms-flag-cg{background-position:-112px -32px}.wpforms-flag.wpforms-flag-ch{background-position:-128px -32px}.wpforms-flag.wpforms-flag-ci{background-position:-144px -32px}.wpforms-flag.wpforms-flag-ck{background-position:-160px -32px}.wpforms-flag.wpforms-flag-cl{background-position:-176px -32px}.wpforms-flag.wpforms-flag-cm{background-position:-192px -32px}.wpforms-flag.wpforms-flag-cn{background-position:-208px -32px}.wpforms-flag.wpforms-flag-co{background-position:-224px -32px}.wpforms-flag.wpforms-flag-cr{background-position:0 -48px}.wpforms-flag.wpforms-flag-cu{background-position:-16px -48px}.wpforms-flag.wpforms-flag-cv{background-position:-32px -48px}.wpforms-flag.wpforms-flag-cy{background-position:-48px -48px}.wpforms-flag.wpforms-flag-cz{background-position:-64px -48px}.wpforms-flag.wpforms-flag-de{background-position:-80px -48px}.wpforms-flag.wpforms-flag-dj{background-position:-96px -48px}.wpforms-flag.wpforms-flag-dk{background-position:-112px -48px}.wpforms-flag.wpforms-flag-dm{background-position:-128px -48px}.wpforms-flag.wpforms-flag-do{background-position:-144px -48px}.wpforms-flag.wpforms-flag-dz{background-position:-160px -48px}.wpforms-flag.wpforms-flag-ec{background-position:-176px -48px}.wpforms-flag.wpforms-flag-ee{background-position:-192px -48px}.wpforms-flag.wpforms-flag-eg{background-position:-208px -48px}.wpforms-flag.wpforms-flag-eh{background-position:-224px -48px}.wpforms-flag.wpforms-flag-er{background-position:0 -64px}.wpforms-flag.wpforms-flag-es{background-position:-16px -64px}.wpforms-flag.wpforms-flag-et{background-position:-32px -64px}.wpforms-flag.wpforms-flag-fi{background-position:-48px -64px}.wpforms-flag.wpforms-flag-fj{background-position:-64px -64px}.wpforms-flag.wpforms-flag-fm{background-position:-80px -64px}.wpforms-flag.wpforms-flag-fo{background-position:-96px -64px}.wpforms-flag.wpforms-flag-fr{background-position:-112px -64px}.wpforms-flag.wpforms-flag-ga{background-position:-128px -64px}.wpforms-flag.wpforms-flag-gb{background-position:-144px -64px}.wpforms-flag.wpforms-flag-gd{background-position:-160px -64px}.wpforms-flag.wpforms-flag-ge{background-position:-176px -64px}.wpforms-flag.wpforms-flag-gg{background-position:-192px -64px}.wpforms-flag.wpforms-flag-gh{background-position:-208px -64px}.wpforms-flag.wpforms-flag-gi{background-position:-224px -64px}.wpforms-flag.wpforms-flag-gl{background-position:0 -80px}.wpforms-flag.wpforms-flag-gm{background-position:-16px -80px}.wpforms-flag.wpforms-flag-gn{background-position:-32px -80px}.wpforms-flag.wpforms-flag-gp{background-position:-48px -80px}.wpforms-flag.wpforms-flag-gq{background-position:-64px -80px}.wpforms-flag.wpforms-flag-gr{background-position:-80px -80px}.wpforms-flag.wpforms-flag-gt{background-position:-96px -80px}.wpforms-flag.wpforms-flag-gu{background-position:-112px -80px}.wpforms-flag.wpforms-flag-gw{background-position:-128px -80px}.wpforms-flag.wpforms-flag-gy{background-position:-144px -80px}.wpforms-flag.wpforms-flag-hk{background-position:-160px -80px}.wpforms-flag.wpforms-flag-hn{background-position:-176px -80px}.wpforms-flag.wpforms-flag-hr{background-position:-192px -80px}.wpforms-flag.wpforms-flag-ht{background-position:-208px -80px}.wpforms-flag.wpforms-flag-hu{background-position:-224px -80px}.wpforms-flag.wpforms-flag-id{background-position:0 -96px}.wpforms-flag.wpforms-flag-ie{background-position:-16px -96px}.wpforms-flag.wpforms-flag-il{background-position:-32px -96px}.wpforms-flag.wpforms-flag-im{background-position:-48px -96px}.wpforms-flag.wpforms-flag-in{background-position:-64px -96px}.wpforms-flag.wpforms-flag-iq{background-position:-80px -96px}.wpforms-flag.wpforms-flag-ir{background-position:-96px -96px}.wpforms-flag.wpforms-flag-is{background-position:-112px -96px}.wpforms-flag.wpforms-flag-it{background-position:-128px -96px}.wpforms-flag.wpforms-flag-je{background-position:-144px -96px}.wpforms-flag.wpforms-flag-jm{background-position:-160px -96px}.wpforms-flag.wpforms-flag-jo{background-position:-176px -96px}.wpforms-flag.wpforms-flag-jp{background-position:-192px -96px}.wpforms-flag.wpforms-flag-ke{background-position:-208px -96px}.wpforms-flag.wpforms-flag-kg{background-position:-224px -96px}.wpforms-flag.wpforms-flag-kh{background-position:0 -112px}.wpforms-flag.wpforms-flag-ki{background-position:-16px -112px}.wpforms-flag.wpforms-flag-km{background-position:-32px -112px}.wpforms-flag.wpforms-flag-kn{background-position:-48px -112px}.wpforms-flag.wpforms-flag-kp{background-position:-64px -112px}.wpforms-flag.wpforms-flag-kr{background-position:-80px -112px}.wpforms-flag.wpforms-flag-kw{background-position:-96px -112px}.wpforms-flag.wpforms-flag-ky{background-position:-112px -112px}.wpforms-flag.wpforms-flag-kz{background-position:-128px -112px}.wpforms-flag.wpforms-flag-la{background-position:-144px -112px}.wpforms-flag.wpforms-flag-lb{background-position:-160px -112px}.wpforms-flag.wpforms-flag-lc{background-position:-176px -112px}.wpforms-flag.wpforms-flag-li{background-position:-192px -112px}.wpforms-flag.wpforms-flag-lk{background-position:-208px -112px}.wpforms-flag.wpforms-flag-lr{background-position:-224px -112px}.wpforms-flag.wpforms-flag-ls{background-position:0 -128px}.wpforms-flag.wpforms-flag-lt{background-position:-16px -128px}.wpforms-flag.wpforms-flag-lu{background-position:-32px -128px}.wpforms-flag.wpforms-flag-lv{background-position:-48px -128px}.wpforms-flag.wpforms-flag-ly{background-position:-64px -128px}.wpforms-flag.wpforms-flag-ma{background-position:-80px -128px}.wpforms-flag.wpforms-flag-mc{background-position:-96px -128px}.wpforms-flag.wpforms-flag-md{background-position:-112px -128px}.wpforms-flag.wpforms-flag-me{background-position:-128px -128px}.wpforms-flag.wpforms-flag-mg{background-position:-144px -128px}.wpforms-flag.wpforms-flag-mh{background-position:-160px -128px}.wpforms-flag.wpforms-flag-mk{background-position:-176px -128px}.wpforms-flag.wpforms-flag-ml{background-position:-192px -128px}.wpforms-flag.wpforms-flag-mm{background-position:-208px -128px}.wpforms-flag.wpforms-flag-mn{background-position:-224px -128px}.wpforms-flag.wpforms-flag-mo{background-position:0 -144px}.wpforms-flag.wpforms-flag-mq{background-position:-16px -144px}.wpforms-flag.wpforms-flag-mr{background-position:-32px -144px}.wpforms-flag.wpforms-flag-ms{background-position:-48px -144px}.wpforms-flag.wpforms-flag-mt{background-position:-64px -144px}.wpforms-flag.wpforms-flag-mu{background-position:-80px -144px}.wpforms-flag.wpforms-flag-mv{background-position:-96px -144px}.wpforms-flag.wpforms-flag-mw{background-position:-112px -144px}.wpforms-flag.wpforms-flag-mx{background-position:-128px -144px}.wpforms-flag.wpforms-flag-my{background-position:-144px -144px}.wpforms-flag.wpforms-flag-mz{background-position:-160px -144px}.wpforms-flag.wpforms-flag-na{background-position:-176px -144px}.wpforms-flag.wpforms-flag-nc{background-position:-192px -144px}.wpforms-flag.wpforms-flag-ne{background-position:-208px -144px}.wpforms-flag.wpforms-flag-ng{background-position:-224px -144px}.wpforms-flag.wpforms-flag-ni{background-position:0 -160px}.wpforms-flag.wpforms-flag-nl{background-position:-16px -160px}.wpforms-flag.wpforms-flag-no{background-position:-32px -160px}.wpforms-flag.wpforms-flag-np{background-position:-48px -160px}.wpforms-flag.wpforms-flag-nr{background-position:-64px -160px}.wpforms-flag.wpforms-flag-nz{background-position:-80px -160px}.wpforms-flag.wpforms-flag-om{background-position:-96px -160px}.wpforms-flag.wpforms-flag-pa{background-position:-112px -160px}.wpforms-flag.wpforms-flag-pe{background-position:-128px -160px}.wpforms-flag.wpforms-flag-pf{background-position:-144px -160px}.wpforms-flag.wpforms-flag-pg{background-position:-160px -160px}.wpforms-flag.wpforms-flag-ph{background-position:-176px -160px}.wpforms-flag.wpforms-flag-pk{background-position:-192px -160px}.wpforms-flag.wpforms-flag-pl{background-position:-208px -160px}.wpforms-flag.wpforms-flag-pr{background-position:-224px -160px}.wpforms-flag.wpforms-flag-ps{background-position:0 -176px}.wpforms-flag.wpforms-flag-pt{background-position:-16px -176px}.wpforms-flag.wpforms-flag-pw{background-position:-32px -176px}.wpforms-flag.wpforms-flag-py{background-position:-48px -176px}.wpforms-flag.wpforms-flag-qa{background-position:-64px -176px}.wpforms-flag.wpforms-flag-re{background-position:-80px -176px}.wpforms-flag.wpforms-flag-ro{background-position:-96px -176px}.wpforms-flag.wpforms-flag-rs{background-position:-112px -176px}.wpforms-flag.wpforms-flag-ru{background-position:-128px -176px}.wpforms-flag.wpforms-flag-rw{background-position:-144px -176px}.wpforms-flag.wpforms-flag-sa{background-position:-160px -176px}.wpforms-flag.wpforms-flag-sb{background-position:-176px -176px}.wpforms-flag.wpforms-flag-sc{background-position:-192px -176px}.wpforms-flag.wpforms-flag-sd{background-position:-208px -176px}.wpforms-flag.wpforms-flag-se{background-position:-224px -176px}.wpforms-flag.wpforms-flag-sg{background-position:0 -192px}.wpforms-flag.wpforms-flag-si{background-position:-16px -192px}.wpforms-flag.wpforms-flag-sk{background-position:-32px -192px}.wpforms-flag.wpforms-flag-sl{background-position:-48px -192px}.wpforms-flag.wpforms-flag-sm{background-position:-64px -192px}.wpforms-flag.wpforms-flag-sn{background-position:-80px -192px}.wpforms-flag.wpforms-flag-so{background-position:-96px -192px}.wpforms-flag.wpforms-flag-sr{background-position:-112px -192px}.wpforms-flag.wpforms-flag-st{background-position:-128px -192px}.wpforms-flag.wpforms-flag-sv{background-position:-144px -192px}.wpforms-flag.wpforms-flag-sy{background-position:-160px -192px}.wpforms-flag.wpforms-flag-sz{background-position:-176px -192px}.wpforms-flag.wpforms-flag-tc{background-position:-192px -192px}.wpforms-flag.wpforms-flag-td{background-position:-208px -192px}.wpforms-flag.wpforms-flag-tg{background-position:-224px -192px}.wpforms-flag.wpforms-flag-th{background-position:0 -208px}.wpforms-flag.wpforms-flag-tj{background-position:-16px -208px}.wpforms-flag.wpforms-flag-tl{background-position:-32px -208px}.wpforms-flag.wpforms-flag-tm{background-position:-48px -208px}.wpforms-flag.wpforms-flag-tn{background-position:-64px -208px}.wpforms-flag.wpforms-flag-to{background-position:-80px -208px}.wpforms-flag.wpforms-flag-tr{background-position:-96px -208px}.wpforms-flag.wpforms-flag-tt{background-position:-112px -208px}.wpforms-flag.wpforms-flag-tv{background-position:-128px -208px}.wpforms-flag.wpforms-flag-tw{background-position:-144px -208px}.wpforms-flag.wpforms-flag-tz{background-position:-160px -208px}.wpforms-flag.wpforms-flag-ua{background-position:-176px -208px}.wpforms-flag.wpforms-flag-ug{background-position:-192px -208px}.wpforms-flag.wpforms-flag-us{background-position:-208px -208px}.wpforms-flag.wpforms-flag-uy{background-position:-224px -208px}.wpforms-flag.wpforms-flag-uz{background-position:0 -224px}.wpforms-flag.wpforms-flag-va{background-position:-16px -224px}.wpforms-flag.wpforms-flag-vc{background-position:-32px -224px}.wpforms-flag.wpforms-flag-ve{background-position:-48px -224px}.wpforms-flag.wpforms-flag-vg{background-position:-64px -224px}.wpforms-flag.wpforms-flag-vi{background-position:-80px -224px}.wpforms-flag.wpforms-flag-vn{background-position:-96px -224px}.wpforms-flag.wpforms-flag-vu{background-position:-112px -224px}.wpforms-flag.wpforms-flag-ws{background-position:-128px -224px}.wpforms-flag.wpforms-flag-ye{background-position:-144px -224px}.wpforms-flag.wpforms-flag-za{background-position:-160px -224px}.wpforms-flag.wpforms-flag-zm{background-position:-176px -224px}.wpforms-flag.wpforms-flag-zw{background-position:-192px -224px}#wpforms-header-temp{position:relative;margin:0;position:absolute;top:-1px;left:20px;right:20px;z-index:99}#wpforms-header{border-top:3px solid #e27730;padding:22px 20px}#wpforms-header img{display:block;margin:0;max-width:235px}@media (max-width: 782px){#wpforms-header img{max-width:200px}}.wpforms-admin-wrap .page-title{background-color:#fff;margin:0 0 20px 0;padding:15px 20px}.wpforms-admin-wrap .page-title .add-new-h2{margin-left:28px}.wpforms-admin-tabs{background-color:#fff;margin:0 0 20px 0;padding:0 20px;list-style:none;overflow:auto;font-size:14px}.wpforms-admin-tabs li{margin:0 30px 0 0;padding:0;float:left}.wpforms-admin-tabs li:last-of-type{margin:0}.wpforms-admin-tabs li a{color:#666;display:block;padding:20px 0 18px 0;text-decoration:none;border-bottom:2px solid #fff;box-shadow:none}.wpforms-admin-tabs li a:hover{border-color:#999}.wpforms-admin-tabs li a.active{border-color:#e27730}#wpcontent{padding-left:0 !important;position:relative}@media (max-width: 600px){#wpcontent{padding-top:46px}}@media (max-width: 600px){#wpbody{padding-top:0}}.wpforms-admin-page #screen-meta-links,.wpforms-admin-page #screen-meta{display:none}.wpforms-admin-page .video-container{position:relative;padding-bottom:56.1%;height:0;overflow:hidden}.wpforms-admin-page .video-container iframe,.wpforms-admin-page .video-container object,.wpforms-admin-page .video-container embed{position:absolute;top:0;left:0;width:100%;height:100%}.wpforms-admin-page .wpforms-file-upload input[type=file]{width:0.1px;height:0.1px;opacity:0;overflow:hidden;position:absolute;z-index:-1}.wpforms-admin-page .wpforms-file-upload label{text-overflow:ellipsis;white-space:nowrap;cursor:pointer;display:inline-block;overflow:hidden;padding:0}.wpforms-admin-page .wpforms-file-upload input[type=file]:focus+label,.wpforms-admin-page .wpforms-file-upload input[type=file].has-focus+label{outline:1px dotted #000;outline:-webkit-focus-ring-color auto 5px}.wpforms-admin-page .wpforms-file-upload .fld{text-overflow:ellipsis;white-space:nowrap;overflow:hidden;background-color:#fff;border:1px solid #ddd;border-radius:3px;box-shadow:none;color:#333;display:inline-block;vertical-align:middle;padding:7px 12px;margin:0 10px 0 0;width:400px;min-height:35px}.wpforms-admin-page .wpforms-file-upload .fld .placeholder{color:#ccc}.wpforms-admin-page .wpforms-file-upload strong .fa{margin-right:8px}.wpforms-admin-page .wpforms-hide{display:none}.wpforms-admin-page .wpforms-h1-placeholder{display:none}.wpforms-admin-page .notice{display:none}.wpforms-admin-wrap{margin:0}.wpforms-admin-wrap .notice{margin-left:20px !important;margin-right:20px !important}.wpforms-admin-content{padding-left:20px;padding-right:20px}.wpforms-admin-content:before{content:" ";display:table}.wpforms-admin-content:after{clear:both;content:" ";display:table}.wpforms-clear:before{content:" ";display:table}.wpforms-clear:after{clear:both;content:" ";display:table}#wpforms-overview .tablenav.top{margin-top:0}#wpforms-overview .wp-list-table .column-id{width:30px}#wpforms-overview .wp-list-table .column-entries{width:70px}#wpforms-overview .wp-list-table .column-shortcode{width:150px}#wpforms-overview .wp-list-table .column-created{width:145px}#wpforms-entries-single #poststuff{padding:0}#wpforms-entries-single .postbox .hndle{cursor:default !important}#wpforms-entries-single .wpforms-entry-navigation{font-size:13px;line-height:29px;float:right;position:relative;padding-top:2px}@media (max-width: 600px){#wpforms-entries-single .wpforms-entry-navigation{display:none}}#wpforms-entries-single .wpforms-entry-navigation .add-new-h2{top:auto;margin:0;padding:4px 0px;text-align:center}#wpforms-entries-single .wpforms-entry-navigation .add-new-h2 .dashicons{font-size:16px;height:auto;width:28px;line-height:29px}#wpforms-entries-single .wpforms-entry-navigation .add-new-h2.inactive{opacity:0.5;pointer-events:none;cursor:default}#wpforms-entries-single .wpforms-entry-navigation .wpforms-entry-navigation-text{display:inline-block;margin-right:10px}#wpforms-entries-single .wpforms-entry-navigation .wpforms-entry-current{top:auto;margin:0;text-align:center;padding:4px 10px;position:relative;text-decoration:none;border:1px solid #ccc;-webkit-border-radius:2px;border-radius:2px;background:#fff;font-size:13px;line-height:29px;text-transform:center}#wpforms-entries-single #wpforms-entry-fields h2.hndle{font-size:18px}#wpforms-entries-single #wpforms-entry-fields h2.hndle .dashicons{font-size:16px;height:16px;width:16px;margin:4px 4px 0 0;color:#e27730}#wpforms-entries-single #wpforms-entry-fields .no-fields{padding:12px;margin:0}#wpforms-entries-single #wpforms-entry-fields .inside{padding:0;margin:0}#wpforms-entries-single #wpforms-entry-fields .inside p{padding:0;margin:0}#wpforms-entries-single #wpforms-entry-fields .inside .wpforms-entry-field-name{font-weight:600;background:#ebf3fb;padding:8px 12px}#wpforms-entries-single #wpforms-entry-fields .inside .wpforms-entry-field-value{background:#fff;padding:8px 12px}#wpforms-entries-single #wpforms-entry-fields .inside .empty .wpforms-entry-field-value{font-style:italic;color:#999}#wpforms-entries-single #wpforms-entry-fields .wpforms-empty-field-toggle{float:right;text-decoration:none;padding:5px 0 0}#wpforms-entries-single #wpforms-entry-notes .inside{margin:0;padding:0}#wpforms-entries-single #wpforms-entry-notes .wpforms-entry-notes-new{padding:10px}#wpforms-entries-single #wpforms-entry-notes form{display:none}#wpforms-entries-single #wpforms-entry-notes .btns{overflow:auto;padding:8px 0}#wpforms-entries-single #wpforms-entry-notes .no-notes{margin:0;padding:4px 10px 8px}#wpforms-entries-single #wpforms-entry-notes .wpforms-entry-notes-single{padding:10px;border-top:1px solid #e3e1e3}#wpforms-entries-single #wpforms-entry-notes .wpforms-entry-notes-single p:last-of-type{margin-bottom:0}#wpforms-entries-single #wpforms-entry-notes .wpforms-entry-notes-single.even{background-color:#f9f9f9}#wpforms-entries-single #wpforms-entry-notes .wpforms-entry-notes-byline{color:#888;margin-bottom:10px}#wpforms-entries-single #wpforms-entry-notes .wpforms-entry-notes-byline .sep{color:#ddd}#wpforms-entries-single #wpforms-entry-notes .wpforms-entry-notes-byline .notes-user{text-decoration:none;font-weight:600}#wpforms-entries-single #wpforms-entry-notes .wpforms-entry-notes-byline .note-delete{color:#a00;text-decoration:none}#wpforms-entries-single #wpforms-entry-notes .wpforms-entry-notes-byline .note-delete:hover{color:red;text-decoration:none}#wpforms-entries-single #wpforms-entry-details .inside,#wpforms-entries-single #wpforms-entry-payment .inside,#wpforms-entries-single #wpforms-entry-actions .inside{margin:0;padding:0}#wpforms-entries-single .wpforms-entry-details-meta,#wpforms-entries-single .wpforms-entry-actions-meta{padding:6px 0 0}#wpforms-entries-single .wpforms-entry-details-meta p,#wpforms-entries-single .wpforms-entry-payment-meta p,#wpforms-entries-single .wpforms-entry-actions-meta p{padding:6px 10px 8px;margin:0}#wpforms-entries-single .wpforms-entry-payment-meta{padding:0}#wpforms-entries-single .wpforms-entry-payment-meta p{border-bottom:1px solid #eee;padding:10px}#wpforms-entries-single .wpforms-entry-payment-meta p:last-of-type{border-bottom:0}#wpforms-entries-single .wpforms-entry-details-meta strong,#wpforms-entries-single .wpforms-entry-actions-meta strong{font-weight:600}#wpforms-entries-single .wpforms-entry-details-meta .dashicons,#wpforms-entries-single .wpforms-entry-actions-meta .dashicons{padding:0 2px 0 0;color:#82878A;top:-1px;left:-1px;position:relative;text-decoration:none}#wpforms-entries-single #wpforms-entry-details .submitdelete{color:#a00;text-decoration:none;padding:1px 2px}#wpforms-entries-single #wpforms-entry-details .submitdelete:hover{color:red}#wpforms-entries-single .wpforms-entry-actions-meta a{text-decoration:none}#wpforms-entries-single .wpforms-entry-actions-meta a:hover{text-decoration:underline}#wpforms-entries-single #wpforms-entry-geolocation .inside{padding:0;margin:0}#wpforms-entries-single #wpforms-entry-geolocation ul{margin:0}#wpforms-entries-single #wpforms-entry-geolocation ul li{border-bottom:1px solid #eee;margin:0;overflow:auto}#wpforms-entries-single #wpforms-entry-geolocation ul li:last-of-type{border-bottom:0}#wpforms-entries-single #wpforms-entry-geolocation .wpforms-geolocation-meta{width:85px;float:left;border-right:1px solid #eee;padding:10px 20px 10px 12px}#wpforms-entries-single #wpforms-entry-geolocation .wpforms-geolocation-value{display:inline-block;padding:10px 12px 10px 20px}#wpforms-entries-single #wpforms-entry-geolocation .wpforms-flag{vertical-align:text-top;margin-right:4px}#wpforms-entries-list .form-details{border-bottom:1px solid #ddd;padding-bottom:15px;margin:0 0 10px}#wpforms-entries-list .form-details .form-details-sub{color:#999;display:block;font-size:10px;text-transform:uppercase;margin:0 0 8px 0}#wpforms-entries-list .form-details .form-details-title{float:left;font-size:18px;font-weight:400;margin:0}@media (max-width: 1139px){#wpforms-entries-list .form-details .form-details-title{float:none;margin-bottom:10px}}#wpforms-entries-list .form-details .form-selector{display:inline-block;position:relative}#wpforms-entries-list .form-details .form-selector .toggle{border-radius:50%;color:#444;font-size:16px;box-shadow:none}#wpforms-entries-list .form-details .form-selector .toggle:hover,#wpforms-entries-list .form-details .form-selector .toggle.active{background-color:#e3e3e3;outline:none}#wpforms-entries-list .form-details .form-selector .toggle:before{vertical-align:middle}#wpforms-entries-list .form-details .form-selector .form-list{display:none;background:#fff;border-radius:3px;box-shadow:0 2px 8px 0 rgba(0,0,0,0.1);position:absolute;top:27px;left:-108px;width:230px;padding:10px 0}#wpforms-entries-list .form-details .form-selector .form-list:before{content:" ";position:absolute;top:-10px;left:110px;width:0;height:0;border-style:solid;border-width:0 8px 10px 8px;border-color:transparent transparent #fff transparent}#wpforms-entries-list .form-details .form-selector ul{max-height:196px;overflow-x:scroll;padding:0;margin:0}#wpforms-entries-list .form-details .form-selector ul li{list-style:none;margin:0;font-size:13px}#wpforms-entries-list .form-details .form-selector ul li a{display:block;text-decoration:none;padding:5px 15px;color:#444}#wpforms-entries-list .form-details .form-selector ul li a:hover{background-color:#f7f7f7}#wpforms-entries-list .form-details .form-details-actions{float:right}@media (max-width: 1139px){#wpforms-entries-list .form-details .form-details-actions{float:none}}#wpforms-entries-list .form-details .form-details-actions a{text-decoration:none;display:inline-block;margin:0 12px 0 0}#wpforms-entries-list .form-details .form-details-actions a:last-of-type{margin:0}#wpforms-entries-list .form-details .form-details-actions a .dashicons{width:16px;height:16px;font-size:16px}#wpforms-entries-list .wp-list-table .column-indicators{width:35px;text-align:center}#wpforms-entries-list .wp-list-table .column-indicators a:focus{-webkit-box-shadow:none;box-shadow:none}#wpforms-entries-list .wp-list-table .column-indicators .dashicons{width:14px;height:14px;font-size:14px;margin-top:3px}#wpforms-entries-list .wp-list-table .indicator-star .dashicons{margin-right:6px}#wpforms-entries-list .wp-list-table .indicator-star{color:#e4e4e4}#wpforms-entries-list .wp-list-table .indicator-star:hover,#wpforms-entries-list .wp-list-table .indicator-star.unstar{color:#e27730}#wpforms-entries-list .wp-list-table .indicator-read{color:#9ede84}#wpforms-entries-list .wp-list-table .indicator-read:hover,#wpforms-entries-list .wp-list-table .indicator-read.unread{color:#e4e4e4}#wpforms-entries-list .wp-list-table .column-date{width:150px}#wpforms-entries-list .wp-list-table .column-status{width:120px}#wpforms-entries-list .wp-list-table .column-status img{display:inline-block;height:12px;width:auto;margin:0 0 0 3px}#wpforms-entries-list .wp-list-table .column-payment_total{width:100px}#wpforms-entries-list .wp-list-table .column-actions{width:100px}#wpforms-entries-list .wp-list-table .sep{color:#ddd}#wpforms-entries-list .wp-list-table .delete:hover{color:red}#wpforms-welcome{border-top:3px solid #e27730;color:#555;padding-top:110px}@media (max-width: 767px){#wpforms-welcome{padding-top:64px}}#wpforms-welcome *,#wpforms-welcome *::before,#wpforms-welcome *::after{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}#wpforms-welcome .container{margin:0 auto;max-width:720px;padding:0}#wpforms-welcome .block{padding:40px}@media (max-width: 767px){#wpforms-welcome .block{padding:20px}}#wpforms-welcome img{max-width:100%;height:auto}#wpforms-welcome h1{color:#222;font-size:24px;text-align:center;margin:0 0 16px 0}#wpforms-welcome h5{color:#222;font-size:16px;margin:0 0 8px 0}#wpforms-welcome h6{font-size:16px;font-weight:400;line-height:1.6;text-align:center;margin:0}#wpforms-welcome p{font-size:14px;margin:0 0 20px 0}#wpforms-welcome .button-wrap{max-width:590px;margin:0 auto 0 auto}#wpforms-welcome .button-wrap .left{float:left;width:50%;padding-right:20px}@media (max-width: 767px){#wpforms-welcome .button-wrap .left{float:none;width:100%;padding:0;margin-bottom:20px}}#wpforms-welcome .button-wrap .right{float:right;width:50%;padding-left:20px}@media (max-width: 767px){#wpforms-welcome .button-wrap .right{float:none;width:100%;padding:0}}#wpforms-welcome .intro{background-color:#fff;border:2px solid #e1e1e1;border-radius:2px;margin-bottom:30px;position:relative;padding-top:40px}#wpforms-welcome .intro .sullie{background-color:#fff;border:2px solid #e1e1e1;border-radius:50%;height:110px;width:110px;padding:18px 14px 0 14px;position:absolute;top:-58px;left:50%;margin-left:-55px}#wpforms-welcome .intro .video-thumbnail{display:block;margin:0 auto}#wpforms-welcome .intro .button-wrap{margin-top:25px}#wpforms-welcome .features{background-color:#fff;border:2px solid #e1e1e1;border-bottom:0;border-radius:2px 2px 0 0;position:relative;padding-top:20px;padding-bottom:20px}#wpforms-welcome .features .feature-list{margin-top:60px}#wpforms-welcome .features .feature-block{float:left;width:50%;padding-bottom:35px;overflow:auto}@media (max-width: 767px){#wpforms-welcome .features .feature-block{float:none;width:100%}}#wpforms-welcome .features .feature-block.first{padding-right:20px;clear:both}@media (max-width: 767px){#wpforms-welcome .features .feature-block.first{padding-right:0}}#wpforms-welcome .features .feature-block.last{padding-left:20px}@media (max-width: 767px){#wpforms-welcome .features .feature-block.last{padding-left:0}}#wpforms-welcome .features .feature-block img{float:left;max-width:46px}#wpforms-welcome .features .feature-block h5{margin-left:68px}#wpforms-welcome .features .feature-block p{margin:0;margin-left:68px}#wpforms-welcome .features .button-wrap{margin-top:25px;text-align:center}#wpforms-welcome .upgrade{background-color:#000;border:2px solid #e1e1e1;border-top:0;border-bottom:0;color:#fff}#wpforms-welcome .upgrade h2{color:#fff;font-size:20px;margin:0 0 30px 0}#wpforms-welcome .upgrade ul{display:-ms-flex;display:-webkit-flex;display:flex;-webkit-flex-wrap:wrap;flex-wrap:wrap;font-size:15px;margin:0;padding:0}#wpforms-welcome .upgrade ul li{display:block;width:50%;margin:0 0 8px 0;padding:0}#wpforms-welcome .upgrade ul li .dashicons{color:#2a9b39;margin-right:5px}#wpforms-welcome .upgrade .left{float:left;width:66.666666%;padding-right:20px}@media (max-width: 767px){#wpforms-welcome .upgrade .left{float:none;width:100%;padding-right:0;margin-bottom:20px}}#wpforms-welcome .upgrade .right{float:right;width:33.333333%;padding-left:20px;text-align:center}@media (max-width: 767px){#wpforms-welcome .upgrade .right{float:none;width:100%;padding-left:0}}#wpforms-welcome .upgrade .right h2{text-align:center;margin:0}#wpforms-welcome .upgrade .right h2 span{display:inline-block;border-bottom:1px solid #555;padding:0 15px 12px}#wpforms-welcome .upgrade .right .price{padding:26px 0}#wpforms-welcome .upgrade .right .price .amount{font-size:48px;font-weight:600;position:relative;display:inline-block}#wpforms-welcome .upgrade .right .price .amount:before{content:'$';position:absolute;top:-8px;left:-16px;font-size:18px}#wpforms-welcome .upgrade .right .price .term{font-size:12px;display:inline-block}#wpforms-welcome .testimonials{background-color:#fff;border:2px solid #e1e1e1;border-top:0;padding:20px 0}#wpforms-welcome .testimonials .testimonial-block{margin:50px 0 0 0}#wpforms-welcome .testimonials .testimonial-block img{border-radius:50%;float:left;max-width:100px;box-shadow:0 0 18px rgba(0,0,0,0.2)}@media (max-width: 767px){#wpforms-welcome .testimonials .testimonial-block img{width:65px}}#wpforms-welcome .testimonials .testimonial-block p{font-size:14px;margin:0 0 12px 140px}@media (max-width: 767px){#wpforms-welcome .testimonials .testimonial-block p{margin-left:100px}}#wpforms-welcome .testimonials .testimonial-block p:last-of-type{margin-bottom:0}#wpforms-welcome .footer{background-color:#f1f1f1;border:2px solid #e1e1e1;border-top:0;border-radius:0 0 2px 2px}#wpforms-welcome.pro .features{border:2px solid #e1e1e1;margin-bottom:30px}#wpforms-welcome.pro .upgrade,#wpforms-welcome.pro .footer{display:none}#wpforms-welcome.pro .testimonials{border:2px solid #e1e1e1}.dashboard_page_wpforms-getting-started .video-container{border:2px solid #e1e1e1}.dashboard_page_wpforms-getting-started #wpfooter,.dashboard_page_wpforms-getting-started div.notice{display:none !important}#wpforms-admin-addons *,#wpforms-admin-addons *::before,#wpforms-admin-addons *::after{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}#wpforms-admin-addons .addons-container{margin-left:-20px;margin-right:-20px}#wpforms-admin-addons .unlock-msg{padding:0 20px;margin-top:-20px}#wpforms-admin-addons .addon-container{padding:0 20px;float:left;width:33.333333%}@media (max-width: 1249px){#wpforms-admin-addons .addon-container{width:50%}}@media (max-width: 767px){#wpforms-admin-addons .addon-container{width:100%}}#wpforms-admin-addons h4{font-size:17px;font-weight:700}#wpforms-admin-addons .addon-item{background-color:#fff;border:1px solid #ddd;border-radius:3px;margin:0 0 40px 0}@media (max-width: 767px){#wpforms-admin-addons .addon-item{margin:0 0}}#wpforms-admin-addons .addon-item img{border:1px solid #eee;float:left;max-width:75px}#wpforms-admin-addons .addon-item h5{margin:0 0 10px 100px;font-size:16px}#wpforms-admin-addons .addon-item p{margin:0 0 0 100px}#wpforms-admin-addons .addon-item .details{padding:30px 20px}#wpforms-admin-addons .addon-item .actions{background-color:#f7f7f7;border-top:1px solid #ddd;padding:20px;position:relative}#wpforms-admin-addons .addon-item .actions .msg{background-color:#f7f7f7;position:absolute;text-align:center;font-weight:600;top:0;left:0;height:100%;width:100%;z-index:99;padding:20px;display:-webkit-box;display:-moz-box;display:-ms-flexbox;display:-webkit-flex;display:flex;-webkit-align-items:center;-ms-align-items:center;align-items:center;justify-content:center}#wpforms-admin-addons .addon-item .actions .msg.success{color:#2a9b39}#wpforms-admin-addons .addon-item .actions .msg.error{color:red}#wpforms-admin-addons .addon-item .status{float:left;padding-top:8px}#wpforms-admin-addons .addon-item .status .status-inactive{color:red}#wpforms-admin-addons .addon-item .status .status-download{color:#666}#wpforms-admin-addons .addon-item .status .status-active{color:#2a9b39}#wpforms-admin-addons .addon-item .upgrade-button{text-align:center}#wpforms-admin-addons .addon-item .upgrade-button a{font-weight:600;width:140px;text-align:center;padding:8px 5px}#wpforms-admin-addons .addon-item .action-button{float:right}#wpforms-admin-addons .addon-item .action-button button{background:none;border:1px solid #ddd;border-radius:3px;box-shadow:none;cursor:pointer;font-weight:600;width:140px;text-align:center;padding:8px 5px}#wpforms-admin-addons .addon-item .action-button button:hover,#wpforms-admin-addons .addon-item .action-button button.loading{background-color:#e9e9e9}#wpforms-admin-addons .addon-item .action-button button .fa{margin-right:8px}#wpforms-admin-addons .addon-item .action-button button.status-active .fa{color:#2a9b39}#wpforms-admin-addons .addon-item .action-button button.status-active .fa{color:#2a9b39}#wpforms-admin-addons .addon-item .action-button button.status-inactive .fa{color:red}#wpforms-admin-addons .addon-item .action-button button.status-download .fa{color:#999}#wpforms-admin-addons .addon-item .action-button button.loading .fa{color:#666}.wpforms-admin-settings *,.wpforms-admin-settings *::before,.wpforms-admin-settings *::after{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.wpforms-admin-settings .wpforms-setting-row{border-bottom:1px solid #e4e4e4;padding:30px 0;font-size:14px;line-height:1.3}.wpforms-admin-settings .wpforms-setting-row:first-of-type{padding-top:10px !important}@media (max-width: 781px){.wpforms-admin-settings .wpforms-setting-row{padding:20px 0}}.wpforms-admin-settings .wpforms-setting-row.section-heading{padding:20px 0}.wpforms-admin-settings .wpforms-setting-row.section-heading.no-desc h4{margin:0}.wpforms-admin-settings .wpforms-setting-row.section-heading .wpforms-setting-field{margin:0;max-width:1000px}.wpforms-admin-settings .wpforms-setting-row.tools p,.wpforms-admin-settings .wpforms-setting-row.tools p:first-of-type{margin:0 0 16px 0}.wpforms-admin-settings .wpforms-setting-row.wpforms-setting-row-checkbox input[type=checkbox]{float:left;margin:1px 0 0 0}.wpforms-admin-settings .wpforms-setting-row.wpforms-setting-row-checkbox .desc{margin:0 0 0 30px}.wpforms-admin-settings .wpforms-setting-row.wpforms-setting-row-license .wpforms-setting-label{padding-top:8px}.wpforms-admin-settings .wpforms-setting-row.wpforms-setting-row-license p.type{margin-top:12px}.wpforms-admin-settings .wpforms-setting-row.wpforms-setting-row-text .wpforms-setting-label{padding-top:8px}.wpforms-admin-settings .wpforms-setting-row.wpforms-setting-row-select .wpforms-setting-label{padding-top:8px}.wpforms-admin-settings .wpforms-setting-row.wpforms-setting-row-radio .wpforms-setting-field input[type=radio]{margin:-3px 10px 0 0}.wpforms-admin-settings .wpforms-setting-row.wpforms-setting-row-radio .wpforms-setting-field label{margin-right:30px;display:inline-block}.wpforms-admin-settings .wpforms-setting-row#wpforms-setting-row-email-template .wpforms-setting-field label:before{content:" ";display:block;width:155px;height:180px;margin:0 0 10px 0}.wpforms-admin-settings .wpforms-setting-row#wpforms-setting-row-email-template .wpforms-setting-field .option-default:before{background:url(../images/settings-email-html.png) center center}.wpforms-admin-settings .wpforms-setting-row#wpforms-setting-row-email-template .wpforms-setting-field .option-none:before{background:url(../images/settings-email-plaintext.png) center center}.wpforms-admin-settings .wpforms-setting-row.wpforms-setting-row-image .wpforms-setting-field img{display:block;margin:0 0 20px 0;max-width:400px}.wpforms-admin-settings .wpforms-setting-row.wpforms-setting-row-color .wpforms-color-picker{padding-left:40px}.wpforms-admin-settings .wpforms-setting-row.wpforms-setting-row-color .minicolors-input-swatch{top:7px;left:7px;height:21px;width:21px;border-radius:2px}.wpforms-admin-settings .wpforms-setting-row h4{font-size:20px;font-weight:700;margin:0 0 6px 0}.wpforms-admin-settings .wpforms-setting-row h3{font-size:24px;font-weight:600;margin:0 0 20px 0}.wpforms-admin-settings .wpforms-setting-row p{margin:12px 0 0;font-size:14px;line-height:1.3}.wpforms-admin-settings .wpforms-setting-row p:first-of-type{margin:8px 0 0}.wpforms-admin-settings .wpforms-setting-row p.desc{font-style:italic;color:#666}.wpforms-admin-settings .wpforms-setting-row input[type=text],.wpforms-admin-settings .wpforms-setting-row input[type=password]{background-color:#fff;border:1px solid #ddd;border-radius:3px;box-shadow:none;color:#333;display:inline-block;vertical-align:middle;padding:7px 12px;margin:0 10px 0 0;width:400px;min-height:35px}@media (max-width: 959px){.wpforms-admin-settings .wpforms-setting-row input[type=text],.wpforms-admin-settings .wpforms-setting-row input[type=password]{width:300px}}.wpforms-admin-settings .wpforms-setting-row input[type=text]:focus,.wpforms-admin-settings .wpforms-setting-row input[type=password]:focus{border-color:#bbb}.wpforms-admin-settings .wpforms-setting-row button{margin-right:10px}.wpforms-admin-settings .wpforms-setting-row .choicesjs-select-wrap{display:block;max-width:400px}@media (max-width: 959px){.wpforms-admin-settings .wpforms-setting-row .choicesjs-select-wrap{width:300px}}.wpforms-admin-settings .wpforms-setting-label{display:block;float:left;width:200px;padding:0}@media (max-width: 781px){.wpforms-admin-settings .wpforms-setting-label{float:none;width:100%;padding-bottom:15px}}.wpforms-admin-settings .wpforms-setting-label label{display:block;font-weight:600}.wpforms-admin-settings .wpforms-setting-field{display:block;margin:0 0 0 200px;max-width:800px}@media (max-width: 781px){.wpforms-admin-settings .wpforms-setting-field{margin:0}}.wpforms-admin-settings p.submit{margin:0;padding:25px 0}.wpforms-admin-settings .captcha-addon-notice{background-color:#fff;border:1px solid #e27730;border-radius:3px;padding:30px;max-width:1000px;margin:20px 0 0 0}.wpforms-admin-settings .captcha-addon-notice img{float:left;max-width:90px}.wpforms-admin-settings .captcha-addon-notice h5{margin:0 0 10px 120px;font-size:18px}.wpforms-admin-settings .captcha-addon-notice p{margin:0 0 0 120px;font-size:14px;line-height:1.3}.wpforms-admin-settings .info-area{display:block;width:100%;max-width:1000px;height:450px;font-family:Menlo,Monaco,monospace;font-size:12px;background:#fff;box-shadow:none;border:1px solid #ddd;white-space:pre;overflow:auto;padding:20px}.wpforms-admin-settings #wpforms-settings-providers .wpforms-settings-provider{border-bottom:1px solid #ddd;padding:30px 0}.wpforms-admin-settings #wpforms-settings-providers .wpforms-settings-provider.focus-out{opacity:0.4}.wpforms-admin-settings #wpforms-settings-providers .wpforms-settings-provider-header{cursor:pointer;max-width:1000px}.wpforms-admin-settings #wpforms-settings-providers .wpforms-settings-provider-logo{float:left;position:relative}.wpforms-admin-settings #wpforms-settings-providers .wpforms-settings-provider-logo .fa{position:absolute;top:50%;margin:-9px 0 0 0;left:10px;color:#666;font-size:18px}.wpforms-admin-settings #wpforms-settings-providers .wpforms-settings-provider-logo img{border:1px solid #ddd;max-width:90px;display:block;margin:0 0 0 40px}.wpforms-admin-settings #wpforms-settings-providers .wpforms-settings-provider-info{margin:0 0 0 160px;position:relative;padding:20px 0 0}.wpforms-admin-settings #wpforms-settings-providers .wpforms-settings-provider-info h3{margin:0 0 10px 0;font-size:20px;font-weight:600}.wpforms-admin-settings #wpforms-settings-providers .wpforms-settings-provider-info p{margin:0;font-size:14px}.wpforms-admin-settings #wpforms-settings-providers .wpforms-settings-provider-info .connected-indicator{color:#83c11f;width:135px;border:1px solid #83c11f;border-radius:4px;padding:8px 14px;font-size:16px;position:absolute;top:28px;right:0;display:none}.wpforms-admin-settings #wpforms-settings-providers .connected .wpforms-settings-provider-info .connected-indicator{display:block}.wpforms-admin-settings #wpforms-settings-providers .wpforms-settings-provider-accounts{margin:0 0 0 160px;display:none;max-width:840px}.wpforms-admin-settings #wpforms-settings-providers .focus-in .wpforms-settings-provider-accounts{display:block}.wpforms-admin-settings #wpforms-settings-providers .wpforms-settings-provider-accounts-list ul{padding:0;margin:0}.wpforms-admin-settings #wpforms-settings-providers .wpforms-settings-provider-accounts-list ul li{border-bottom:1px solid #ddd;margin:0;padding:10px 0;font-size:14px}.wpforms-admin-settings #wpforms-settings-providers .wpforms-settings-provider-accounts-list ul li:first-of-type{border-top:1px solid #ddd}.wpforms-admin-settings #wpforms-settings-providers .wpforms-settings-provider-accounts-list ul li:last-of-type{margin-bottom:16px}.wpforms-admin-settings #wpforms-settings-providers .wpforms-settings-provider-accounts-list ul span.label{float:left;width:50%}.wpforms-admin-settings #wpforms-settings-providers .wpforms-settings-provider-accounts-list ul span.date{color:#999;float:left;width:35%}.wpforms-admin-settings #wpforms-settings-providers .wpforms-settings-provider-accounts-list ul span.remove{float:right;width:15%;text-align:right}.wpforms-admin-settings #wpforms-settings-providers .wpforms-settings-provider-accounts-connect{display:none;padding:20px;background-color:#ebf3fb;border:1px solid #0e6cad}.wpforms-admin-settings #wpforms-settings-providers .wpforms-settings-provider-accounts-connect input[type=text]{background-color:#fff;border:1px solid #ddd;border-radius:3px;box-shadow:none;color:#333;display:block;padding:7px 12px;margin:5px 0;width:400px;min-height:35px}.wpforms-admin-settings #wpforms-settings-providers .wpforms-settings-provider-accounts-connect input[type=text]:focus{border-color:#bbb}.wpforms-admin-settings #wpforms-settings-providers .focus-in .wpforms-settings-provider-accounts-connect{display:block}.wpforms-admin-settings #wpforms-settings-providers .wpforms-settings-provider-accounts-connect .fa{display:none}.wpforms-admin-settings #wpforms-settings-providers .wpforms-settings-provider-accounts-connect p,.wpforms-admin-settings #wpforms-settings-providers .wpforms-settings-provider-accounts p{margin:0 0 15px 0;font-size:14px}
|
2 |
+
|
assets/css/jquery.minicolors.css
CHANGED
@@ -1,327 +1,319 @@
|
|
1 |
.minicolors {
|
2 |
-
|
3 |
}
|
4 |
|
5 |
.minicolors-sprite {
|
6 |
-
background-image: url(data:image/png;base64,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);
|
7 |
-
}
|
8 |
-
|
9 |
-
.minicolors-no-data-uris .minicolors-sprite {
|
10 |
-
background-image: url(jquery.minicolors.png);
|
11 |
}
|
12 |
|
13 |
.minicolors-swatch {
|
14 |
-
|
15 |
-
|
16 |
-
|
17 |
-
|
18 |
-
|
19 |
-
|
20 |
-
|
21 |
-
|
22 |
}
|
23 |
|
24 |
.minicolors-swatch-color {
|
25 |
-
|
26 |
-
|
27 |
-
|
28 |
-
|
29 |
-
|
30 |
}
|
31 |
|
32 |
.minicolors input[type=hidden] + .minicolors-swatch {
|
33 |
-
|
34 |
-
|
35 |
-
|
36 |
}
|
37 |
|
38 |
.minicolors input[type=hidden][disabled] + .minicolors-swatch {
|
39 |
-
|
40 |
}
|
41 |
|
42 |
/* Panel */
|
43 |
.minicolors-panel {
|
44 |
-
|
45 |
-
|
46 |
-
|
47 |
-
|
48 |
-
|
49 |
-
|
50 |
-
|
51 |
-
|
52 |
-
display: none;
|
53 |
-
}
|
54 |
-
|
55 |
-
.minicolors-panel.minicolors-with-swatches {
|
56 |
-
height: 182px;
|
57 |
}
|
58 |
|
59 |
.minicolors-panel.minicolors-visible {
|
60 |
-
|
61 |
}
|
62 |
|
63 |
/* Panel positioning */
|
64 |
.minicolors-position-top .minicolors-panel {
|
65 |
-
|
66 |
}
|
67 |
|
68 |
.minicolors-position-right .minicolors-panel {
|
69 |
-
|
70 |
}
|
71 |
|
72 |
.minicolors-position-bottom .minicolors-panel {
|
73 |
-
|
74 |
}
|
75 |
|
76 |
.minicolors-position-left .minicolors-panel {
|
77 |
-
|
78 |
}
|
79 |
|
80 |
.minicolors-with-opacity .minicolors-panel {
|
81 |
-
|
82 |
}
|
83 |
|
84 |
.minicolors .minicolors-grid {
|
85 |
-
|
86 |
-
|
87 |
-
|
88 |
-
|
89 |
-
|
90 |
-
|
91 |
-
|
92 |
}
|
93 |
|
94 |
.minicolors .minicolors-grid-inner {
|
95 |
-
|
96 |
-
|
97 |
-
|
98 |
-
|
99 |
-
|
100 |
}
|
101 |
|
102 |
.minicolors-slider-saturation .minicolors-grid {
|
103 |
-
|
104 |
}
|
105 |
|
106 |
.minicolors-slider-saturation .minicolors-grid-inner {
|
107 |
-
|
108 |
-
|
109 |
}
|
110 |
|
111 |
.minicolors-slider-brightness .minicolors-grid {
|
112 |
-
|
113 |
}
|
114 |
|
115 |
.minicolors-slider-brightness .minicolors-grid-inner {
|
116 |
-
|
117 |
}
|
118 |
|
119 |
.minicolors-slider-wheel .minicolors-grid {
|
120 |
-
|
121 |
}
|
122 |
|
123 |
.minicolors-slider,
|
124 |
.minicolors-opacity-slider {
|
125 |
-
|
126 |
-
|
127 |
-
|
128 |
-
|
129 |
-
|
130 |
-
|
131 |
-
|
132 |
-
|
133 |
}
|
134 |
|
135 |
.minicolors-slider-saturation .minicolors-slider {
|
136 |
-
|
137 |
}
|
138 |
|
139 |
.minicolors-slider-brightness .minicolors-slider {
|
140 |
-
|
141 |
}
|
142 |
|
143 |
.minicolors-slider-wheel .minicolors-slider {
|
144 |
-
|
145 |
}
|
146 |
|
147 |
.minicolors-opacity-slider {
|
148 |
-
|
149 |
-
|
150 |
-
|
151 |
}
|
152 |
|
153 |
.minicolors-with-opacity .minicolors-opacity-slider {
|
154 |
-
|
155 |
}
|
156 |
|
157 |
/* Pickers */
|
158 |
.minicolors-grid .minicolors-picker {
|
159 |
-
|
160 |
-
|
161 |
-
|
162 |
-
|
163 |
-
|
164 |
-
|
165 |
-
|
166 |
-
|
167 |
-
|
168 |
-
|
169 |
}
|
170 |
|
171 |
.minicolors-grid .minicolors-picker > div {
|
172 |
-
|
173 |
-
|
174 |
-
|
175 |
-
|
176 |
-
|
177 |
-
|
178 |
-
|
179 |
-
|
180 |
}
|
181 |
|
182 |
.minicolors-picker {
|
183 |
-
|
184 |
-
|
185 |
-
|
186 |
-
|
187 |
-
|
188 |
-
|
189 |
-
|
190 |
-
|
191 |
-
|
192 |
}
|
193 |
|
194 |
/* Swatches */
|
195 |
-
.minicolors-swatches
|
196 |
-
|
197 |
-
|
198 |
-
|
199 |
-
|
200 |
-
|
201 |
-
top: 157px;
|
202 |
-
left: 5px;
|
203 |
}
|
204 |
|
205 |
.minicolors-swatches .minicolors-swatch {
|
206 |
-
|
207 |
-
|
208 |
-
|
209 |
-
|
210 |
}
|
211 |
|
212 |
.minicolors-with-opacity .minicolors-swatches .minicolors-swatch {
|
213 |
-
|
214 |
}
|
215 |
|
216 |
.minicolors-swatch.selected {
|
217 |
-
|
218 |
}
|
219 |
|
220 |
/* Inline controls */
|
221 |
.minicolors-inline {
|
222 |
-
|
223 |
}
|
224 |
|
225 |
.minicolors-inline .minicolors-input {
|
226 |
-
|
227 |
}
|
228 |
|
229 |
.minicolors-inline .minicolors-panel {
|
230 |
-
|
231 |
-
|
232 |
-
|
233 |
-
|
234 |
-
|
235 |
-
|
236 |
}
|
237 |
|
238 |
/* Default theme */
|
239 |
.minicolors-theme-default .minicolors-swatch {
|
240 |
-
|
241 |
-
|
242 |
-
|
243 |
-
|
244 |
}
|
245 |
.minicolors-theme-default .minicolors-swatches .minicolors-swatch {
|
246 |
-
|
247 |
-
|
248 |
-
|
249 |
-
|
250 |
-
|
251 |
-
.minicolors-theme-default .minicolors-swatches {
|
252 |
-
height: 20px;
|
253 |
}
|
254 |
.minicolors-theme-default.minicolors-position-right .minicolors-swatch {
|
255 |
-
|
256 |
-
|
257 |
}
|
258 |
.minicolors-theme-default.minicolors {
|
259 |
-
|
260 |
-
|
261 |
}
|
262 |
.minicolors-theme-default .minicolors-input {
|
263 |
-
|
264 |
-
|
265 |
-
|
266 |
-
|
267 |
}
|
268 |
.minicolors-theme-default.minicolors-position-right .minicolors-input {
|
269 |
-
|
270 |
-
|
271 |
}
|
272 |
|
273 |
/* Bootstrap theme */
|
274 |
.minicolors-theme-bootstrap .minicolors-swatch {
|
275 |
-
|
276 |
-
|
277 |
-
|
278 |
-
|
279 |
-
|
280 |
-
|
281 |
}
|
282 |
.minicolors-theme-bootstrap .minicolors-swatches .minicolors-swatch {
|
283 |
-
|
284 |
-
|
285 |
-
|
286 |
-
|
|
|
287 |
}
|
288 |
.minicolors-theme-bootstrap .minicolors-swatch-color {
|
289 |
-
|
290 |
}
|
291 |
-
.minicolors-theme-bootstrap.minicolors-position-right .minicolors-swatch {
|
292 |
-
|
293 |
-
|
294 |
}
|
295 |
.minicolors-theme-bootstrap .minicolors-input {
|
296 |
-
|
297 |
-
|
298 |
}
|
299 |
.minicolors-theme-bootstrap.minicolors-position-right .minicolors-input {
|
300 |
-
|
301 |
-
|
302 |
}
|
303 |
.minicolors-theme-bootstrap .minicolors-input.input-lg + .minicolors-swatch {
|
304 |
-
|
305 |
-
|
306 |
-
|
307 |
-
|
308 |
-
|
309 |
}
|
310 |
.minicolors-theme-bootstrap .minicolors-input.input-sm + .minicolors-swatch {
|
311 |
-
|
312 |
-
|
|
|
|
|
|
|
|
|
313 |
}
|
314 |
.input-group .minicolors-theme-bootstrap:not(:first-child) .minicolors-input {
|
315 |
-
|
316 |
-
|
317 |
}
|
318 |
|
319 |
/* Semantic Ui theme */
|
320 |
.minicolors-theme-semanticui .minicolors-swatch {
|
321 |
-
|
322 |
-
|
323 |
-
|
324 |
}
|
325 |
.minicolors-theme-semanticui input {
|
326 |
-
|
327 |
-
}
|
1 |
.minicolors {
|
2 |
+
position: relative;
|
3 |
}
|
4 |
|
5 |
.minicolors-sprite {
|
6 |
+
background-image: url(../images/jquery.minicolors.png);
|
|
|
|
|
|
|
|
|
7 |
}
|
8 |
|
9 |
.minicolors-swatch {
|
10 |
+
position: absolute;
|
11 |
+
vertical-align: middle;
|
12 |
+
background-position: -80px 0;
|
13 |
+
border: solid 1px #ccc;
|
14 |
+
cursor: text;
|
15 |
+
padding: 0;
|
16 |
+
margin: 0;
|
17 |
+
display: inline-block;
|
18 |
}
|
19 |
|
20 |
.minicolors-swatch-color {
|
21 |
+
position: absolute;
|
22 |
+
top: 0;
|
23 |
+
left: 0;
|
24 |
+
right: 0;
|
25 |
+
bottom: 0;
|
26 |
}
|
27 |
|
28 |
.minicolors input[type=hidden] + .minicolors-swatch {
|
29 |
+
width: 28px;
|
30 |
+
position: static;
|
31 |
+
cursor: pointer;
|
32 |
}
|
33 |
|
34 |
.minicolors input[type=hidden][disabled] + .minicolors-swatch {
|
35 |
+
cursor: default;
|
36 |
}
|
37 |
|
38 |
/* Panel */
|
39 |
.minicolors-panel {
|
40 |
+
position: absolute;
|
41 |
+
width: 173px;
|
42 |
+
background: white;
|
43 |
+
border: solid 1px #CCC;
|
44 |
+
box-shadow: 0 0 20px rgba(0, 0, 0, .2);
|
45 |
+
z-index: 99999;
|
46 |
+
box-sizing: content-box;
|
47 |
+
display: none;
|
|
|
|
|
|
|
|
|
|
|
48 |
}
|
49 |
|
50 |
.minicolors-panel.minicolors-visible {
|
51 |
+
display: block;
|
52 |
}
|
53 |
|
54 |
/* Panel positioning */
|
55 |
.minicolors-position-top .minicolors-panel {
|
56 |
+
top: -154px;
|
57 |
}
|
58 |
|
59 |
.minicolors-position-right .minicolors-panel {
|
60 |
+
right: 0;
|
61 |
}
|
62 |
|
63 |
.minicolors-position-bottom .minicolors-panel {
|
64 |
+
top: auto;
|
65 |
}
|
66 |
|
67 |
.minicolors-position-left .minicolors-panel {
|
68 |
+
left: 0;
|
69 |
}
|
70 |
|
71 |
.minicolors-with-opacity .minicolors-panel {
|
72 |
+
width: 194px;
|
73 |
}
|
74 |
|
75 |
.minicolors .minicolors-grid {
|
76 |
+
position: relative;
|
77 |
+
top: 1px;
|
78 |
+
left: 1px;
|
79 |
+
width: 150px;
|
80 |
+
height: 150px;
|
81 |
+
background-position: -120px 0;
|
82 |
+
cursor: crosshair;
|
83 |
}
|
84 |
|
85 |
.minicolors .minicolors-grid-inner {
|
86 |
+
position: absolute;
|
87 |
+
top: 0;
|
88 |
+
left: 0;
|
89 |
+
width: 150px;
|
90 |
+
height: 150px;
|
91 |
}
|
92 |
|
93 |
.minicolors-slider-saturation .minicolors-grid {
|
94 |
+
background-position: -420px 0;
|
95 |
}
|
96 |
|
97 |
.minicolors-slider-saturation .minicolors-grid-inner {
|
98 |
+
background-position: -270px 0;
|
99 |
+
background-image: inherit;
|
100 |
}
|
101 |
|
102 |
.minicolors-slider-brightness .minicolors-grid {
|
103 |
+
background-position: -570px 0;
|
104 |
}
|
105 |
|
106 |
.minicolors-slider-brightness .minicolors-grid-inner {
|
107 |
+
background-color: black;
|
108 |
}
|
109 |
|
110 |
.minicolors-slider-wheel .minicolors-grid {
|
111 |
+
background-position: -720px 0;
|
112 |
}
|
113 |
|
114 |
.minicolors-slider,
|
115 |
.minicolors-opacity-slider {
|
116 |
+
position: absolute;
|
117 |
+
top: 1px;
|
118 |
+
left: 152px;
|
119 |
+
width: 20px;
|
120 |
+
height: 150px;
|
121 |
+
background-color: white;
|
122 |
+
background-position: 0 0;
|
123 |
+
cursor: row-resize;
|
124 |
}
|
125 |
|
126 |
.minicolors-slider-saturation .minicolors-slider {
|
127 |
+
background-position: -60px 0;
|
128 |
}
|
129 |
|
130 |
.minicolors-slider-brightness .minicolors-slider {
|
131 |
+
background-position: -20px 0;
|
132 |
}
|
133 |
|
134 |
.minicolors-slider-wheel .minicolors-slider {
|
135 |
+
background-position: -20px 0;
|
136 |
}
|
137 |
|
138 |
.minicolors-opacity-slider {
|
139 |
+
left: 173px;
|
140 |
+
background-position: -40px 0;
|
141 |
+
display: none;
|
142 |
}
|
143 |
|
144 |
.minicolors-with-opacity .minicolors-opacity-slider {
|
145 |
+
display: block;
|
146 |
}
|
147 |
|
148 |
/* Pickers */
|
149 |
.minicolors-grid .minicolors-picker {
|
150 |
+
position: absolute;
|
151 |
+
top: 70px;
|
152 |
+
left: 70px;
|
153 |
+
width: 12px;
|
154 |
+
height: 12px;
|
155 |
+
border: solid 1px black;
|
156 |
+
border-radius: 10px;
|
157 |
+
margin-top: -6px;
|
158 |
+
margin-left: -6px;
|
159 |
+
background: none;
|
160 |
}
|
161 |
|
162 |
.minicolors-grid .minicolors-picker > div {
|
163 |
+
position: absolute;
|
164 |
+
top: 0;
|
165 |
+
left: 0;
|
166 |
+
width: 8px;
|
167 |
+
height: 8px;
|
168 |
+
border-radius: 8px;
|
169 |
+
border: solid 2px white;
|
170 |
+
box-sizing: content-box;
|
171 |
}
|
172 |
|
173 |
.minicolors-picker {
|
174 |
+
position: absolute;
|
175 |
+
top: 0;
|
176 |
+
left: 0;
|
177 |
+
width: 18px;
|
178 |
+
height: 2px;
|
179 |
+
background: white;
|
180 |
+
border: solid 1px black;
|
181 |
+
margin-top: -2px;
|
182 |
+
box-sizing: content-box;
|
183 |
}
|
184 |
|
185 |
/* Swatches */
|
186 |
+
.minicolors-swatches,
|
187 |
+
.minicolors-swatches li {
|
188 |
+
margin: 5px 0 3px 5px;
|
189 |
+
padding: 0;
|
190 |
+
list-style: none;
|
191 |
+
overflow: hidden;
|
|
|
|
|
192 |
}
|
193 |
|
194 |
.minicolors-swatches .minicolors-swatch {
|
195 |
+
position: relative;
|
196 |
+
float: left;
|
197 |
+
cursor: pointer;
|
198 |
+
margin:0 4px 0 0;
|
199 |
}
|
200 |
|
201 |
.minicolors-with-opacity .minicolors-swatches .minicolors-swatch {
|
202 |
+
margin-right: 7px;
|
203 |
}
|
204 |
|
205 |
.minicolors-swatch.selected {
|
206 |
+
border-color: #000;
|
207 |
}
|
208 |
|
209 |
/* Inline controls */
|
210 |
.minicolors-inline {
|
211 |
+
display: inline-block;
|
212 |
}
|
213 |
|
214 |
.minicolors-inline .minicolors-input {
|
215 |
+
display: none !important;
|
216 |
}
|
217 |
|
218 |
.minicolors-inline .minicolors-panel {
|
219 |
+
position: relative;
|
220 |
+
top: auto;
|
221 |
+
left: auto;
|
222 |
+
box-shadow: none;
|
223 |
+
z-index: auto;
|
224 |
+
display: inline-block;
|
225 |
}
|
226 |
|
227 |
/* Default theme */
|
228 |
.minicolors-theme-default .minicolors-swatch {
|
229 |
+
top: 5px;
|
230 |
+
left: 5px;
|
231 |
+
width: 18px;
|
232 |
+
height: 18px;
|
233 |
}
|
234 |
.minicolors-theme-default .minicolors-swatches .minicolors-swatch {
|
235 |
+
margin-bottom: 2px;
|
236 |
+
top: 0;
|
237 |
+
left: 0;
|
238 |
+
width: 18px;
|
239 |
+
height: 18px;
|
|
|
|
|
240 |
}
|
241 |
.minicolors-theme-default.minicolors-position-right .minicolors-swatch {
|
242 |
+
left: auto;
|
243 |
+
right: 5px;
|
244 |
}
|
245 |
.minicolors-theme-default.minicolors {
|
246 |
+
width: auto;
|
247 |
+
display: inline-block;
|
248 |
}
|
249 |
.minicolors-theme-default .minicolors-input {
|
250 |
+
height: 20px;
|
251 |
+
width: auto;
|
252 |
+
display: inline-block;
|
253 |
+
padding-left: 26px;
|
254 |
}
|
255 |
.minicolors-theme-default.minicolors-position-right .minicolors-input {
|
256 |
+
padding-right: 26px;
|
257 |
+
padding-left: inherit;
|
258 |
}
|
259 |
|
260 |
/* Bootstrap theme */
|
261 |
.minicolors-theme-bootstrap .minicolors-swatch {
|
262 |
+
z-index: 2;
|
263 |
+
top: 3px;
|
264 |
+
left: 3px;
|
265 |
+
width: 28px;
|
266 |
+
height: 28px;
|
267 |
+
border-radius: 3px;
|
268 |
}
|
269 |
.minicolors-theme-bootstrap .minicolors-swatches .minicolors-swatch {
|
270 |
+
margin-bottom: 2px;
|
271 |
+
top: 0;
|
272 |
+
left: 0;
|
273 |
+
width: 20px;
|
274 |
+
height: 20px;
|
275 |
}
|
276 |
.minicolors-theme-bootstrap .minicolors-swatch-color {
|
277 |
+
border-radius: inherit;
|
278 |
}
|
279 |
+
.minicolors-theme-bootstrap.minicolors-position-right > .minicolors-swatch {
|
280 |
+
left: auto;
|
281 |
+
right: 3px;
|
282 |
}
|
283 |
.minicolors-theme-bootstrap .minicolors-input {
|
284 |
+
float: none;
|
285 |
+
padding-left: 44px;
|
286 |
}
|
287 |
.minicolors-theme-bootstrap.minicolors-position-right .minicolors-input {
|
288 |
+
padding-right: 44px;
|
289 |
+
padding-left: 12px;
|
290 |
}
|
291 |
.minicolors-theme-bootstrap .minicolors-input.input-lg + .minicolors-swatch {
|
292 |
+
top: 4px;
|
293 |
+
left: 4px;
|
294 |
+
width: 37px;
|
295 |
+
height: 37px;
|
296 |
+
border-radius: 5px;
|
297 |
}
|
298 |
.minicolors-theme-bootstrap .minicolors-input.input-sm + .minicolors-swatch {
|
299 |
+
width: 24px;
|
300 |
+
height: 24px;
|
301 |
+
}
|
302 |
+
.minicolors-theme-bootstrap .minicolors-input.input-xs + .minicolors-swatch {
|
303 |
+
width: 18px;
|
304 |
+
height: 18px;
|
305 |
}
|
306 |
.input-group .minicolors-theme-bootstrap:not(:first-child) .minicolors-input {
|
307 |
+
border-top-left-radius: 0;
|
308 |
+
border-bottom-left-radius: 0;
|
309 |
}
|
310 |
|
311 |
/* Semantic Ui theme */
|
312 |
.minicolors-theme-semanticui .minicolors-swatch {
|
313 |
+
top: 0;
|
314 |
+
left: 0;
|
315 |
+
padding: 18px;
|
316 |
}
|
317 |
.minicolors-theme-semanticui input {
|
318 |
+
text-indent: 30px;
|
319 |
+
}
|
assets/css/wpforms-preview.css
CHANGED
@@ -1,5 +1,5 @@
|
|
1 |
/* ==========================================================================
|
2 |
-
WPForms Preview
|
3 |
========================================================================== */
|
4 |
|
5 |
/*! normalize.css v4.1.1 | MIT License | github.com/necolas/normalize.css */
|
@@ -27,23 +27,6 @@ body {
|
|
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;
|
@@ -75,13 +58,20 @@ a:hover, a:active, a:focus {
|
|
75 |
color: #0096dd;
|
76 |
}
|
77 |
|
78 |
-
|
79 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
80 |
|
81 |
#print h1 {
|
82 |
font-size: 24px;
|
83 |
font-weight: 600;
|
84 |
-
margin: 0 0
|
85 |
}
|
86 |
|
87 |
#print h1 span {
|
@@ -100,26 +90,99 @@ a:hover, a:active, a:focus {
|
|
100 |
margin-left: 10px;
|
101 |
}
|
102 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
103 |
#print .fields {
|
104 |
border: 1px solid #eee;
|
105 |
}
|
106 |
|
107 |
-
#print .
|
|
|
|
|
|
|
|
|
|
|
108 |
font-weight: 600;
|
109 |
background: #ebf3fb;
|
110 |
padding: 8px 12px;
|
111 |
margin: 0;
|
112 |
}
|
113 |
|
114 |
-
#print .
|
|
|
115 |
background: #fff;
|
116 |
padding: 8px 12px;
|
117 |
margin: 0;
|
118 |
}
|
119 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
120 |
@media print {
|
121 |
|
122 |
-
|
123 |
border: none;
|
124 |
box-shadow: none;
|
125 |
padding: 30px 0 15px;
|
@@ -131,28 +194,50 @@ a:hover, a:active, a:focus {
|
|
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 .
|
|
|
144 |
border-top: 1px solid #ccc;
|
|
|
145 |
}
|
146 |
|
147 |
-
#print .
|
|
|
148 |
border: none;
|
149 |
}
|
150 |
|
151 |
-
#print .
|
|
|
152 |
padding: 8px 12px 0 8px;
|
153 |
}
|
154 |
|
155 |
-
#print .
|
|
|
156 |
padding-top: 6px;
|
157 |
}
|
158 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
/* ==========================================================================
|
2 |
+
WPForms Print Preview
|
3 |
========================================================================== */
|
4 |
|
5 |
/*! normalize.css v4.1.1 | MIT License | github.com/necolas/normalize.css */
|
27 |
line-height: 1.625;
|
28 |
}
|
29 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
30 |
.site {
|
31 |
text-align: center;
|
32 |
font-size: 12px;
|
58 |
color: #0096dd;
|
59 |
}
|
60 |
|
61 |
+
#print {
|
62 |
+
border-top: 1px solid #eee;
|
63 |
+
background-color: #fff;
|
64 |
+
box-shadow: 0 1px 2px #ccc;
|
65 |
+
margin: 30px auto 20px auto;
|
66 |
+
overflow: auto;
|
67 |
+
padding: 30px;
|
68 |
+
max-width: 780px;
|
69 |
+
}
|
70 |
|
71 |
#print h1 {
|
72 |
font-size: 24px;
|
73 |
font-weight: 600;
|
74 |
+
margin: 0 0 16px 0;
|
75 |
}
|
76 |
|
77 |
#print h1 span {
|
90 |
margin-left: 10px;
|
91 |
}
|
92 |
|
93 |
+
#print .actions {
|
94 |
+
text-align: right;
|
95 |
+
margin: 0 0 26px 0;
|
96 |
+
font-size: 11px;
|
97 |
+
colo
|
98 |
+
}
|
99 |
+
|
100 |
#print .fields {
|
101 |
border: 1px solid #eee;
|
102 |
}
|
103 |
|
104 |
+
#print .field.empty {
|
105 |
+
display: none;
|
106 |
+
}
|
107 |
+
|
108 |
+
#print .field-name,
|
109 |
+
#print .note-byline {
|
110 |
font-weight: 600;
|
111 |
background: #ebf3fb;
|
112 |
padding: 8px 12px;
|
113 |
margin: 0;
|
114 |
}
|
115 |
|
116 |
+
#print .field-value,
|
117 |
+
#print .note-text {
|
118 |
background: #fff;
|
119 |
padding: 8px 12px;
|
120 |
margin: 0;
|
121 |
}
|
122 |
|
123 |
+
#print .notes-head {
|
124 |
+
margin: 26px 0 16px 0;
|
125 |
+
display: none;
|
126 |
+
}
|
127 |
+
|
128 |
+
#print .notes {
|
129 |
+
border: 1px solid #eee;
|
130 |
+
display: none;
|
131 |
+
}
|
132 |
+
|
133 |
+
#print .notes p {
|
134 |
+
margin: 0 0 10px 0;
|
135 |
+
}
|
136 |
+
|
137 |
+
#print .notes p:last-of-type {
|
138 |
+
margin: 0;
|
139 |
+
}
|
140 |
+
|
141 |
+
/* Compact view */
|
142 |
+
|
143 |
+
.compact #print {
|
144 |
+
font-size: 12px;
|
145 |
+
line-height: 1.4;
|
146 |
+
padding: 15px;
|
147 |
+
margin-bottom: 10px;
|
148 |
+
}
|
149 |
+
|
150 |
+
.compact #print h1 {
|
151 |
+
font-size: 16px !important;
|
152 |
+
}
|
153 |
+
|
154 |
+
.compact #print .field {
|
155 |
+
border-top: 1px solid #eee;
|
156 |
+
overflow: hidden;
|
157 |
+
clear: both;
|
158 |
+
}
|
159 |
+
|
160 |
+
.compact #print .fields {
|
161 |
+
border-top: 0;
|
162 |
+
}
|
163 |
+
|
164 |
+
.compact #print .field-name {
|
165 |
+
width: 30%;
|
166 |
+
float: left;
|
167 |
+
}
|
168 |
+
|
169 |
+
.compact #print .field-value {
|
170 |
+
width: 70%;
|
171 |
+
float: right;
|
172 |
+
}
|
173 |
+
|
174 |
+
.compact .site {
|
175 |
+
font-size: 9px;
|
176 |
+
}
|
177 |
+
|
178 |
+
.compact #print .notes-head {
|
179 |
+
font-size: 16px;
|
180 |
+
margin: 16px 0 10px 0;
|
181 |
+
}
|
182 |
+
|
183 |
@media print {
|
184 |
|
185 |
+
#print {
|
186 |
border: none;
|
187 |
box-shadow: none;
|
188 |
padding: 30px 0 15px;
|
194 |
#print h1 {
|
195 |
text-align: center;
|
196 |
}
|
197 |
+
|
198 |
+
#print .buttons,
|
199 |
+
#print .actions {
|
200 |
display: none;
|
201 |
}
|
202 |
|
203 |
+
#print .fields,
|
204 |
+
#print .notes {
|
205 |
border: 1px solid #ccc;
|
206 |
}
|
207 |
|
208 |
+
#print .field,
|
209 |
+
#print .note {
|
210 |
border-top: 1px solid #ccc;
|
211 |
+
border-color: #ccc !important;
|
212 |
}
|
213 |
|
214 |
+
#print .field:first-of-type,
|
215 |
+
#print .note:first-of-type {
|
216 |
border: none;
|
217 |
}
|
218 |
|
219 |
+
#print .field-name,
|
220 |
+
#print .note-byline {
|
221 |
padding: 8px 12px 0 8px;
|
222 |
}
|
223 |
|
224 |
+
#print .field-value,
|
225 |
+
#print .note-text {
|
226 |
padding-top: 6px;
|
227 |
}
|
228 |
+
|
229 |
+
/* Compact view */
|
230 |
+
|
231 |
+
.compact #print {
|
232 |
+
padding: 15px;
|
233 |
+
font-size: 11px;
|
234 |
+
}
|
235 |
+
|
236 |
+
.compact #print .fields {
|
237 |
+
border-top: none;
|
238 |
+
}
|
239 |
+
|
240 |
+
.compact #print .field:first-of-type {
|
241 |
+
border-top: 1px solid #ccc;
|
242 |
+
}
|
243 |
+
}
|
assets/images/cross-inverse.svg
ADDED
@@ -0,0 +1 @@
|
|
|
1 |
+
<svg width="21" height="21" viewBox="0 0 21 21" xmlns="http://www.w3.org/2000/svg"><g fill="#000" fill-rule="evenodd"><path d="M2.592.044l18.364 18.364-2.548 2.548L.044 2.592z"/><path d="M0 18.364L18.364 0l2.548 2.548L2.548 20.912z"/></g></svg>
|
assets/images/cross.svg
ADDED
@@ -0,0 +1 @@
|
|
|
1 |
+
<svg width="21" height="21" viewBox="0 0 21 21" xmlns="http://www.w3.org/2000/svg"><g fill="#FFF" fill-rule="evenodd"><path d="M2.592.044l18.364 18.364-2.548 2.548L.044 2.592z"/><path d="M0 18.364L18.364 0l2.548 2.548L2.548 20.912z"/></g></svg>
|
assets/images/flags.png
ADDED
Binary file
|
assets/images/icon-cc-amex.png
DELETED
Binary file
|
assets/images/icon-cc-discover.png
DELETED
Binary file
|
assets/images/icon-cc-lock.png
DELETED
Binary file
|
assets/images/icon-cc-maestro.png
DELETED
Binary file
|
assets/images/icon-cc-mastercard.png
DELETED
Binary file
|
assets/images/icon-cc-svc.png
DELETED
Binary file
|
assets/images/icon-cc-visa.png
DELETED
Binary file
|
assets/images/jquery.minicolors.png
ADDED
Binary file
|
assets/images/logo-builder.png
DELETED
Binary file
|
assets/images/logo.png
ADDED
Binary file
|
assets/images/settings-captcha-addon.png
ADDED
Binary file
|
assets/images/settings-email-html.png
ADDED
Binary file
|
assets/images/settings-email-plaintext.png
ADDED
Binary file
|
assets/images/spinner-small.gif
DELETED
Binary file
|
assets/images/spinner.gif
DELETED
Binary file
|
assets/images/welcome-feature-icon-1.png
ADDED
Binary file
|
assets/images/welcome-feature-icon-10.png
ADDED
Binary file
|
assets/images/welcome-feature-icon-2.png
ADDED
Binary file
|
assets/images/welcome-feature-icon-3.png
ADDED
Binary file
|
assets/images/welcome-feature-icon-4.png
ADDED
Binary file
|
assets/images/welcome-feature-icon-5.png
ADDED
Binary file
|
assets/images/welcome-feature-icon-6.png
ADDED
Binary file
|
assets/images/welcome-feature-icon-7.png
ADDED
Binary file
|
assets/images/welcome-feature-icon-8.png
ADDED
Binary file
|
assets/images/welcome-feature-icon-9.png
ADDED
Binary file
|
assets/images/welcome-features.png
DELETED
Binary file
|
assets/images/welcome-testimonial-bill.jpg
ADDED
Binary file
|
assets/images/welcome-testimonial-david.jpg
ADDED
Binary file
|
assets/images/welcome-video.png
ADDED
Binary file
|
assets/js/admin-builder.js
CHANGED
@@ -1235,7 +1235,7 @@
|
|
1235 |
$el.append('<i class="fa fa-cog fa-spin"></i>');
|
1236 |
|
1237 |
WPFormsBuilder.fieldAdd(type, {position: pos, placeholder: $el});
|
1238 |
-
|
1239 |
});
|
1240 |
|
1241 |
$('.wpforms-add-fields-button').draggable({
|
@@ -1304,7 +1304,16 @@
|
|
1304 |
if (total == '1') {
|
1305 |
$.alert({
|
1306 |
title: false,
|
1307 |
-
content: wpforms_builder.error_choice
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1308 |
});
|
1309 |
} else {
|
1310 |
$this.parent().remove();
|
@@ -1749,8 +1758,17 @@
|
|
1749 |
msg = msg.replace('{limit}',limit);
|
1750 |
msg = msg.replace('{total}',res.data.total);
|
1751 |
$.alert({
|
1752 |
-
title:
|
1753 |
-
content:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1754 |
});
|
1755 |
}
|
1756 |
} else {
|
@@ -2201,7 +2219,7 @@
|
|
2201 |
icon: 'fa fa-exclamation-circle',
|
2202 |
type: 'orange',
|
2203 |
buttons: {
|
2204 |
-
|
2205 |
text: wpforms_builder.ok,
|
2206 |
btnClass: 'btn-confirm',
|
2207 |
keys: ['enter']
|
@@ -2235,7 +2253,7 @@
|
|
2235 |
$(document).on('click', '#wpforms-embed', function(e) {
|
2236 |
e.preventDefault();
|
2237 |
var content = wpforms_builder.embed_modal;
|
2238 |
-
content += '<input type=\'text\' value=\'[wpforms id="' + s.formID + '"]\' readonly id=\'wpforms-embed-shortcode\'>';
|
2239 |
content += wpforms_builder.embed_modal_2;
|
2240 |
content += '<br><br><iframe width="600" height="338" src="https://www.youtube-nocookie.com/embed/IxGVz3AjEe0?rel=0&showinfo=0" frameborder="0" allowfullscreen></iframe>';
|
2241 |
$.alert({
|
1235 |
$el.append('<i class="fa fa-cog fa-spin"></i>');
|
1236 |
|
1237 |
WPFormsBuilder.fieldAdd(type, {position: pos, placeholder: $el});
|
1238 |
+
}
|
1239 |
});
|
1240 |
|
1241 |
$('.wpforms-add-fields-button').draggable({
|
1304 |
if (total == '1') {
|
1305 |
$.alert({
|
1306 |
title: false,
|
1307 |
+
content: wpforms_builder.error_choice,
|
1308 |
+
icon: 'fa fa-info-circle',
|
1309 |
+
type: 'blue',
|
1310 |
+
buttons: {
|
1311 |
+
confirm: {
|
1312 |
+
text: wpforms_builder.ok,
|
1313 |
+
btnClass: 'btn-confirm',
|
1314 |
+
keys: ['enter']
|
1315 |
+
}
|
1316 |
+
}
|
1317 |
});
|
1318 |
} else {
|
1319 |
$this.parent().remove();
|
1758 |
msg = msg.replace('{limit}',limit);
|
1759 |
msg = msg.replace('{total}',res.data.total);
|
1760 |
$.alert({
|
1761 |
+
title: false,
|
1762 |
+
content: wpforms_builder.heads_up,
|
1763 |
+
icon: 'fa fa-info-circle',
|
1764 |
+
type: 'blue',
|
1765 |
+
buttons: {
|
1766 |
+
confirm: {
|
1767 |
+
text: msg,
|
1768 |
+
btnClass: 'btn-confirm',
|
1769 |
+
keys: ['enter']
|
1770 |
+
}
|
1771 |
+
}
|
1772 |
});
|
1773 |
}
|
1774 |
} else {
|
2219 |
icon: 'fa fa-exclamation-circle',
|
2220 |
type: 'orange',
|
2221 |
buttons: {
|
2222 |
+
confirm: {
|
2223 |
text: wpforms_builder.ok,
|
2224 |
btnClass: 'btn-confirm',
|
2225 |
keys: ['enter']
|
2253 |
$(document).on('click', '#wpforms-embed', function(e) {
|
2254 |
e.preventDefault();
|
2255 |
var content = wpforms_builder.embed_modal;
|
2256 |
+
content += '<input type=\'text\' value=\'[wpforms id="' + s.formID + '" title="false" description="false"]\' readonly id=\'wpforms-embed-shortcode\'>';
|
2257 |
content += wpforms_builder.embed_modal_2;
|
2258 |
content += '<br><br><iframe width="600" height="338" src="https://www.youtube-nocookie.com/embed/IxGVz3AjEe0?rel=0&showinfo=0" frameborder="0" allowfullscreen></iframe>';
|
2259 |
$.alert({
|
assets/js/admin-overview.js
DELETED
@@ -1,21 +0,0 @@
|
|
1 |
-
;(function($){
|
2 |
-
$(function(){
|
3 |
-
|
4 |
-
// Confirm entry deletion
|
5 |
-
$(document).on('click', '#wpforms-overview .wp-list-table .delete a', function(e) {
|
6 |
-
if ( confirm( wpforms_overview.delete_confirm ) ) {
|
7 |
-
return true;
|
8 |
-
}
|
9 |
-
return false;
|
10 |
-
});
|
11 |
-
|
12 |
-
// Confirm form duplication
|
13 |
-
$(document).on('click', '#wpforms-overview .wp-list-table .duplicate a', function(e) {
|
14 |
-
if ( confirm( wpforms_overview.duplicate_confirm ) ) {
|
15 |
-
return true;
|
16 |
-
}
|
17 |
-
return false;
|
18 |
-
});
|
19 |
-
|
20 |
-
});
|
21 |
-
}(jQuery));
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
assets/js/admin-settings.js
DELETED
@@ -1,224 +0,0 @@
|
|
1 |
-
;(function($) {
|
2 |
-
|
3 |
-
var s;
|
4 |
-
|
5 |
-
var WPFormsSettings = {
|
6 |
-
|
7 |
-
settings: {
|
8 |
-
tabs: '',
|
9 |
-
tabs_nav: '',
|
10 |
-
tabs_hash: window.location.hash,
|
11 |
-
tabs_hash_sani: window.location.hash.replace('!', ''),
|
12 |
-
media_frame: false
|
13 |
-
},
|
14 |
-
|
15 |
-
/**
|
16 |
-
* Start the engine.
|
17 |
-
*
|
18 |
-
* @since 1.0.0
|
19 |
-
*/
|
20 |
-
init: function() {
|
21 |
-
|
22 |
-
s = this.settings;
|
23 |
-
|
24 |
-
WPFormsSettings.bindUIActions();
|
25 |
-
|
26 |
-
$(document).ready(function() {
|
27 |
-
WPFormsSettings.ready();
|
28 |
-
});
|
29 |
-
},
|
30 |
-
|
31 |
-
/**
|
32 |
-
* Element bindings.
|
33 |
-
*
|
34 |
-
* @since 1.0.0
|
35 |
-
*/
|
36 |
-
ready: function() {
|
37 |
-
|
38 |
-
s.tabs = $('#wpforms-tabs');
|
39 |
-
s.tabs_nav = $('#wpforms-tabs-nav');
|
40 |
-
s.integrationFocus = WPFormsSettings.getQueryString('wpforms-integration');
|
41 |
-
s.jumpTo = WPFormsSettings.getQueryString('jump');
|
42 |
-
|
43 |
-
// If we have a hash and it begins with "wpforms-tab", set the proper tab to be opened.
|
44 |
-
if ( s.tabs_hash && s.tabs_hash.indexOf('wpforms-tab-') >= 0 ) {
|
45 |
-
$('.wpforms-active').removeClass('wpforms-active nav-tab-active');
|
46 |
-
s.tabs_nav.find('a[href="' + s.tabs_hash_sani + '"]').addClass('wpforms-active nav-tab-active');
|
47 |
-
s.tabs.find(s.tabs_hash_sani).addClass('wpforms-active').show();
|
48 |
-
}
|
49 |
-
|
50 |
-
// After settings are loaded, fade in the settings
|
51 |
-
$('.wpforms-circle-loader').fadeOut('fast', function() {
|
52 |
-
$('#wpforms-tabs').fadeIn('fast');
|
53 |
-
$('.wpforms-circle-loader').remove();
|
54 |
-
|
55 |
-
// Scroll to the integration if focused on one
|
56 |
-
if ( s.integrationFocus ) {
|
57 |
-
$('body').animate({
|
58 |
-
scrollTop: $('#wpforms-integration-'+s.integrationFocus).offset().top
|
59 |
-
}, 1000);
|
60 |
-
} else if ( s.jumpTo ) {
|
61 |
-
$('body').animate({
|
62 |
-
scrollTop: $('#'+s.jumpTo).offset().top
|
63 |
-
}, 1000);
|
64 |
-
}
|
65 |
-
});
|
66 |
-
|
67 |
-
// Load color pickers
|
68 |
-
$('.wpforms-color-picker').minicolors();
|
69 |
-
},
|
70 |
-
|
71 |
-
/**
|
72 |
-
* Element bindings.
|
73 |
-
*
|
74 |
-
* @since 1.0.0
|
75 |
-
*/
|
76 |
-
bindUIActions: function() {
|
77 |
-
|
78 |
-
// Change tabs on click.
|
79 |
-
$(document).on('click', '#wpforms-tabs-nav a', function(e){
|
80 |
-
e.preventDefault();
|
81 |
-
|
82 |
-
var $this = $(this);
|
83 |
-
if ( $this.hasClass('wpforms-active') ) {
|
84 |
-
return;
|
85 |
-
} else {
|
86 |
-
window.location.hash = s.tabs_hash = this.hash.split('#').join('#!');
|
87 |
-
var current = s.tabs_nav.find('.wpforms-active').removeClass('wpforms-active nav-tab-active').attr('href');
|
88 |
-
$this.addClass('wpforms-active nav-tab-active');
|
89 |
-
s.tabs.find(current).removeClass('wpforms-active').hide();
|
90 |
-
s.tabs.find($this.attr('href')).addClass('wpforms-active').show();
|
91 |
-
}
|
92 |
-
});
|
93 |
-
|
94 |
-
// Integrations tab accounts toggle
|
95 |
-
$(document).on('click', '.wpforms-settings-provider-header', function(e) {
|
96 |
-
e.preventDefault();
|
97 |
-
$(this).parent().find('.wpforms-settings-provider-accounts').slideToggle();
|
98 |
-
$(this).parent().find('.wpforms-settings-provider-logo i').toggleClass('fa-chevron-right fa-chevron-down');
|
99 |
-
});
|
100 |
-
|
101 |
-
$(document).on('click', '.wpforms-settings-provider-accounts-toggle a', function(e) {
|
102 |
-
e.preventDefault();
|
103 |
-
var $connectFields = $(this).parent().next('.wpforms-settings-provider-accounts-connect');
|
104 |
-
$connectFields.find('input[type=text], input[type=password]').val('');
|
105 |
-
$connectFields.slideToggle();
|
106 |
-
});
|
107 |
-
|
108 |
-
$(document).on('click', '.wpforms-settings-provider-accounts-list a', function(e) {
|
109 |
-
e.preventDefault();
|
110 |
-
|
111 |
-
var $this = $(this),
|
112 |
-
r = confirm(wpforms_settings.provider_disconnect);
|
113 |
-
|
114 |
-
if ( r != true ) {
|
115 |
-
return false;
|
116 |
-
}
|
117 |
-
|
118 |
-
var data = {
|
119 |
-
action : 'wpforms_settings_provider_disconnect',
|
120 |
-
provider: $this.data('provider'),
|
121 |
-
key : $this.data('key'),
|
122 |
-
nonce : wpforms_settings.nonce
|
123 |
-
}
|
124 |
-
$.post(wpforms_settings.ajax_url, data, function(res) {
|
125 |
-
if (res.success){
|
126 |
-
$this.parent().remove();
|
127 |
-
} else {
|
128 |
-
console.log(res);
|
129 |
-
}
|
130 |
-
}).fail(function(xhr, textStatus, e) {
|
131 |
-
console.log(xhr.responseText);
|
132 |
-
});
|
133 |
-
});
|
134 |
-
|
135 |
-
$(document).on('click', '.wpforms-settings-provider-connect', function(e) {
|
136 |
-
e.preventDefault();
|
137 |
-
var $this = $(this),
|
138 |
-
$icon = $this.parent().find('i'),
|
139 |
-
text = $this.text(),
|
140 |
-
$provider = $this.closest('.wpforms-settings-provider');
|
141 |
-
|
142 |
-
$this.text(wpforms_settings.saving);
|
143 |
-
$icon.show();
|
144 |
-
|
145 |
-
var data = {
|
146 |
-
action : 'wpforms_settings_provider_add',
|
147 |
-
data : $(this).closest('form').serialize(),
|
148 |
-
provider: $this.data('provider'),
|
149 |
-
nonce : wpforms_settings.nonce
|
150 |
-
}
|
151 |
-
$.post(wpforms_settings.ajax_url, data, function(res) {
|
152 |
-
if (res.success) {
|
153 |
-
$this.text(text);
|
154 |
-
$provider.find('.wpforms-settings-provider-accounts-list ul').append(res.data.html);
|
155 |
-
$provider.addClass('connected');
|
156 |
-
$this.closest('.wpforms-settings-provider-accounts-connect').slideToggle();
|
157 |
-
} else {
|
158 |
-
console.log(res);
|
159 |
-
var msg = 'Could not authenticate with the provider.';
|
160 |
-
if ( res.data.error_msg ) {
|
161 |
-
msg = msg+"\n"+res.data.error_msg;
|
162 |
-
}
|
163 |
-
alert( msg );
|
164 |
-
}
|
165 |
-
$this.text(text);
|
166 |
-
$icon.hide();
|
167 |
-
}).fail(function(xhr, textStatus, e) {
|
168 |
-
console.log(xhr.responseText);
|
169 |
-
});
|
170 |
-
});
|
171 |
-
|
172 |
-
// Image uploader
|
173 |
-
$(document).on('click', '.wpforms-settings-upload-image', function(e){
|
174 |
-
|
175 |
-
e.preventDefault();
|
176 |
-
|
177 |
-
var $setting = $(this).closest('td');
|
178 |
-
|
179 |
-
if ( s.media_frame ) {
|
180 |
-
s.media_frame.open();
|
181 |
-
return;
|
182 |
-
}
|
183 |
-
|
184 |
-
s.media_frame = wp.media.frames.wpforms_media_frame = wp.media({
|
185 |
-
className: 'media-frame wpforms-media-frame',
|
186 |
-
frame: 'select',
|
187 |
-
multiple: false,
|
188 |
-
title: wpforms_settings.upload_title,
|
189 |
-
library: {
|
190 |
-
type: 'image'
|
191 |
-
},
|
192 |
-
button: {
|
193 |
-
text: wpforms_settings.upload_button
|
194 |
-
}
|
195 |
-
});
|
196 |
-
|
197 |
-
s.media_frame.on('select', function(){
|
198 |
-
// Grab our attachment selection and construct a JSON representation of the model.
|
199 |
-
var media_attachment = s.media_frame.state().get('selection').first().toJSON();
|
200 |
-
|
201 |
-
// Send the attachment URL to our custom input field via jQuery.
|
202 |
-
$setting.find('.wpforms-settings-upload-image-value').val(media_attachment.url);
|
203 |
-
$setting.find('.wpforms-settings-upload-image-display').empty().append('<img src="'+media_attachment.url+'">');
|
204 |
-
});
|
205 |
-
|
206 |
-
// Now that everything has been set, let's open up the frame.
|
207 |
-
s.media_frame.open();
|
208 |
-
})
|
209 |
-
},
|
210 |
-
|
211 |
-
/**
|
212 |
-
* Get query string in a URL.
|
213 |
-
*
|
214 |
-
* @since 1.3.6
|
215 |
-
*/
|
216 |
-
getQueryString: function(name) {
|
217 |
-
|
218 |
-
var match = RegExp('[?&]' + name + '=([^&]*)').exec(window.location.search);
|
219 |
-
return match && decodeURIComponent(match[1].replace(/\+/g, ' '));
|
220 |
-
},
|
221 |
-
}
|
222 |
-
|
223 |
-
WPFormsSettings.init();
|
224 |
-
})(jQuery);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
assets/js/admin.min.js
ADDED
@@ -0,0 +1 @@
|
|
|
1 |
+
!function(e){"use strict";var t,n={settings:{iconActivate:'<i class="fa fa-toggle-on fa-flip-horizontal" aria-hidden="true"></i>',iconDeactivate:'<i class="fa fa-toggle-on" aria-hidden="true"></i>',iconInstall:'<i class="fa fa-cloud-download" aria-hidden="true"></i>',iconSpinner:'<i class="fa fa-spinner fa-spin" aria-hidden="true"></i>',mediaFrame:!1},init:function(){t=this.settings,e(document).ready(n.ready),n.initFormOverview(),n.initEntriesSingle(),n.initEntriesList(),n.initWelcome(),n.initAddons(),n.initSettings()},ready:function(){e(".notice").show(),e("#screen-meta-links, #screen-meta").prependTo("#wpforms-header-temp").show(),e(".choicesjs-select").each(function(){var t=e(this),n={searchEnabled:!1};t.attr("multiple")&&(n.searchEnabled=!0,n.removeItemButton=!0),t.data("placeholder")&&(n.placeholderValue=t.data("placeholder")),t.data("search")&&(n.searchEnabled=!0),new Choices(t[0],n)}),e(".wpforms-color-picker").minicolors(),e(".wpforms-file-upload").each(function(){var t=e(this).find("input[type=file]"),n=e(this).find("label"),i=n.html();t.on("change",function(e){var t="";this.files&&this.files.length>1?t=(this.getAttribute("data-multiple-caption")||"").replace("{count}",this.files.length):e.target.value&&(t=e.target.value.split("\\").pop()),t?n.find(".fld").html(t):n.html(i)}),t.on("focus",function(){t.addClass("has-focus")}).on("blur",function(){t.removeClass("has-focus")})}),jconfirm.defaults={closeIcon:!0,backgroundDismiss:!0,escapeKey:!0,animationBounce:1,useBootstrap:!1,theme:"modern",boxWidth:"400px"},e(document).trigger("wpformsReady")},initFormOverview:function(){e(document).on("click","#wpforms-overview .wp-list-table .delete a, #wpforms-overview .wp-list-table .duplicate a",function(t){t.preventDefault();var n=e(this).attr("href"),i=e(this).parent().hasClass("delete")?wpforms_admin.form_delete_confirm:wpforms_admin.form_duplicate_confirm;e.confirm({title:!1,content:i,backgroundDismiss:!1,closeIcon:!1,icon:"fa fa-exclamation-circle",type:"orange",buttons:{confirm:{text:wpforms_admin.ok,btnClass:"btn-confirm",keys:["enter"],action:function(){window.location=n}},cancel:{text:wpforms_admin.cancel}}})})},initEntriesSingle:function(){e(document).on("click","#wpforms-entries-single .submitdelete",function(t){t.preventDefault();var n=e(this).attr("href");e.confirm({title:!1,content:wpforms_admin.entry_delete_confirm,backgroundDismiss:!1,closeIcon:!1,icon:"fa fa-exclamation-circle",type:"orange",buttons:{confirm:{text:wpforms_admin.ok,btnClass:"btn-confirm",keys:["enter"],action:function(){window.location=n}},cancel:{text:wpforms_admin.cancel}}})}),e(document).on("click","#wpforms-entries-single .wpforms-entry-print a",function(t){t.preventDefault(),window.open(e(this).attr("href"))}),e(document).on("click","#wpforms-entries-single .wpforms-empty-field-toggle",function(t){t.preventDefault(),"true"==wpCookies.get("wpforms_entry_hide_empty")?(wpCookies.remove("wpforms_entry_hide_empty"),e(this).text(wpforms_admin.entry_empty_fields_hide)):(wpCookies.set("wpforms_entry_hide_empty","true",2592e3),e(this).text(wpforms_admin.entry_empty_fields_show)),e(".wpforms-entry-field.empty").toggle()}),e(document).on("click","#wpforms-entries-single .wpforms-entry-notes-new .add",function(t){t.preventDefault(),e(this).hide().next("form").slideToggle()}),e(document).on("click","#wpforms-entries-single .wpforms-entry-notes-new .cancel",function(t){t.preventDefault(),e(this).closest("form").slideToggle(),e(".wpforms-entry-notes-new .add").show()}),e(document).on("click","#wpforms-entries-single .wpforms-entry-notes-byline .note-delete",function(t){t.preventDefault();var n=e(this).attr("href");e.confirm({title:!1,content:wpforms_admin.entry_note_delete_confirm,backgroundDismiss:!1,closeIcon:!1,icon:"fa fa-exclamation-circle",type:"orange",buttons:{confirm:{text:wpforms_admin.ok,btnClass:"btn-confirm",keys:["enter"],action:function(){window.location=n}},cancel:{text:wpforms_admin.cancel}}})})},initEntriesList:function(){e(document).on("click","#wpforms-entries-list .form-selector .toggle",function(t){t.preventDefault(),e(this).toggleClass("active").next(".form-list").toggle()}),e(document).on("click","#wpforms-entries-list .wp-list-table .delete",function(t){t.preventDefault();var n=e(this).attr("href");e.confirm({title:!1,content:wpforms_admin.entry_delete_confirm,backgroundDismiss:!1,closeIcon:!1,icon:"fa fa-exclamation-circle",type:"orange",buttons:{confirm:{text:wpforms_admin.ok,btnClass:"btn-confirm",keys:["enter"],action:function(){window.location=n}},cancel:{text:wpforms_admin.cancel}}})}),e(document).on("click","#wpforms-entries-list .wp-list-table .indicator-star",function(t){t.preventDefault();var n=e(this),i="",o=Number(e("#wpforms-entries-list .starred-num").text()),s=n.data("id");n.hasClass("star")?(i="star",o++,n.attr("title",wpforms_admin.entry_unstar)):(i="unstar",o--,n.attr("title",wpforms_admin.entry_star)),n.toggleClass("star unstar"),e("#wpforms-entries-list .starred-num").text(o);var a={task:i,action:"wpforms_entry_list_star",nonce:wpforms_admin.nonce,entry_id:s};e.post(wpforms_admin.ajax_url,a)}),e(document).on("click","#wpforms-entries-list .wp-list-table .indicator-read",function(t){t.preventDefault();var n=e(this),i="",o=Number(e("#wpforms-entries-list .unread-num").text()),s=n.data("id");n.hasClass("read")?(i="read",o--,n.attr("title",wpforms_admin.entry_unread)):(i="unread",o++,n.attr("title",wpforms_admin.entry_read)),n.toggleClass("read unread"),e("#wpforms-entries-list .unread-num").text(o);var a={task:i,action:"wpforms_entry_list_read",nonce:wpforms_admin.nonce,entry_id:s};e.post(wpforms_admin.ajax_url,a)})},initWelcome:function(){e(document).on("click","#wpforms-welcome .play-video",function(t){t.preventDefault();e.dialog({title:!1,content:'<div class="video-container"><iframe width="1280" height="720" src="https://www.youtube-nocookie.com/embed/yDyvSGV7tP4?rel=0&showinfo=0&autoplay=1" frameborder="0" allowfullscreen></iframe></div>',closeIcon:!0,boxWidth:"70%"})})},initAddons:function(){e(document).on("wpformsReady",function(){e("#wpforms-admin-addons").length&&e(".addon-item .details").matchHeight({byrow:!1,property:"min-height"})}),e(document).on("click","#wpforms-admin-addons .addon-item button",function(t){t.preventDefault(),n.addonToggle(e(this))})},addonToggle:function(n){var i,o,s,a,r,c=e(n),l=c.closest(".addon-item"),d=c.attr("data-plugin");if(c.prop("disabled",!0).addClass("loading"),c.html(t.iconSpinner),c.hasClass("status-active"))i="wpforms_deactivate_addon",o="status-inactive",s=wpforms_admin.addon_inactive,a=t.iconActivate+wpforms_admin.addon_activate,r=t.iconDeactivate+wpforms_admin.addon_deactivate;else if(c.hasClass("status-inactive"))i="wpforms_activate_addon",o="status-active",s=wpforms_admin.addon_active,a=t.iconDeactivate+wpforms_admin.addon_deactivate,r=t.iconActivate+wpforms_admin.addon_activate;else{if(!c.hasClass("status-download"))return;i="wpforms_install_addon",o="status-inactive",s=wpforms_admin.addon_inactive,a=t.iconActivate+wpforms_admin.addon_activate,r=t.iconInstall+wpforms_admin.addon_install}var m={action:i,nonce:wpforms_admin.nonce,plugin:d};e.post(wpforms_admin.ajax_url,m,function(t){if(t.success){if("wpforms_install_addon"===i){c.attr("data-plugin",t.data.basename);n=t.data.msg}else var n=t.data;l.find(".actions").append('<div class="msg success">'+n+"</div>"),l.find("span.status-label").removeClass("status-active status-inactive status-download").addClass(o).text(s),c.removeClass("status-active status-inactive status-download").addClass(o).html(a)}else l.find(".actions").append('<div class="msg error">'+t.data+"</div>"),c.html(r);c.prop("disabled",!1).removeClass("loading"),setTimeout(function(){e(".addon-item .msg").remove()},3e3)}).fail(function(e){console.log(e.responseText)})},initSettings:function(){e(document).on("wpformsReady",function(){if(e("#wpforms-settings").length){var t=n.getQueryString("wpforms-integration"),i=n.getQueryString("jump");t?e("body").animate({scrollTop:e("#wpforms-integration-"+t).offset().top},1e3):i&&e("body").animate({scrollTop:e("#"+i).offset().top},1e3)}}),e(document).on("click",".wpforms-setting-row-image button",function(t){t.preventDefault(),n.imageUploadModal(e(this))}),e(document).on("click","#wpforms-setting-license-key-verify",function(t){t.preventDefault(),n.licenseVerify(e(this))}),e(document).on("click","#wpforms-setting-license-key-deactivate",function(t){t.preventDefault(),n.licenseDeactivate(e(this))}),e(document).on("click","#wpforms-setting-license-key-refresh",function(t){t.preventDefault(),n.licenseRefresh(e(this))}),e(document).on("click",".wpforms-settings-provider-connect",function(t){t.preventDefault(),n.integrationConnect(e(this))}),e(document).on("click",".wpforms-settings-provider-accounts-list a",function(t){t.preventDefault(),n.integrationDisconnect(e(this))}),e(document).on("click",".wpforms-settings-provider-header",function(t){t.preventDefault(),e(this).parent().find(".wpforms-settings-provider-accounts").slideToggle(),e(this).parent().find(".wpforms-settings-provider-logo i").toggleClass("fa-chevron-right fa-chevron-down")}),e(document).on("click",".wpforms-settings-provider-accounts-toggle a",function(t){t.preventDefault();var n=e(this).parent().next(".wpforms-settings-provider-accounts-connect");n.find("input[type=text], input[type=password]").val(""),n.slideToggle()})},imageUploadModal:function(n){if(t.media_frame)t.media_frame.open();else{var i=e(n).closest(".wpforms-setting-field");t.media_frame=wp.media.frames.wpforms_media_frame=wp.media({className:"media-frame wpforms-media-frame",frame:"select",multiple:!1,title:wpforms_admin.upload_image_title,library:{type:"image"},button:{text:wpforms_admin.upload_image_button}}),t.media_frame.on("select",function(){var e=t.media_frame.state().get("selection").first().toJSON();i.find("input[type=text]").val(e.url),i.find("img").remove(),i.prepend('<img src="'+e.url+'">')}),t.media_frame.open()}},licenseVerify:function(n){var i=e(n),o=i.closest(".wpforms-setting-row"),s=i.outerWidth(),a=i.text(),r={action:"wpforms_verify_license",nonce:wpforms_admin.nonce,license:e("#wpforms-setting-license-key").val()};i.html(t.iconSpinner).css("width",s).prop("disabled",!0),e.post(wpforms_admin.ajax_url,r,function(t){var n,s="fa fa-check-circle",r="green";t.success?(n=t.data.msg,o.find(".type, .desc, #wpforms-setting-license-key-deactivate").show(),o.find(".type strong").text(t.data.type),e(".wpforms-license-notice").remove()):(s="fa fa-exclamation-circle",r="orange",n=t.data,o.find(".type, .desc, #wpforms-setting-license-key-deactivate").hide()),e.alert({title:!1,content:n,icon:s,type:r,buttons:{confirm:{text:wpforms_admin.ok,btnClass:"btn-confirm",keys:["enter"]}}}),i.html(a).css("width","auto").prop("disabled",!1)}).fail(function(e){console.log(e.responseText)})},licenseDeactivate:function(n){var i=e(n),o=i.closest(".wpforms-setting-row"),s=i.outerWidth(),a=i.text(),r={action:"wpforms_deactivate_license",nonce:wpforms_admin.nonce};i.html(t.iconSpinner).css("width",s).prop("disabled",!0),e.post(wpforms_admin.ajax_url,r,function(t){var n="fa fa-info-circle",s="blue",r=t.data;t.success?(o.find("#wpforms-setting-license-key").val(""),o.find(".type, .desc, #wpforms-setting-license-key-deactivate").hide()):(n="fa fa-exclamation-circle",s="orange"),e.alert({title:!1,content:r,icon:n,type:s,buttons:{confirm:{text:wpforms_admin.ok,btnClass:"btn-confirm",keys:["enter"]}}}),i.html(a).css("width","auto").prop("disabled",!1)}).fail(function(e){console.log(e.responseText)})},licenseRefresh:function(t){var n=e(t).closest(".wpforms-setting-row"),i={action:"wpforms_refresh_license",nonce:wpforms_admin.nonce,license:e("#wpforms-setting-license-key").val()};e.post(wpforms_admin.ajax_url,i,function(t){var i,o="fa fa-check-circle",s="green";t.success?(i=t.data.msg,n.find(".type strong").text(t.data.type)):(o="fa fa-exclamation-circle",s="orange",i=t.data,n.find(".type, .desc, #wpforms-setting-license-key-deactivate").hide()),e.alert({title:!1,content:i,icon:o,type:s,buttons:{confirm:{text:wpforms_admin.ok,btnClass:"btn-confirm",keys:["enter"]}}})}).fail(function(e){console.log(e.responseText)})},integrationConnect:function(t){var n=e(t),i=n.outerWidth(),o=n.text(),s=n.closest(".wpforms-settings-provider"),a={action:"wpforms_settings_provider_add",data:n.closest("form").serialize(),provider:n.data("provider"),nonce:wpforms_admin.nonce};n.html("Connecting...").css("width",i).prop("disabled",!0),e.post(wpforms_admin.ajax_url,a,function(t){if(t.success)s.find(".wpforms-settings-provider-accounts-list ul").append(t.data.html),s.addClass("connected"),n.closest(".wpforms-settings-provider-accounts-connect").slideToggle();else{var i=wpforms_admin.provider_auth_error;t.data.error_msg&&(i+="\n"+t.data.error_msg),e.alert({title:!1,content:i,icon:"fa fa-exclamation-circle",type:"orange",buttons:{confirm:{text:wpforms_admin.ok,btnClass:"btn-confirm",keys:["enter"]}}}),console.log(t)}n.html(o).css("width","auto").prop("disabled",!1)}).fail(function(e){console.log(e.responseText)})},integrationDisconnect:function(t){var n=e(t),i={action:"wpforms_settings_provider_disconnect",provider:n.data("provider"),key:n.data("key"),nonce:wpforms_admin.nonce};e.confirm({title:wpforms_admin.heads_up,content:wpforms_admin.provider_delete_confirm,backgroundDismiss:!1,closeIcon:!1,icon:"fa fa-exclamation-circle",type:"orange",buttons:{confirm:{text:wpforms_admin.ok,btnClass:"btn-confirm",keys:["enter"],action:function(){e.post(wpforms_admin.ajax_url,i,function(e){e.success?n.parent().remove():console.log(e)}).fail(function(e){console.log(e.responseText)})}},cancel:{text:wpforms_admin.cancel,keys:["esc"]}}})},getQueryString:function(e){var t=new RegExp("[?&]"+e+"=([^&]*)").exec(window.location.search);return t&&decodeURIComponent(t[1].replace(/\+/g," "))}};n.init()}(jQuery);
|
assets/js/choices.min.js
ADDED
@@ -0,0 +1,4 @@
|
|
|
|
|
|
|
|
|
1 |
+
/*! choices.js v2.8.10 | (c) 2017 Josh Johnson | https://github.com/jshjohnson/Choices#readme */
|
2 |
+
!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports.Choices=t():e.Choices=t()}(this,function(){return function(e){function t(n){if(i[n])return i[n].exports;var s=i[n]={exports:{},id:n,loaded:!1};return e[n].call(s.exports,s,s.exports,t),s.loaded=!0,s.exports}var i={};return t.m=e,t.c=i,t.p="/assets/scripts/dist/",t(0)}([function(e,t,i){e.exports=i(1)},function(e,t,i){"use strict";function n(e){return e&&e.__esModule?e:{default:e}}function s(e,t,i){return t in e?Object.defineProperty(e,t,{value:i,enumerable:!0,configurable:!0,writable:!0}):e[t]=i,e}function o(e){if(Array.isArray(e)){for(var t=0,i=Array(e.length);t<e.length;t++)i[t]=e[t];return i}return Array.from(e)}function r(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}var a=function(){function e(e,t){for(var i=0;i<t.length;i++){var n=t[i];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}return function(t,i,n){return i&&e(t.prototype,i),n&&e(t,n),t}}(),c=i(2),l=n(c),u=i(3),h=n(u),d=i(4),f=n(d),p=i(30),v=i(31);i(32);var m=function(){function e(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"[data-choice]",i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(r(this,e),(0,v.isType)("String",t)){var n=document.querySelectorAll(t);if(n.length>1)for(var s=1;s<n.length;s++){var o=n[s];new e(o,i)}}var a={silent:!1,items:[],choices:[],maxItemCount:-1,addItems:!0,removeItems:!0,removeItemButton:!1,editItems:!1,duplicateItems:!0,delimiter:",",paste:!0,searchEnabled:!0,searchChoices:!0,searchFloor:1,searchResultLimit:4,searchFields:["label","value"],position:"auto",resetScrollPosition:!0,regexFilter:null,shouldSort:!0,shouldSortItems:!1,sortFilter:v.sortByAlpha,placeholder:!0,placeholderValue:null,prependValue:null,appendValue:null,renderSelectedChoices:"auto",loadingText:"Loading...",noResultsText:"No results found",noChoicesText:"No choices to choose from",itemSelectText:"Press to select",addItemText:function(e){return'Press Enter to add <b>"'+e+'"</b>'},maxItemText:function(e){return"Only "+e+" values can be added."},uniqueItemText:"Only unique values can be added.",classNames:{containerOuter:"choices",containerInner:"choices__inner",input:"choices__input",inputCloned:"choices__input--cloned",list:"choices__list",listItems:"choices__list--multiple",listSingle:"choices__list--single",listDropdown:"choices__list--dropdown",item:"choices__item",itemSelectable:"choices__item--selectable",itemDisabled:"choices__item--disabled",itemChoice:"choices__item--choice",placeholder:"choices__placeholder",group:"choices__group",groupHeading:"choices__heading",button:"choices__button",activeState:"is-active",focusState:"is-focused",openState:"is-open",disabledState:"is-disabled",highlightedState:"is-highlighted",hiddenState:"is-hidden",flippedState:"is-flipped",loadingState:"is-loading"},fuseOptions:{include:"score"},callbackOnInit:null,callbackOnCreateTemplates:null};if(this.idNames={itemChoice:"item-choice"},this.config=(0,v.extend)(a,i),"auto"!==this.config.renderSelectedChoices&&"always"!==this.config.renderSelectedChoices&&(this.config.silent||console.warn("renderSelectedChoices: Possible values are 'auto' and 'always'. Falling back to 'auto'."),this.config.renderSelectedChoices="auto"),this.store=new f.default(this.render),this.initialised=!1,this.currentState={},this.prevState={},this.currentValue="",this.element=t,this.passedElement=(0,v.isType)("String",t)?document.querySelector(t):t,this.isTextElement="text"===this.passedElement.type,this.isSelectOneElement="select-one"===this.passedElement.type,this.isSelectMultipleElement="select-multiple"===this.passedElement.type,this.isSelectElement=this.isSelectOneElement||this.isSelectMultipleElement,this.isValidElementType=this.isTextElement||this.isSelectElement,!this.passedElement)return void(this.config.silent||console.error("Passed element not found"));this.config.shouldSortItems===!0&&this.isSelectOneElement&&(this.config.silent||console.warn("shouldSortElements: Type of passed element is 'select-one', falling back to false.")),this.highlightPosition=0,this.canSearch=this.config.searchEnabled,this.presetChoices=this.config.choices,this.presetItems=this.config.items,this.passedElement.value&&(this.presetItems=this.presetItems.concat(this.passedElement.value.split(this.config.delimiter))),this.baseId=(0,v.generateId)(this.passedElement,"choices-"),this.render=this.render.bind(this),this._onFocus=this._onFocus.bind(this),this._onBlur=this._onBlur.bind(this),this._onKeyUp=this._onKeyUp.bind(this),this._onKeyDown=this._onKeyDown.bind(this),this._onClick=this._onClick.bind(this),this._onTouchMove=this._onTouchMove.bind(this),this._onTouchEnd=this._onTouchEnd.bind(this),this._onMouseDown=this._onMouseDown.bind(this),this._onMouseOver=this._onMouseOver.bind(this),this._onPaste=this._onPaste.bind(this),this._onInput=this._onInput.bind(this),this.wasTap=!0;var c="classList"in document.documentElement;c||this.config.silent||console.error("Choices: Your browser doesn't support Choices");var l=(0,v.isElement)(this.passedElement)&&this.isValidElementType;if(l){if("active"===this.passedElement.getAttribute("data-choice"))return;this.init()}else this.config.silent||console.error("Incompatible input passed")}return a(e,[{key:"init",value:function(){if(this.initialised!==!0){var e=this.config.callbackOnInit;this.initialised=!0,this._createTemplates(),this._createInput(),this.store.subscribe(this.render),this.render(),this._addEventListeners(),e&&(0,v.isType)("Function",e)&&e.call(this)}}},{key:"destroy",value:function(){if(this.initialised!==!1){this._removeEventListeners(),this.passedElement.classList.remove(this.config.classNames.input,this.config.classNames.hiddenState),this.passedElement.removeAttribute("tabindex");var e=this.passedElement.getAttribute("data-choice-orig-style");Boolean(e)?(this.passedElement.removeAttribute("data-choice-orig-style"),this.passedElement.setAttribute("style",e)):this.passedElement.removeAttribute("style"),this.passedElement.removeAttribute("aria-hidden"),this.passedElement.removeAttribute("data-choice"),this.passedElement.value=this.passedElement.value,this.containerOuter.parentNode.insertBefore(this.passedElement,this.containerOuter),this.containerOuter.parentNode.removeChild(this.containerOuter),this.clearStore(),this.config.templates=null,this.initialised=!1}}},{key:"renderGroups",value:function(e,t,i){var n=this,s=i||document.createDocumentFragment(),o=this.config.sortFilter;return this.config.shouldSort&&e.sort(o),e.forEach(function(e){var i=t.filter(function(t){return n.isSelectOneElement?t.groupId===e.id:t.groupId===e.id&&!t.selected});if(i.length>=1){var o=n._getTemplate("choiceGroup",e);s.appendChild(o),n.renderChoices(i,s)}}),s}},{key:"renderChoices",value:function(e,t){var i=this,n=t||document.createDocumentFragment(),s=this.isSearching?v.sortByScore:this.config.sortFilter,o=this.config.renderSelectedChoices,r=function(e){var t="auto"!==o||(i.isSelectOneElement||!e.selected);if(t){var s=i._getTemplate("choice",e);n.appendChild(s)}};if((this.config.shouldSort||this.isSearching)&&e.sort(s),this.isSearching)for(var a=0;a<this.config.searchResultLimit;a++){var c=e[a];c&&r(c)}else e.forEach(function(e){return r(e)});return n}},{key:"renderItems",value:function(e){var t=this,i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null,n=i||document.createDocumentFragment();if(this.config.shouldSortItems&&!this.isSelectOneElement&&e.sort(this.config.sortFilter),this.isTextElement){var s=this.store.getItemsReducedToValues(e),o=s.join(this.config.delimiter);this.passedElement.setAttribute("value",o),this.passedElement.value=o}else{var r=document.createDocumentFragment();e.forEach(function(e){var i=t._getTemplate("option",e);r.appendChild(i)}),this.passedElement.innerHTML="",this.passedElement.appendChild(r)}return e.forEach(function(e){var i=t._getTemplate("item",e);n.appendChild(i)}),n}},{key:"render",value:function(){if(this.currentState=this.store.getState(),this.currentState!==this.prevState){if((this.currentState.choices!==this.prevState.choices||this.currentState.groups!==this.prevState.groups)&&this.isSelectElement){var e=this.store.getGroupsFilteredByActive(),t=this.store.getChoicesFilteredByActive(),i=document.createDocumentFragment();this.choiceList.innerHTML="",this.config.resetScrollPosition&&(this.choiceList.scrollTop=0),e.length>=1&&this.isSearching!==!0?i=this.renderGroups(e,t,i):t.length>=1&&(i=this.renderChoices(t,i));var n=this.store.getItemsFilteredByActive(),s=this._canAddItem(n,this.input.value);if(i.childNodes&&i.childNodes.length>0)s.response?(this.choiceList.appendChild(i),this._highlightChoice()):this.choiceList.appendChild(this._getTemplate("notice",s.notice));else{var o=void 0,r=void 0;this.isSearching?(r=(0,v.isType)("Function",this.config.noResultsText)?this.config.noResultsText():this.config.noResultsText,o=this._getTemplate("notice",r)):(r=(0,v.isType)("Function",this.config.noChoicesText)?this.config.noChoicesText():this.config.noChoicesText,o=this._getTemplate("notice",r)),this.choiceList.appendChild(o)}}if(this.currentState.items!==this.prevState.items){var a=this.store.getItemsFilteredByActive();if(a){var c=this.renderItems(a);this.itemList.innerHTML="",c.childNodes&&this.itemList.appendChild(c)}}this.prevState=this.currentState}}},{key:"highlightItem",value:function(e){var t=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];if(!e)return this;var i=e.id,n=e.groupId,s=n>=0?this.store.getGroupById(n):null;return this.store.dispatch((0,p.highlightItem)(i,!0)),t&&(s&&s.value?(0,v.triggerEvent)(this.passedElement,"highlightItem",{id:i,value:e.value,label:e.label,groupValue:s.value}):(0,v.triggerEvent)(this.passedElement,"highlightItem",{id:i,value:e.value,label:e.label})),this}},{key:"unhighlightItem",value:function(e){if(!e)return this;var t=e.id,i=e.groupId,n=i>=0?this.store.getGroupById(i):null;return this.store.dispatch((0,p.highlightItem)(t,!1)),n&&n.value?(0,v.triggerEvent)(this.passedElement,"unhighlightItem",{id:t,value:e.value,label:e.label,groupValue:n.value}):(0,v.triggerEvent)(this.passedElement,"unhighlightItem",{id:t,value:e.value,label:e.label}),this}},{key:"highlightAll",value:function(){var e=this,t=this.store.getItems();return t.forEach(function(t){e.highlightItem(t)}),this}},{key:"unhighlightAll",value:function(){var e=this,t=this.store.getItems();return t.forEach(function(t){e.unhighlightItem(t)}),this}},{key:"removeItemsByValue",value:function(e){var t=this;if(!e||!(0,v.isType)("String",e))return this;var i=this.store.getItemsFilteredByActive();return i.forEach(function(i){i.value===e&&t._removeItem(i)}),this}},{key:"removeActiveItems",value:function(e){var t=this,i=this.store.getItemsFilteredByActive();return i.forEach(function(i){i.active&&e!==i.id&&t._removeItem(i)}),this}},{key:"removeHighlightedItems",value:function(){var e=this,t=arguments.length>0&&void 0!==arguments[0]&&arguments[0],i=this.store.getItemsFilteredByActive();return i.forEach(function(i){i.highlighted&&i.active&&(e._removeItem(i),t&&e._triggerChange(i.value))}),this}},{key:"showDropdown",value:function(){var e=arguments.length>0&&void 0!==arguments[0]&&arguments[0],t=document.body,i=document.documentElement,n=Math.max(t.scrollHeight,t.offsetHeight,i.clientHeight,i.scrollHeight,i.offsetHeight);this.containerOuter.classList.add(this.config.classNames.openState),this.containerOuter.setAttribute("aria-expanded","true"),this.dropdown.classList.add(this.config.classNames.activeState),this.dropdown.setAttribute("aria-expanded","true");var s=this.dropdown.getBoundingClientRect(),o=Math.ceil(s.top+window.scrollY+this.dropdown.offsetHeight),r=!1;return"auto"===this.config.position?r=o>=n:"top"===this.config.position&&(r=!0),r&&this.containerOuter.classList.add(this.config.classNames.flippedState),e&&this.canSearch&&document.activeElement!==this.input&&this.input.focus(),(0,v.triggerEvent)(this.passedElement,"showDropdown",{}),this}},{key:"hideDropdown",value:function(){var e=arguments.length>0&&void 0!==arguments[0]&&arguments[0],t=this.containerOuter.classList.contains(this.config.classNames.flippedState);return this.containerOuter.classList.remove(this.config.classNames.openState),this.containerOuter.setAttribute("aria-expanded","false"),this.dropdown.classList.remove(this.config.classNames.activeState),this.dropdown.setAttribute("aria-expanded","false"),t&&this.containerOuter.classList.remove(this.config.classNames.flippedState),e&&this.canSearch&&document.activeElement===this.input&&this.input.blur(),(0,v.triggerEvent)(this.passedElement,"hideDropdown",{}),this}},{key:"toggleDropdown",value:function(){var e=this.dropdown.classList.contains(this.config.classNames.activeState);return e?this.hideDropdown():this.showDropdown(!0),this}},{key:"getValue",value:function(){var e=this,t=arguments.length>0&&void 0!==arguments[0]&&arguments[0],i=this.store.getItemsFilteredByActive(),n=[];return i.forEach(function(i){e.isTextElement?n.push(t?i.value:i):i.active&&n.push(t?i.value:i)}),this.isSelectOneElement?n[0]:n}},{key:"setValue",value:function(e){var t=this;if(this.initialised===!0){var i=[].concat(o(e)),n=function(e){var i=(0,v.getType)(e);if("Object"===i){if(!e.value)return;t.isTextElement?t._addItem(e.value,e.label,e.id,void 0,e.customProperties,null):t._addChoice(e.value,e.label,!0,!1,-1,e.customProperties,null)}else"String"===i&&(t.isTextElement?t._addItem(e):t._addChoice(e,e,!0,!1,-1,null))};i.length>1?i.forEach(function(e){n(e)}):n(i[0])}return this}},{key:"setValueByChoice",value:function(e){var t=this;if(!this.isTextElement){var i=this.store.getChoices(),n=(0,v.isType)("Array",e)?e:[e];n.forEach(function(e){var n=i.find(function(t){return t.value===e});n?n.selected?t.config.silent||console.warn("Attempting to select choice already selected"):t._addItem(n.value,n.label,n.id,n.groupId,n.customProperties,n.keyCode):t.config.silent||console.warn("Attempting to select choice that does not exist")})}return this}},{key:"setChoices",value:function(e,t,i){var n=this,s=arguments.length>3&&void 0!==arguments[3]&&arguments[3];if(this.initialised===!0&&this.isSelectElement){if(!(0,v.isType)("Array",e)||!t)return this;s&&this._clearChoices(),e&&e.length&&(this.containerOuter.classList.remove(this.config.classNames.loadingState),e.forEach(function(e){e.choices?n._addGroup(e,e.id||null,t,i):n._addChoice(e[t],e[i],e.selected,e.disabled,void 0,e.customProperties,null)}))}return this}},{key:"clearStore",value:function(){return this.store.dispatch((0,p.clearAll)()),this}},{key:"clearInput",value:function(){return this.input.value&&(this.input.value=""),this.isSelectOneElement||this._setInputWidth(),!this.isTextElement&&this.config.searchEnabled&&(this.isSearching=!1,this.store.dispatch((0,p.activateChoices)(!0))),this}},{key:"enable",value:function(){this.passedElement.disabled=!1;var e=this.containerOuter.classList.contains(this.config.classNames.disabledState);return this.initialised&&e&&(this._addEventListeners(),this.passedElement.removeAttribute("disabled"),this.input.removeAttribute("disabled"),this.containerOuter.classList.remove(this.config.classNames.disabledState),this.containerOuter.removeAttribute("aria-disabled"),this.isSelectOneElement&&this.containerOuter.setAttribute("tabindex","0")),this}},{key:"disable",value:function(){this.passedElement.disabled=!0;var e=!this.containerOuter.classList.contains(this.config.classNames.disabledState);return this.initialised&&e&&(this._removeEventListeners(),this.passedElement.setAttribute("disabled",""),this.input.setAttribute("disabled",""),this.containerOuter.classList.add(this.config.classNames.disabledState),this.containerOuter.setAttribute("aria-disabled","true"),this.isSelectOneElement&&this.containerOuter.setAttribute("tabindex","-1")),this}},{key:"ajax",value:function(e){var t=this;return this.initialised===!0&&this.isSelectElement&&(requestAnimationFrame(function(){t._handleLoadingState(!0)}),e(this._ajaxCallback())),this}},{key:"_triggerChange",value:function(e){e&&(0,v.triggerEvent)(this.passedElement,"change",{value:e})}},{key:"_handleButtonAction",value:function(e,t){if(e&&t&&this.config.removeItems&&this.config.removeItemButton){var i=t.parentNode.getAttribute("data-id"),n=e.find(function(e){return e.id===parseInt(i,10)});if(this._removeItem(n),this._triggerChange(n.value),this.isSelectOneElement){var s=!!this.config.placeholder&&(this.config.placeholderValue||this.passedElement.getAttribute("placeholder"));if(s){var o=this._getTemplate("placeholder",s);this.itemList.appendChild(o)}}}}},{key:"_handleItemAction",value:function(e,t){var i=this,n=arguments.length>2&&void 0!==arguments[2]&&arguments[2];if(e&&t&&this.config.removeItems&&!this.isSelectOneElement){var s=t.getAttribute("data-id");e.forEach(function(e){e.id!==parseInt(s,10)||e.highlighted?n||e.highlighted&&i.unhighlightItem(e):i.highlightItem(e)}),document.activeElement!==this.input&&this.input.focus()}}},{key:"_handleChoiceAction",value:function(e,t){if(e&&t){var i=t.getAttribute("data-id"),n=this.store.getChoiceById(i),s=e[0]&&e[0].keyCode?e[0].keyCode:null,o=this.dropdown.classList.contains(this.config.classNames.activeState);if(n.keyCode=s,(0,v.triggerEvent)(this.passedElement,"choice",{choice:n}),n&&!n.selected&&!n.disabled){var r=this._canAddItem(e,n.value);r.response&&(this._addItem(n.value,n.label,n.id,n.groupId,n.customProperties,n.keyCode),this._triggerChange(n.value))}this.clearInput(),o&&this.isSelectOneElement&&(this.hideDropdown(),this.containerOuter.focus())}}},{key:"_handleBackspace",value:function(e){if(this.config.removeItems&&e){var t=e[e.length-1],i=e.some(function(e){return e.highlighted});this.config.editItems&&!i&&t?(this.input.value=t.value,this._setInputWidth(),this._removeItem(t),this._triggerChange(t.value)):(i||this.highlightItem(t,!1),this.removeHighlightedItems(!0))}}},{key:"_canAddItem",value:function(e,t){var i=!0,n=(0,v.isType)("Function",this.config.addItemText)?this.config.addItemText(t):this.config.addItemText;(this.isSelectMultipleElement||this.isTextElement)&&this.config.maxItemCount>0&&this.config.maxItemCount<=e.length&&(i=!1,n=(0,v.isType)("Function",this.config.maxItemText)?this.config.maxItemText(this.config.maxItemCount):this.config.maxItemText),this.isTextElement&&this.config.addItems&&i&&this.config.regexFilter&&(i=this._regexFilter(t));var s=!e.some(function(e){return(0,v.isType)("String",t)?e.value===t.trim():e.value===t});return s||this.config.duplicateItems||this.isSelectOneElement||!i||(i=!1,n=(0,v.isType)("Function",this.config.uniqueItemText)?this.config.uniqueItemText(t):this.config.uniqueItemText),{response:i,notice:n}}},{key:"_handleLoadingState",value:function(){var e=!(arguments.length>0&&void 0!==arguments[0])||arguments[0],t=this.itemList.querySelector("."+this.config.classNames.placeholder);if(e)this.containerOuter.classList.add(this.config.classNames.loadingState),this.containerOuter.setAttribute("aria-busy","true"),this.isSelectOneElement?t?t.innerHTML=this.config.loadingText:(t=this._getTemplate("placeholder",this.config.loadingText),this.itemList.appendChild(t)):this.input.placeholder=this.config.loadingText;else{this.containerOuter.classList.remove(this.config.classNames.loadingState);var i=!!this.config.placeholder&&(this.config.placeholderValue||this.passedElement.getAttribute("placeholder"));this.isSelectOneElement?t.innerHTML=i||"":this.input.placeholder=i||""}}},{key:"_ajaxCallback",value:function(){var e=this;return function(t,i,n){if(t&&i){var s=(0,v.isType)("Object",t)?[t]:t;s&&(0,v.isType)("Array",s)&&s.length?(e._handleLoadingState(!1),s.forEach(function(t){if(t.choices){var s=t.id||null;e._addGroup(t,s,i,n)}else e._addChoice(t[i],t[n],t.selected,t.disabled,void 0,t.customProperties,null)})):e._handleLoadingState(!1),e.containerOuter.removeAttribute("aria-busy")}}}},{key:"_searchChoices",value:function(e){var t=(0,v.isType)("String",e)?e.trim():e,i=(0,v.isType)("String",this.currentValue)?this.currentValue.trim():this.currentValue;if(t.length>=1&&t!==i+" "){var n=this.store.getChoicesFilteredBySelectable(),s=t,o=(0,v.isType)("Array",this.config.searchFields)?this.config.searchFields:[this.config.searchFields],r=Object.assign(this.config.fuseOptions,{keys:o}),a=new l.default(n,r),c=a.search(s);this.currentValue=t,this.highlightPosition=0,this.isSearching=!0,this.store.dispatch((0,p.filterChoices)(c))}}},{key:"_handleSearch",value:function(e){if(e){var t=this.store.getChoices(),i=t.some(function(e){return!e.active});this.input===document.activeElement&&(e&&e.length>=this.config.searchFloor?(this.config.searchChoices&&this._searchChoices(e),(0,v.triggerEvent)(this.passedElement,"search",{value:e})):i&&(this.isSearching=!1,this.store.dispatch((0,p.activateChoices)(!0))))}}},{key:"_addEventListeners",value:function(){document.addEventListener("keyup",this._onKeyUp),document.addEventListener("keydown",this._onKeyDown),document.addEventListener("click",this._onClick),document.addEventListener("touchmove",this._onTouchMove),document.addEventListener("touchend",this._onTouchEnd),document.addEventListener("mousedown",this._onMouseDown),document.addEventListener("mouseover",this._onMouseOver),this.isSelectOneElement&&(this.containerOuter.addEventListener("focus",this._onFocus),this.containerOuter.addEventListener("blur",this._onBlur)),this.input.addEventListener("input",this._onInput),this.input.addEventListener("paste",this._onPaste),this.input.addEventListener("focus",this._onFocus),this.input.addEventListener("blur",this._onBlur)}},{key:"_removeEventListeners",value:function(){document.removeEventListener("keyup",this._onKeyUp),document.removeEventListener("keydown",this._onKeyDown),document.removeEventListener("click",this._onClick),document.removeEventListener("touchmove",this._onTouchMove),document.removeEventListener("touchend",this._onTouchEnd),document.removeEventListener("mousedown",this._onMouseDown),document.removeEventListener("mouseover",this._onMouseOver),this.isSelectOneElement&&(this.containerOuter.removeEventListener("focus",this._onFocus),this.containerOuter.removeEventListener("blur",this._onBlur)),this.input.removeEventListener("input",this._onInput),this.input.removeEventListener("paste",this._onPaste),this.input.removeEventListener("focus",this._onFocus),this.input.removeEventListener("blur",this._onBlur)}},{key:"_setInputWidth",value:function(){if(this.config.placeholderValue||this.passedElement.getAttribute("placeholder")&&this.config.placeholder){var e=!!this.config.placeholder&&(this.config.placeholderValue||this.passedElement.getAttribute("placeholder"));this.input.value&&this.input.value.length>=e.length/1.25&&(this.input.style.width=(0,v.getWidthOfInput)(this.input))}else this.input.style.width=(0,v.getWidthOfInput)(this.input)}},{key:"_onKeyDown",value:function(e){var t,i=this;if(e.target===this.input||this.containerOuter.contains(e.target)){var n=e.target,o=this.store.getItemsFilteredByActive(),r=this.input===document.activeElement,a=this.dropdown.classList.contains(this.config.classNames.activeState),c=this.itemList&&this.itemList.children,l=String.fromCharCode(e.keyCode),u=46,h=8,d=13,f=65,p=27,m=38,g=40,y=33,b=34,E=e.ctrlKey||e.metaKey;this.isTextElement||!/[a-zA-Z0-9-_ ]/.test(l)||a||this.showDropdown(!0),this.canSearch=this.config.searchEnabled;var _=function(){E&&c&&(i.canSearch=!1,i.config.removeItems&&!i.input.value&&i.input===document.activeElement&&i.highlightAll())},S=function(){if(i.isTextElement&&n.value){var t=i.input.value,s=i._canAddItem(o,t);s.response&&(a&&i.hideDropdown(),i._addItem(t),i._triggerChange(t),i.clearInput())}if(n.hasAttribute("data-button")&&(i._handleButtonAction(o,n),e.preventDefault()),a){e.preventDefault();var r=i.dropdown.querySelector("."+i.config.classNames.highlightedState);r&&(o[0]&&(o[0].keyCode=d),i._handleChoiceAction(o,r))}else i.isSelectOneElement&&(a||(i.showDropdown(!0),e.preventDefault()))},I=function(){a&&(i.toggleDropdown(),i.containerOuter.focus())},w=function(){if(a||i.isSelectOneElement){a||i.showDropdown(!0),i.canSearch=!1;var t=e.keyCode===g||e.keyCode===b?1:-1,n=e.metaKey||e.keyCode===b||e.keyCode===y,s=void 0;if(n)s=t>0?Array.from(i.dropdown.querySelectorAll("[data-choice-selectable]")).pop():i.dropdown.querySelector("[data-choice-selectable]");else{var o=i.dropdown.querySelector("."+i.config.classNames.highlightedState);s=o?(0,v.getAdjacentEl)(o,"[data-choice-selectable]",t):i.dropdown.querySelector("[data-choice-selectable]")}s&&((0,v.isScrolledIntoView)(s,i.choiceList,t)||i._scrollToChoice(s,t),i._highlightChoice(s)),e.preventDefault()}},T=function(){!r||e.target.value||i.isSelectOneElement||(i._handleBackspace(o),e.preventDefault())},A=(t={},s(t,f,_),s(t,d,S),s(t,p,I),s(t,m,w),s(t,y,w),s(t,g,w),s(t,b,w),s(t,h,T),s(t,u,T),t);A[e.keyCode]&&A[e.keyCode]()}}},{key:"_onKeyUp",value:function(e){if(e.target===this.input){var t=this.input.value,i=this.store.getItemsFilteredByActive(),n=this._canAddItem(i,t);if(this.isTextElement){var s=this.dropdown.classList.contains(this.config.classNames.activeState);if(t){if(n.notice){var o=this._getTemplate("notice",n.notice);this.dropdown.innerHTML=o.outerHTML}n.response===!0?s||this.showDropdown():!n.notice&&s&&this.hideDropdown()}else s&&this.hideDropdown()}else{var r=46,a=8;e.keyCode!==r&&e.keyCode!==a||e.target.value?this.canSearch&&n.response&&this._handleSearch(this.input.value):!this.isTextElement&&this.isSearching&&(this.isSearching=!1,this.store.dispatch((0,p.activateChoices)(!0)))}this.canSearch=this.config.searchEnabled}}},{key:"_onInput",value:function(){this.isSelectOneElement||this._setInputWidth()}},{key:"_onTouchMove",value:function(){this.wasTap===!0&&(this.wasTap=!1)}},{key:"_onTouchEnd",value:function(e){var t=e.target||e.touches[0].target,i=this.dropdown.classList.contains(this.config.classNames.activeState);this.wasTap===!0&&this.containerOuter.contains(t)&&(t!==this.containerOuter&&t!==this.containerInner||this.isSelectOneElement||(this.isTextElement?document.activeElement!==this.input&&this.input.focus():i||this.showDropdown(!0)),e.stopPropagation()),this.wasTap=!0}},{key:"_onMouseDown",value:function(e){var t=e.target;if(this.containerOuter.contains(t)&&t!==this.input){var i=void 0,n=this.store.getItemsFilteredByActive(),s=e.shiftKey;(i=(0,v.findAncestorByAttrName)(t,"data-button"))?this._handleButtonAction(n,i):(i=(0,v.findAncestorByAttrName)(t,"data-item"))?this._handleItemAction(n,i,s):(i=(0,v.findAncestorByAttrName)(t,"data-choice"))&&this._handleChoiceAction(n,i),e.preventDefault()}}},{key:"_onClick",value:function(e){var t=e.target,i=this.dropdown.classList.contains(this.config.classNames.activeState),n=this.store.getItemsFilteredByActive();if(this.containerOuter.contains(t))t.hasAttribute("data-button")&&this._handleButtonAction(n,t),i?this.isSelectOneElement&&t!==this.input&&!this.dropdown.contains(t)&&this.hideDropdown(!0):this.isTextElement?document.activeElement!==this.input&&this.input.focus():this.canSearch?this.showDropdown(!0):(this.showDropdown(),this.containerOuter.focus());else{var s=n.some(function(e){return e.highlighted});s&&this.unhighlightAll(),this.containerOuter.classList.remove(this.config.classNames.focusState),i&&this.hideDropdown()}}},{key:"_onMouseOver",value:function(e){(e.target===this.dropdown||this.dropdown.contains(e.target))&&e.target.hasAttribute("data-choice")&&this._highlightChoice(e.target)}},{key:"_onPaste",value:function(e){e.target!==this.input||this.config.paste||e.preventDefault()}},{key:"_onFocus",value:function(e){var t=this,i=e.target;if(this.containerOuter.contains(i)){var n=this.dropdown.classList.contains(this.config.classNames.activeState),s={text:function(){i===t.input&&t.containerOuter.classList.add(t.config.classNames.focusState)},"select-one":function(){t.containerOuter.classList.add(t.config.classNames.focusState),i===t.input&&(n||t.showDropdown())},"select-multiple":function(){i===t.input&&(t.containerOuter.classList.add(t.config.classNames.focusState),n||t.showDropdown(!0))}};s[this.passedElement.type]()}}},{key:"_onBlur",value:function(e){var t=this,i=e.target;if(this.containerOuter.contains(i)){var n=this.store.getItemsFilteredByActive(),s=this.dropdown.classList.contains(this.config.classNames.activeState),o=n.some(function(e){return e.highlighted}),r={text:function(){i===t.input&&(t.containerOuter.classList.remove(t.config.classNames.focusState),o&&t.unhighlightAll(),s&&t.hideDropdown())},"select-one":function(){t.containerOuter.classList.remove(t.config.classNames.focusState),i===t.containerOuter&&s&&!t.canSearch&&t.hideDropdown(),i===t.input&&s&&t.hideDropdown()},"select-multiple":function(){i===t.input&&(t.containerOuter.classList.remove(t.config.classNames.focusState),s&&t.hideDropdown(),o&&t.unhighlightAll())}};r[this.passedElement.type]()}}},{key:"_regexFilter",value:function(e){if(!e)return!1;var t=this.config.regexFilter,i=new RegExp(t.source,"i");return i.test(e)}},{key:"_scrollToChoice",value:function(e,t){var i=this;if(e){var n=this.choiceList.offsetHeight,s=e.offsetHeight,o=e.offsetTop+s,r=this.choiceList.scrollTop+n,a=t>0?this.choiceList.scrollTop+o-r:e.offsetTop,c=function e(){var n=4,s=i.choiceList.scrollTop,o=!1,r=void 0,c=void 0;t>0?(r=(a-s)/n,c=r>1?r:1,i.choiceList.scrollTop=s+c,s<a&&(o=!0)):(r=(s-a)/n,c=r>1?r:1,i.choiceList.scrollTop=s-c,s>a&&(o=!0)),o&&requestAnimationFrame(function(i){e(i,a,t)})};requestAnimationFrame(function(e){c(e,a,t)})}}},{key:"_highlightChoice",value:function(){var e=this,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:null,i=Array.from(this.dropdown.querySelectorAll("[data-choice-selectable]")),n=t;if(i&&i.length){var s=Array.from(this.dropdown.querySelectorAll("."+this.config.classNames.highlightedState));s.forEach(function(t){t.classList.remove(e.config.classNames.highlightedState),t.setAttribute("aria-selected","false")}),n?this.highlightPosition=i.indexOf(n):(n=i.length>this.highlightPosition?i[this.highlightPosition]:i[i.length-1],n||(n=i[0])),n.classList.add(this.config.classNames.highlightedState),n.setAttribute("aria-selected","true"),this.containerOuter.setAttribute("aria-activedescendant",n.id),this.input.setAttribute("aria-activedescendant",n.id)}}},{key:"_addItem",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null,i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:-1,n=arguments.length>3&&void 0!==arguments[3]?arguments[3]:-1,s=arguments.length>4&&void 0!==arguments[4]?arguments[4]:null,o=arguments.length>5&&void 0!==arguments[5]?arguments[5]:null,r=(0,v.isType)("String",e)?e.trim():e,a=o,c=this.store.getItems(),l=t||r,u=parseInt(i,10)||-1,h=n>=0?this.store.getGroupById(n):null,d=c?c.length+1:1;return this.config.prependValue&&(r=this.config.prependValue+r.toString()),this.config.appendValue&&(r+=this.config.appendValue.toString()),this.store.dispatch((0,p.addItem)(r,l,d,u,n,s,a)),this.isSelectOneElement&&this.removeActiveItems(d),h&&h.value?(0,v.triggerEvent)(this.passedElement,"addItem",{id:d,value:r,label:l,groupValue:h.value,keyCode:a}):(0,v.triggerEvent)(this.passedElement,"addItem",{id:d,value:r,label:l,keyCode:a}),this}},{key:"_removeItem",value:function(e){if(!e||!(0,v.isType)("Object",e))return this;var t=e.id,i=e.value,n=e.label,s=e.choiceId,o=e.groupId,r=o>=0?this.store.getGroupById(o):null;return this.store.dispatch((0,p.removeItem)(t,s)),r&&r.value?(0,v.triggerEvent)(this.passedElement,"removeItem",{id:t,value:i,label:n,groupValue:r.value}):(0,v.triggerEvent)(this.passedElement,"removeItem",{id:t,value:i,label:n}),this}},{key:"_addChoice",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null,i=arguments.length>2&&void 0!==arguments[2]&&arguments[2],n=arguments.length>3&&void 0!==arguments[3]&&arguments[3],s=arguments.length>4&&void 0!==arguments[4]?arguments[4]:-1,o=arguments.length>5&&void 0!==arguments[5]?arguments[5]:null,r=arguments.length>6&&void 0!==arguments[6]?arguments[6]:null;
|
3 |
+
if("undefined"!=typeof e&&null!==e){var a=this.store.getChoices(),c=t||e,l=a?a.length+1:1,u=this.baseId+"-"+this.idNames.itemChoice+"-"+l;this.store.dispatch((0,p.addChoice)(e,c,l,s,n,u,o,r)),i&&this._addItem(e,c,l,void 0,o,r)}}},{key:"_clearChoices",value:function(){this.store.dispatch((0,p.clearChoices)())}},{key:"_addGroup",value:function(e,t){var i=this,n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"value",s=arguments.length>3&&void 0!==arguments[3]?arguments[3]:"label",o=(0,v.isType)("Object",e)?e.choices:Array.from(e.getElementsByTagName("OPTION")),r=t?t:Math.floor((new Date).valueOf()*Math.random()),a=!!e.disabled&&e.disabled;o?(this.store.dispatch((0,p.addGroup)(e.label,r,!0,a)),o.forEach(function(e){var t=e.disabled||e.parentNode&&e.parentNode.disabled,o=(0,v.isType)("Object",e)?e[s]:e.innerHTML;i._addChoice(e[n],o,e.selected,t,r,e.customProperties)})):this.store.dispatch((0,p.addGroup)(e.label,e.id,!1,e.disabled))}},{key:"_getTemplate",value:function(e){if(!e)return null;for(var t=this.config.templates,i=arguments.length,n=Array(i>1?i-1:0),s=1;s<i;s++)n[s-1]=arguments[s];return t[e].apply(t,n)}},{key:"_createTemplates",value:function(){var e=this,t=this.config.classNames,i={containerOuter:function(i){return(0,v.strToEl)('\n <div\n class="'+t.containerOuter+'"\n '+(e.isSelectElement?e.config.searchEnabled?'role="combobox" aria-autocomplete="list"':'role="listbox"':"")+'\n data-type="'+e.passedElement.type+'"\n '+(e.isSelectOneElement?'tabindex="0"':"")+'\n aria-haspopup="true"\n aria-expanded="false"\n dir="'+i+'"\n >\n </div>\n ')},containerInner:function(){return(0,v.strToEl)('\n <div class="'+t.containerInner+'"></div>\n ')},itemList:function(){var i,n=(0,h.default)(t.list,(i={},s(i,t.listSingle,e.isSelectOneElement),s(i,t.listItems,!e.isSelectOneElement),i));return(0,v.strToEl)('\n <div class="'+n+'"></div>\n ')},placeholder:function(e){return(0,v.strToEl)('\n <div class="'+t.placeholder+'">\n '+e+"\n </div>\n ")},item:function(i){var n,o=(0,h.default)(t.item,(n={},s(n,t.highlightedState,i.highlighted),s(n,t.itemSelectable,!i.highlighted),n));if(e.config.removeItemButton){var r;return o=(0,h.default)(t.item,(r={},s(r,t.highlightedState,i.highlighted),s(r,t.itemSelectable,!i.disabled),r)),(0,v.strToEl)('\n <div\n class="'+o+'"\n data-item\n data-id="'+i.id+'"\n data-value="'+i.value+'"\n data-deletable\n '+(i.active?'aria-selected="true"':"")+"\n "+(i.disabled?'aria-disabled="true"':"")+"\n >\n "+i.label+'<!--\n --><button\n type="button"\n class="'+t.button+'"\n data-button\n aria-label="Remove item: \''+i.value+"'\"\n >\n Remove item\n </button>\n </div>\n ")}return(0,v.strToEl)('\n <div\n class="'+o+'"\n data-item\n data-id="'+i.id+'"\n data-value="'+i.value+'"\n '+(i.active?'aria-selected="true"':"")+"\n "+(i.disabled?'aria-disabled="true"':"")+"\n >\n "+i.label+"\n </div>\n ")},choiceList:function(){return(0,v.strToEl)('\n <div\n class="'+t.list+'"\n dir="ltr"\n role="listbox"\n '+(e.isSelectOneElement?"":'aria-multiselectable="true"')+"\n >\n </div>\n ")},choiceGroup:function(e){var i=(0,h.default)(t.group,s({},t.itemDisabled,e.disabled));return(0,v.strToEl)('\n <div\n class="'+i+'"\n data-group\n data-id="'+e.id+'"\n data-value="'+e.value+'"\n role="group"\n '+(e.disabled?'aria-disabled="true"':"")+'\n >\n <div class="'+t.groupHeading+'">'+e.value+"</div>\n </div>\n ")},choice:function(i){var n,o=(0,h.default)(t.item,t.itemChoice,(n={},s(n,t.itemDisabled,i.disabled),s(n,t.itemSelectable,!i.disabled),n));return(0,v.strToEl)('\n <div\n class="'+o+'"\n data-select-text="'+e.config.itemSelectText+'"\n data-choice\n data-id="'+i.id+'"\n data-value="'+i.value+'"\n '+(i.disabled?'data-choice-disabled aria-disabled="true"':"data-choice-selectable")+'\n id="'+i.elementId+'"\n '+(i.groupId>0?'role="treeitem"':'role="option"')+"\n >\n "+i.label+"\n </div>\n ")},input:function(){var e=(0,h.default)(t.input,t.inputCloned);return(0,v.strToEl)('\n <input\n type="text"\n class="'+e+'"\n autocomplete="off"\n autocapitalize="off"\n spellcheck="false"\n role="textbox"\n aria-autocomplete="list"\n >\n ')},dropdown:function(){var e=(0,h.default)(t.list,t.listDropdown);return(0,v.strToEl)('\n <div\n class="'+e+'"\n aria-expanded="false"\n >\n </div>\n ')},notice:function(e){var i=(0,h.default)(t.item,t.itemChoice);return(0,v.strToEl)('\n <div class="'+i+'">\n '+e+"\n </div>\n ")},option:function(e){return(0,v.strToEl)('\n <option value="'+e.value+'" selected>'+e.label+"</option>\n ")}},n=this.config.callbackOnCreateTemplates,o={};n&&(0,v.isType)("Function",n)&&(o=n.call(this,v.strToEl)),this.config.templates=(0,v.extend)(i,o)}},{key:"_createInput",value:function(){var e=this,t=this.passedElement.getAttribute("dir")||"ltr",i=this._getTemplate("containerOuter",t),n=this._getTemplate("containerInner"),s=this._getTemplate("itemList"),o=this._getTemplate("choiceList"),r=this._getTemplate("input"),a=this._getTemplate("dropdown"),c=!!this.config.placeholder&&(this.config.placeholderValue||this.passedElement.getAttribute("placeholder"));this.containerOuter=i,this.containerInner=n,this.input=r,this.choiceList=o,this.itemList=s,this.dropdown=a,this.passedElement.classList.add(this.config.classNames.input,this.config.classNames.hiddenState),this.passedElement.tabIndex="-1";var l=this.passedElement.getAttribute("style");if(Boolean(l)&&this.passedElement.setAttribute("data-choice-orig-style",l),this.passedElement.setAttribute("style","display:none;"),this.passedElement.setAttribute("aria-hidden","true"),this.passedElement.setAttribute("data-choice","active"),(0,v.wrap)(this.passedElement,n),(0,v.wrap)(n,i),c&&(r.placeholder=c,this.isSelectOneElement||(r.style.width=(0,v.getWidthOfInput)(r))),this.config.addItems||this.disable(),i.appendChild(n),i.appendChild(a),n.appendChild(s),this.isTextElement||a.appendChild(o),this.isSelectMultipleElement||this.isTextElement?n.appendChild(r):this.canSearch&&a.insertBefore(r,a.firstChild),this.isSelectElement){var u=Array.from(this.passedElement.getElementsByTagName("OPTGROUP"));if(this.highlightPosition=0,this.isSearching=!1,u&&u.length)u.forEach(function(t){e._addGroup(t,t.id||null)});else{var h=Array.from(this.passedElement.options),d=this.config.sortFilter,f=this.presetChoices;h.forEach(function(e){f.push({value:e.value,label:e.innerHTML,selected:e.selected,disabled:e.disabled||e.parentNode.disabled})}),this.config.shouldSort&&f.sort(d);var p=f.some(function(e){return e.selected});f.forEach(function(t,i){e.isSelectOneElement?p||!p&&i>0?e._addChoice(t.value,t.label,t.selected,t.disabled,void 0,t.customProperties):e._addChoice(t.value,t.label,!0,!1,void 0,t.customProperties):e._addChoice(t.value,t.label,t.selected,t.disabled,void 0,t.customProperties)})}}else this.isTextElement&&this.presetItems.forEach(function(t){var i=(0,v.getType)(t);if("Object"===i){if(!t.value)return;e._addItem(t.value,t.label,t.id,void 0,t.customProperties)}else"String"===i&&e._addItem(t)})}}]),e}();e.exports=m},function(e,t,i){!function(t){"use strict";function i(){console.log.apply(console,arguments)}function n(e,t){var i;this.list=e,this.options=t=t||{};for(i in a)a.hasOwnProperty(i)&&("boolean"==typeof a[i]?this.options[i]=i in t?t[i]:a[i]:this.options[i]=t[i]||a[i])}function s(e,t,i){var n,r,a,c,l,u;if(t){if(a=t.indexOf("."),a!==-1?(n=t.slice(0,a),r=t.slice(a+1)):n=t,c=e[n],null!==c&&void 0!==c)if(r||"string"!=typeof c&&"number"!=typeof c)if(o(c))for(l=0,u=c.length;l<u;l++)s(c[l],r,i);else r&&s(c,r,i);else i.push(c)}else i.push(e);return i}function o(e){return"[object Array]"===Object.prototype.toString.call(e)}function r(e,t){t=t||{},this.options=t,this.options.location=t.location||r.defaultOptions.location,this.options.distance="distance"in t?t.distance:r.defaultOptions.distance,this.options.threshold="threshold"in t?t.threshold:r.defaultOptions.threshold,this.options.maxPatternLength=t.maxPatternLength||r.defaultOptions.maxPatternLength,this.pattern=t.caseSensitive?e:e.toLowerCase(),this.patternLen=e.length,this.patternLen<=this.options.maxPatternLength&&(this.matchmask=1<<this.patternLen-1,this.patternAlphabet=this._calculatePatternAlphabet())}var a={id:null,caseSensitive:!1,include:[],shouldSort:!0,searchFn:r,sortFn:function(e,t){return e.score-t.score},getFn:s,keys:[],verbose:!1,tokenize:!1,matchAllTokens:!1,tokenSeparator:/ +/g,minMatchCharLength:1,findAllMatches:!1};n.VERSION="2.7.3",n.prototype.set=function(e){return this.list=e,e},n.prototype.search=function(e){this.options.verbose&&i("\nSearch term:",e,"\n"),this.pattern=e,this.results=[],this.resultMap={},this._keyMap=null,this._prepareSearchers(),this._startSearch(),this._computeScore(),this._sort();var t=this._format();return t},n.prototype._prepareSearchers=function(){var e=this.options,t=this.pattern,i=e.searchFn,n=t.split(e.tokenSeparator),s=0,o=n.length;if(this.options.tokenize)for(this.tokenSearchers=[];s<o;s++)this.tokenSearchers.push(new i(n[s],e));this.fullSeacher=new i(t,e)},n.prototype._startSearch=function(){var e,t,i,n,s=this.options,o=s.getFn,r=this.list,a=r.length,c=this.options.keys,l=c.length,u=null;if("string"==typeof r[0])for(i=0;i<a;i++)this._analyze("",r[i],i,i);else for(this._keyMap={},i=0;i<a;i++)for(u=r[i],n=0;n<l;n++){if(e=c[n],"string"!=typeof e){if(t=1-e.weight||1,this._keyMap[e.name]={weight:t},e.weight<=0||e.weight>1)throw new Error("Key weight has to be > 0 and <= 1");e=e.name}else this._keyMap[e]={weight:1};this._analyze(e,o(u,e,[]),u,i)}},n.prototype._analyze=function(e,t,n,s){var r,a,c,l,u,h,d,f,p,v,m,g,y,b,E,_=this.options,S=!1;if(void 0!==t&&null!==t){a=[];var I=0;if("string"==typeof t){if(r=t.split(_.tokenSeparator),_.verbose&&i("---------\nKey:",e),this.options.tokenize){for(b=0;b<this.tokenSearchers.length;b++){for(f=this.tokenSearchers[b],_.verbose&&i("Pattern:",f.pattern),p=[],g=!1,E=0;E<r.length;E++){v=r[E],m=f.search(v);var w={};m.isMatch?(w[v]=m.score,S=!0,g=!0,a.push(m.score)):(w[v]=1,this.options.matchAllTokens||a.push(1)),p.push(w)}g&&I++,_.verbose&&i("Token scores:",p)}for(l=a[0],h=a.length,b=1;b<h;b++)l+=a[b];l/=h,_.verbose&&i("Token score average:",l)}d=this.fullSeacher.search(t),_.verbose&&i("Full text score:",d.score),u=d.score,void 0!==l&&(u=(u+l)/2),_.verbose&&i("Score average:",u),y=!this.options.tokenize||!this.options.matchAllTokens||I>=this.tokenSearchers.length,_.verbose&&i("Check Matches",y),(S||d.isMatch)&&y&&(c=this.resultMap[s],c?c.output.push({key:e,score:u,matchedIndices:d.matchedIndices}):(this.resultMap[s]={item:n,output:[{key:e,score:u,matchedIndices:d.matchedIndices}]},this.results.push(this.resultMap[s])))}else if(o(t))for(b=0;b<t.length;b++)this._analyze(e,t[b],n,s)}},n.prototype._computeScore=function(){var e,t,n,s,o,r,a,c,l,u=this._keyMap,h=this.results;for(this.options.verbose&&i("\n\nComputing score:\n"),e=0;e<h.length;e++){for(n=0,s=h[e].output,o=s.length,c=1,t=0;t<o;t++)r=s[t].score,a=u?u[s[t].key].weight:1,l=r*a,1!==a?c=Math.min(c,l):(n+=l,s[t].nScore=l);1===c?h[e].score=n/o:h[e].score=c,this.options.verbose&&i(h[e])}},n.prototype._sort=function(){var e=this.options;e.shouldSort&&(e.verbose&&i("\n\nSorting...."),this.results.sort(e.sortFn))},n.prototype._format=function(){var e,t,n,s,o=this.options,r=o.getFn,a=[],c=this.results,l=o.include;for(o.verbose&&i("\n\nOutput:\n\n",c),n=o.id?function(e){c[e].item=r(c[e].item,o.id,[])[0]}:function(){},s=function(e){var t,i,n,s,o,r=c[e];if(l.length>0){if(t={item:r.item},l.indexOf("matches")!==-1)for(n=r.output,t.matches=[],i=0;i<n.length;i++)s=n[i],o={indices:s.matchedIndices},s.key&&(o.key=s.key),t.matches.push(o);l.indexOf("score")!==-1&&(t.score=c[e].score)}else t=r.item;return t},e=0,t=c.length;e<t;e++)n(e),a.push(s(e));return a},r.defaultOptions={location:0,distance:100,threshold:.6,maxPatternLength:32},r.prototype._calculatePatternAlphabet=function(){var e={},t=0;for(t=0;t<this.patternLen;t++)e[this.pattern.charAt(t)]=0;for(t=0;t<this.patternLen;t++)e[this.pattern.charAt(t)]|=1<<this.pattern.length-t-1;return e},r.prototype._bitapScore=function(e,t){var i=e/this.patternLen,n=Math.abs(this.options.location-t);return this.options.distance?i+n/this.options.distance:n?1:i},r.prototype.search=function(e){var t,i,n,s,o,r,a,c,l,u,h,d,f,p,v,m,g,y,b,E,_,S,I,w=this.options;if(e=w.caseSensitive?e:e.toLowerCase(),this.pattern===e)return{isMatch:!0,score:0,matchedIndices:[[0,e.length-1]]};if(this.patternLen>w.maxPatternLength){if(y=e.match(new RegExp(this.pattern.replace(w.tokenSeparator,"|"))),b=!!y)for(_=[],t=0,S=y.length;t<S;t++)I=y[t],_.push([e.indexOf(I),I.length-1]);return{isMatch:b,score:b?.5:1,matchedIndices:_}}for(s=w.findAllMatches,o=w.location,n=e.length,r=w.threshold,a=e.indexOf(this.pattern,o),E=[],t=0;t<n;t++)E[t]=0;for(a!=-1&&(r=Math.min(this._bitapScore(0,a),r),a=e.lastIndexOf(this.pattern,o+this.patternLen),a!=-1&&(r=Math.min(this._bitapScore(0,a),r))),a=-1,m=1,g=[],u=this.patternLen+n,t=0;t<this.patternLen;t++){for(c=0,l=u;c<l;)this._bitapScore(t,o+l)<=r?c=l:u=l,l=Math.floor((u-c)/2+c);for(u=l,h=Math.max(1,o-l+1),d=s?n:Math.min(o+l,n)+this.patternLen,f=Array(d+2),f[d+1]=(1<<t)-1,i=d;i>=h;i--)if(v=this.patternAlphabet[e.charAt(i-1)],v&&(E[i-1]=1),f[i]=(f[i+1]<<1|1)&v,0!==t&&(f[i]|=(p[i+1]|p[i])<<1|1|p[i+1]),f[i]&this.matchmask&&(m=this._bitapScore(t,i-1),m<=r)){if(r=m,a=i-1,g.push(a),a<=o)break;h=Math.max(1,2*o-a)}if(this._bitapScore(t+1,o)>r)break;p=f}return _=this._getMatchedIndices(E),{isMatch:a>=0,score:0===m?.001:m,matchedIndices:_}},r.prototype._getMatchedIndices=function(e){for(var t,i=[],n=-1,s=-1,o=0,r=e.length;o<r;o++)t=e[o],t&&n===-1?n=o:t||n===-1||(s=o-1,s-n+1>=this.options.minMatchCharLength&&i.push([n,s]),n=-1);return e[o-1]&&o-1-n+1>=this.options.minMatchCharLength&&i.push([n,o-1]),i},e.exports=n}(this)},function(e,t,i){var n,s;!function(){"use strict";function i(){for(var e=[],t=0;t<arguments.length;t++){var n=arguments[t];if(n){var s=typeof n;if("string"===s||"number"===s)e.push(n);else if(Array.isArray(n))e.push(i.apply(null,n));else if("object"===s)for(var r in n)o.call(n,r)&&n[r]&&e.push(r)}}return e.join(" ")}var o={}.hasOwnProperty;"undefined"!=typeof e&&e.exports?e.exports=i:(n=[],s=function(){return i}.apply(t,n),!(void 0!==s&&(e.exports=s)))}()},function(e,t,i){"use strict";function n(e){return e&&e.__esModule?e:{default:e}}function s(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(t,"__esModule",{value:!0});var o=function(){function e(e,t){for(var i=0;i<t.length;i++){var n=t[i];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}return function(t,i,n){return i&&e(t.prototype,i),n&&e(t,n),t}}(),r=i(5),a=i(26),c=n(a),l=function(){function e(){s(this,e),this.store=(0,r.createStore)(c.default,window.devToolsExtension?window.devToolsExtension():void 0)}return o(e,[{key:"getState",value:function(){return this.store.getState()}},{key:"dispatch",value:function(e){this.store.dispatch(e)}},{key:"subscribe",value:function(e){this.store.subscribe(e)}},{key:"getItems",value:function(){var e=this.store.getState();return e.items}},{key:"getItemsFilteredByActive",value:function(){var e=this.getItems(),t=e.filter(function(e){return e.active===!0},[]);return t}},{key:"getItemsReducedToValues",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:this.getItems(),t=e.reduce(function(e,t){return e.push(t.value),e},[]);return t}},{key:"getChoices",value:function(){var e=this.store.getState();return e.choices}},{key:"getChoicesFilteredByActive",value:function(){var e=this.getChoices(),t=e.filter(function(e){return e.active===!0},[]);return t}},{key:"getChoicesFilteredBySelectable",value:function(){var e=this.getChoices(),t=e.filter(function(e){return e.disabled!==!0},[]);return t}},{key:"getChoiceById",value:function(e){if(e){var t=this.getChoicesFilteredByActive(),i=t.find(function(t){return t.id===parseInt(e,10)});return i}return!1}},{key:"getGroups",value:function(){var e=this.store.getState();return e.groups}},{key:"getGroupsFilteredByActive",value:function(){var e=this.getGroups(),t=this.getChoices(),i=e.filter(function(e){var i=e.active===!0&&e.disabled===!1,n=t.some(function(e){return e.active===!0&&e.disabled===!1});return i&&n},[]);return i}},{key:"getGroupById",value:function(e){var t=this.getGroups(),i=t.find(function(t){return t.id===e});return i}}]),e}();t.default=l,e.exports=l},function(e,t,i){"use strict";function n(e){return e&&e.__esModule?e:{default:e}}t.__esModule=!0,t.compose=t.applyMiddleware=t.bindActionCreators=t.combineReducers=t.createStore=void 0;var s=i(6),o=n(s),r=i(21),a=n(r),c=i(23),l=n(c),u=i(24),h=n(u),d=i(25),f=n(d),p=i(22);n(p);t.createStore=o.default,t.combineReducers=a.default,t.bindActionCreators=l.default,t.applyMiddleware=h.default,t.compose=f.default},function(e,t,i){"use strict";function n(e){return e&&e.__esModule?e:{default:e}}function s(e,t,i){function n(){g===m&&(g=m.slice())}function o(){return v}function a(e){if("function"!=typeof e)throw new Error("Expected listener to be a function.");var t=!0;return n(),g.push(e),function(){if(t){t=!1,n();var i=g.indexOf(e);g.splice(i,1)}}}function u(e){if(!(0,r.default)(e))throw new Error("Actions must be plain objects. Use custom middleware for async actions.");if("undefined"==typeof e.type)throw new Error('Actions may not have an undefined "type" property. Have you misspelled a constant?');if(y)throw new Error("Reducers may not dispatch actions.");try{y=!0,v=p(v,e)}finally{y=!1}for(var t=m=g,i=0;i<t.length;i++)t[i]();return e}function h(e){if("function"!=typeof e)throw new Error("Expected the nextReducer to be a function.");p=e,u({type:l.INIT})}function d(){var e,t=a;return e={subscribe:function(e){function i(){e.next&&e.next(o())}if("object"!=typeof e)throw new TypeError("Expected the observer to be an object.");i();var n=t(i);return{unsubscribe:n}}},e[c.default]=function(){return this},e}var f;if("function"==typeof t&&"undefined"==typeof i&&(i=t,t=void 0),"undefined"!=typeof i){if("function"!=typeof i)throw new Error("Expected the enhancer to be a function.");return i(s)(e,t)}if("function"!=typeof e)throw new Error("Expected the reducer to be a function.");var p=e,v=t,m=[],g=m,y=!1;return u({type:l.INIT}),f={dispatch:u,subscribe:a,getState:o,replaceReducer:h},f[c.default]=d,f}t.__esModule=!0,t.ActionTypes=void 0,t.default=s;var o=i(7),r=n(o),a=i(17),c=n(a),l=t.ActionTypes={INIT:"@@redux/INIT"}},function(e,t,i){function n(e){if(!r(e)||s(e)!=a)return!1;var t=o(e);if(null===t)return!0;var i=h.call(t,"constructor")&&t.constructor;return"function"==typeof i&&i instanceof i&&u.call(i)==d}var s=i(8),o=i(14),r=i(16),a="[object Object]",c=Function.prototype,l=Object.prototype,u=c.toString,h=l.hasOwnProperty,d=u.call(Object);e.exports=n},function(e,t,i){function n(e){return null==e?void 0===e?c:a:l&&l in Object(e)?o(e):r(e)}var s=i(9),o=i(12),r=i(13),a="[object Null]",c="[object Undefined]",l=s?s.toStringTag:void 0;e.exports=n},function(e,t,i){var n=i(10),s=n.Symbol;e.exports=s},function(e,t,i){var n=i(11),s="object"==typeof self&&self&&self.Object===Object&&self,o=n||s||Function("return this")();e.exports=o},function(e,t){(function(t){var i="object"==typeof t&&t&&t.Object===Object&&t;e.exports=i}).call(t,function(){return this}())},function(e,t,i){function n(e){var t=r.call(e,c),i=e[c];try{e[c]=void 0;var n=!0}catch(e){}var s=a.call(e);return n&&(t?e[c]=i:delete e[c]),s}var s=i(9),o=Object.prototype,r=o.hasOwnProperty,a=o.toString,c=s?s.toStringTag:void 0;e.exports=n},function(e,t){function i(e){return s.call(e)}var n=Object.prototype,s=n.toString;e.exports=i},function(e,t,i){var n=i(15),s=n(Object.getPrototypeOf,Object);e.exports=s},function(e,t){function i(e,t){return function(i){return e(t(i))}}e.exports=i},function(e,t){function i(e){return null!=e&&"object"==typeof e}e.exports=i},function(e,t,i){e.exports=i(18)},function(e,t,i){(function(e,n){"use strict";function s(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(t,"__esModule",{value:!0});var o,r=i(20),a=s(r);o="undefined"!=typeof self?self:"undefined"!=typeof window?window:"undefined"!=typeof e?e:n;var c=(0,a.default)(o);t.default=c}).call(t,function(){return this}(),i(19)(e))},function(e,t){e.exports=function(e){return e.webpackPolyfill||(e.deprecate=function(){},e.paths=[],e.children=[],e.webpackPolyfill=1),e}},function(e,t){"use strict";function i(e){var t,i=e.Symbol;return"function"==typeof i?i.observable?t=i.observable:(t=i("observable"),i.observable=t):t="@@observable",t}Object.defineProperty(t,"__esModule",{value:!0}),t.default=i},function(e,t,i){"use strict";function n(e){return e&&e.__esModule?e:{default:e}}function s(e,t){var i=t&&t.type,n=i&&'"'+i.toString()+'"'||"an action";return"Given action "+n+', reducer "'+e+'" returned undefined. To ignore an action, you must explicitly return the previous state.'}function o(e){Object.keys(e).forEach(function(t){var i=e[t],n=i(void 0,{type:a.ActionTypes.INIT});if("undefined"==typeof n)throw new Error('Reducer "'+t+'" returned undefined during initialization. If the state passed to the reducer is undefined, you must explicitly return the initial state. The initial state may not be undefined.');var s="@@redux/PROBE_UNKNOWN_ACTION_"+Math.random().toString(36).substring(7).split("").join(".");if("undefined"==typeof i(void 0,{type:s}))throw new Error('Reducer "'+t+'" returned undefined when probed with a random type. '+("Don't try to handle "+a.ActionTypes.INIT+' or other actions in "redux/*" ')+"namespace. They are considered private. Instead, you must return the current state for any unknown actions, unless it is undefined, in which case you must return the initial state, regardless of the action type. The initial state may not be undefined.")})}function r(e){for(var t=Object.keys(e),i={},n=0;n<t.length;n++){var r=t[n];"function"==typeof e[r]&&(i[r]=e[r])}var a,c=Object.keys(i);try{o(i)}catch(e){a=e}return function(){var e=arguments.length<=0||void 0===arguments[0]?{}:arguments[0],t=arguments[1];if(a)throw a;for(var n=!1,o={},r=0;r<c.length;r++){var l=c[r],u=i[l],h=e[l],d=u(h,t);if("undefined"==typeof d){var f=s(l,t);throw new Error(f)}o[l]=d,n=n||d!==h}return n?o:e}}t.__esModule=!0,t.default=r;var a=i(6),c=i(7),l=(n(c),i(22));n(l)},function(e,t){"use strict";function i(e){"undefined"!=typeof console&&"function"==typeof console.error&&console.error(e);try{throw new Error(e)}catch(e){}}t.__esModule=!0,t.default=i},function(e,t){"use strict";function i(e,t){return function(){return t(e.apply(void 0,arguments))}}function n(e,t){if("function"==typeof e)return i(e,t);if("object"!=typeof e||null===e)throw new Error("bindActionCreators expected an object or a function, instead received "+(null===e?"null":typeof e)+'. Did you write "import ActionCreators from" instead of "import * as ActionCreators from"?');for(var n=Object.keys(e),s={},o=0;o<n.length;o++){var r=n[o],a=e[r];"function"==typeof a&&(s[r]=i(a,t))}return s}t.__esModule=!0,t.default=n},function(e,t,i){"use strict";function n(e){return e&&e.__esModule?e:{default:e}}function s(){for(var e=arguments.length,t=Array(e),i=0;i<e;i++)t[i]=arguments[i];return function(e){return function(i,n,s){var r=e(i,n,s),c=r.dispatch,l=[],u={getState:r.getState,dispatch:function(e){return c(e)}};return l=t.map(function(e){return e(u)}),c=a.default.apply(void 0,l)(r.dispatch),o({},r,{dispatch:c})}}}t.__esModule=!0;var o=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var i=arguments[t];for(var n in i)Object.prototype.hasOwnProperty.call(i,n)&&(e[n]=i[n])}return e};t.default=s;var r=i(25),a=n(r)},function(e,t){"use strict";function i(){for(var e=arguments.length,t=Array(e),i=0;i<e;i++)t[i]=arguments[i];if(0===t.length)return function(e){return e};if(1===t.length)return t[0];var n=t[t.length-1],s=t.slice(0,-1);return function(){return s.reduceRight(function(e,t){return t(e)},n.apply(void 0,arguments))}}t.__esModule=!0,t.default=i},function(e,t,i){"use strict";function n(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(t,"__esModule",{value:!0});var s=i(5),o=i(27),r=n(o),a=i(28),c=n(a),l=i(29),u=n(l),h=(0,s.combineReducers)({items:r.default,groups:c.default,choices:u.default}),d=function(e,t){var i=e;return"CLEAR_ALL"===t.type&&(i=void 0),h(i,t)};t.default=d},function(e,t){"use strict";function i(e){if(Array.isArray(e)){for(var t=0,i=Array(e.length);t<e.length;t++)i[t]=e[t];return i}return Array.from(e)}Object.defineProperty(t,"__esModule",{value:!0});var n=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],t=arguments[1];switch(t.type){case"ADD_ITEM":var n=[].concat(i(e),[{id:t.id,choiceId:t.choiceId,groupId:t.groupId,value:t.value,label:t.label,active:!0,highlighted:!1,customProperties:t.customProperties,keyCode:null}]);return n.map(function(e){return e.highlighted&&(e.highlighted=!1),e});case"REMOVE_ITEM":return e.map(function(e){return e.id===t.id&&(e.active=!1),e});case"HIGHLIGHT_ITEM":return e.map(function(e){return e.id===t.id&&(e.highlighted=t.highlighted),e});default:return e}};t.default=n},function(e,t){"use strict";function i(e){if(Array.isArray(e)){for(var t=0,i=Array(e.length);t<e.length;t++)i[t]=e[t];return i}return Array.from(e)}Object.defineProperty(t,"__esModule",{value:!0});var n=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],t=arguments[1];switch(t.type){case"ADD_GROUP":return[].concat(i(e),[{id:t.id,value:t.value,active:t.active,disabled:t.disabled}]);case"CLEAR_CHOICES":return e.groups=[];default:return e}};t.default=n},function(e,t){"use strict";function i(e){if(Array.isArray(e)){for(var t=0,i=Array(e.length);t<e.length;t++)i[t]=e[t];return i}return Array.from(e)}Object.defineProperty(t,"__esModule",{value:!0});var n=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],t=arguments[1];switch(t.type){case"ADD_CHOICE":return[].concat(i(e),[{id:t.id,elementId:t.elementId,groupId:t.groupId,value:t.value,label:t.label||t.value,disabled:t.disabled||!1,selected:!1,active:!0,score:9999,customProperties:t.customProperties,keyCode:null}]);case"ADD_ITEM":var n=e;return t.activateOptions&&(n=e.map(function(e){return e.active=t.active,e})),t.choiceId>-1&&(n=e.map(function(e){return e.id===parseInt(t.choiceId,10)&&(e.selected=!0),e})),n;case"REMOVE_ITEM":return t.choiceId>-1?e.map(function(e){return e.id===parseInt(t.choiceId,10)&&(e.selected=!1),e}):e;case"FILTER_CHOICES":var s=t.results,o=e.map(function(e){return e.active=s.some(function(t){return t.item.id===e.id&&(e.score=t.score,!0)}),e});return o;case"ACTIVATE_CHOICES":return e.map(function(e){return e.active=t.active,e});case"CLEAR_CHOICES":return e.choices=[];default:return e}};t.default=n},function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0});t.addItem=function(e,t,i,n,s,o,r){return{type:"ADD_ITEM",value:e,label:t,id:i,choiceId:n,groupId:s,customProperties:o,keyCode:r}},t.removeItem=function(e,t){return{type:"REMOVE_ITEM",id:e,choiceId:t}},t.highlightItem=function(e,t){return{type:"HIGHLIGHT_ITEM",id:e,highlighted:t}},t.addChoice=function(e,t,i,n,s,o,r,a){return{type:"ADD_CHOICE",value:e,label:t,id:i,groupId:n,disabled:s,elementId:o,customProperties:r,keyCode:a}},t.filterChoices=function(e){return{type:"FILTER_CHOICES",results:e}},t.activateChoices=function(){var e=!(arguments.length>0&&void 0!==arguments[0])||arguments[0];return{type:"ACTIVATE_CHOICES",active:e}},t.clearChoices=function(){return{type:"CLEAR_CHOICES"}},t.addGroup=function(e,t,i,n){return{type:"ADD_GROUP",value:e,id:t,active:i,disabled:n}},t.clearAll=function(){return{type:"CLEAR_ALL"}}},function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var i="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},n=(t.capitalise=function(e){return e.replace(/\w\S*/g,function(e){return e.charAt(0).toUpperCase()+e.substr(1).toLowerCase()})},t.generateChars=function(e){for(var t="",i=0;i<e;i++){var n=a(0,36);t+=n.toString(36)}return t}),s=(t.generateId=function(e,t){var i=e.id||e.name&&e.name+"-"+n(2)||n(4);return i=i.replace(/(:|\.|\[|\]|,)/g,""),i=t+i},t.getType=function(e){return Object.prototype.toString.call(e).slice(8,-1)}),o=t.isType=function(e,t){var i=s(t);return void 0!==t&&null!==t&&i===e},r=(t.isNode=function(e){return"object"===("undefined"==typeof Node?"undefined":i(Node))?e instanceof Node:e&&"object"===("undefined"==typeof e?"undefined":i(e))&&"number"==typeof e.nodeType&&"string"==typeof e.nodeName},t.isElement=function(e){return"object"===("undefined"==typeof HTMLElement?"undefined":i(HTMLElement))?e instanceof HTMLElement:e&&"object"===("undefined"==typeof e?"undefined":i(e))&&null!==e&&1===e.nodeType&&"string"==typeof e.nodeName},t.extend=function e(){for(var t={},i=arguments.length,n=function(i){for(var n in i)Object.prototype.hasOwnProperty.call(i,n)&&(o("Object",i[n])?t[n]=e(!0,t[n],i[n]):t[n]=i[n])},s=0;s<i;s++){var r=arguments[s];o("Object",r)&&n(r)}return t},t.whichTransitionEvent=function(){var e,t=document.createElement("fakeelement"),i={transition:"transitionend",OTransition:"oTransitionEnd",MozTransition:"transitionend",WebkitTransition:"webkitTransitionEnd"};for(e in i)if(void 0!==t.style[e])return i[e]},t.whichAnimationEvent=function(){var e,t=document.createElement("fakeelement"),i={animation:"animationend",OAnimation:"oAnimationEnd",MozAnimation:"animationend",WebkitAnimation:"webkitAnimationEnd"};for(e in i)if(void 0!==t.style[e])return i[e]}),a=(t.getParentsUntil=function(e,t,i){for(var n=[];e&&e!==document;e=e.parentNode){if(t){var s=t.charAt(0);if("."===s&&e.classList.contains(t.substr(1)))break;if("#"===s&&e.id===t.substr(1))break;if("["===s&&e.hasAttribute(t.substr(1,t.length-1)))break;if(e.tagName.toLowerCase()===t)break}if(i){var o=i.charAt(0);"."===o&&e.classList.contains(i.substr(1))&&n.push(e),"#"===o&&e.id===i.substr(1)&&n.push(e),"["===o&&e.hasAttribute(i.substr(1,i.length-1))&&n.push(e),e.tagName.toLowerCase()===i&&n.push(e)}else n.push(e)}return 0===n.length?null:n},t.wrap=function(e,t){return t=t||document.createElement("div"),e.nextSibling?e.parentNode.insertBefore(t,e.nextSibling):e.parentNode.appendChild(t),t.appendChild(e)},t.getSiblings=function(e){for(var t=[],i=e.parentNode.firstChild;i;i=i.nextSibling)1===i.nodeType&&i!==e&&t.push(i);return t},t.findAncestor=function(e,t){for(;(e=e.parentElement)&&!e.classList.contains(t););return e},t.findAncestorByAttrName=function(e,t){for(var i=e;i;){if(i.hasAttribute(t))return i;i=i.parentElement}return null},t.debounce=function(e,t,i){var n;return function(){var s=this,o=arguments,r=function(){n=null,i||e.apply(s,o)},a=i&&!n;clearTimeout(n),n=setTimeout(r,t),a&&e.apply(s,o)}},t.getElemDistance=function(e){var t=0;if(e.offsetParent)do t+=e.offsetTop,e=e.offsetParent;while(e);return t>=0?t:0},t.getElementOffset=function(e,t){var i=t;return i>1&&(i=1),
|
4 |
+
i>0&&(i=0),Math.max(e.offsetHeight*i)},t.getAdjacentEl=function(e,t){var i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:1;if(e&&t){var n=e.parentNode.parentNode,s=Array.from(n.querySelectorAll(t)),o=s.indexOf(e),r=i>0?1:-1;return s[o+r]}},t.getScrollPosition=function(e){return"bottom"===e?Math.max((window.scrollY||window.pageYOffset)+(window.innerHeight||document.documentElement.clientHeight)):window.scrollY||window.pageYOffset},t.isInView=function(e,t,i){return this.getScrollPosition(t)>this.getElemDistance(e)+this.getElementOffset(e,i)},t.isScrolledIntoView=function(e,t){var i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:1;if(e){var n=void 0;return n=i>0?t.scrollTop+t.offsetHeight>=e.offsetTop+e.offsetHeight:e.offsetTop>=t.scrollTop}},t.stripHTML=function(e){var t=document.createElement("DIV");return t.innerHTML=e,t.textContent||t.innerText||""},t.addAnimation=function(e,t){var i=r(),n=function n(){e.classList.remove(t),e.removeEventListener(i,n,!1)};e.classList.add(t),e.addEventListener(i,n,!1)},t.getRandomNumber=function(e,t){return Math.floor(Math.random()*(t-e)+e)}),c=t.strToEl=function(){var e=document.createElement("div");return function(t){var i=t.trim(),n=void 0;for(e.innerHTML=i,n=e.children[0];e.firstChild;)e.removeChild(e.firstChild);return n}}();t.getWidthOfInput=function(e){var t=e.value||e.placeholder,i=e.offsetWidth;if(t){var n=c("<span>"+t+"</span>");n.style.position="absolute",n.style.padding="0",n.style.top="-9999px",n.style.left="-9999px",n.style.width="auto",n.style.whiteSpace="pre",document.body.appendChild(n),t&&n.offsetWidth!==e.offsetWidth&&(i=n.offsetWidth+4),document.body.removeChild(n)}return i+"px"},t.sortByAlpha=function(e,t){var i=(e.label||e.value).toLowerCase(),n=(t.label||t.value).toLowerCase();return i<n?-1:i>n?1:0},t.sortByScore=function(e,t){return e.score-t.score},t.triggerEvent=function(e,t){var i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null,n=new CustomEvent(t,{detail:i,bubbles:!0,cancelable:!0});return e.dispatchEvent(n)}},function(e,t){"use strict";!function(){function e(e,t){t=t||{bubbles:!1,cancelable:!1,detail:void 0};var i=document.createEvent("CustomEvent");return i.initCustomEvent(e,t.bubbles,t.cancelable,t.detail),i}Array.from||(Array.from=function(){var e=Object.prototype.toString,t=function(t){return"function"==typeof t||"[object Function]"===e.call(t)},i=function(e){var t=Number(e);return isNaN(t)?0:0!==t&&isFinite(t)?(t>0?1:-1)*Math.floor(Math.abs(t)):t},n=Math.pow(2,53)-1,s=function(e){var t=i(e);return Math.min(Math.max(t,0),n)};return function(e){var i=this,n=Object(e);if(null==e)throw new TypeError("Array.from requires an array-like object - not null or undefined");var o,r=arguments.length>1?arguments[1]:void 0;if("undefined"!=typeof r){if(!t(r))throw new TypeError("Array.from: when provided, the second argument must be a function");arguments.length>2&&(o=arguments[2])}for(var a,c=s(n.length),l=t(i)?Object(new i(c)):new Array(c),u=0;u<c;)a=n[u],r?l[u]="undefined"==typeof o?r(a,u):r.call(o,a,u):l[u]=a,u+=1;return l.length=c,l}}()),Array.prototype.find||(Array.prototype.find=function(e){if(null==this)throw new TypeError("Array.prototype.find called on null or undefined");if("function"!=typeof e)throw new TypeError("predicate must be a function");for(var t,i=Object(this),n=i.length>>>0,s=arguments[1],o=0;o<n;o++)if(t=i[o],e.call(s,t,o,i))return t}),e.prototype=window.Event.prototype,window.CustomEvent=e}()}])});
|
assets/js/jquery.fitvids.js
DELETED
@@ -1,87 +0,0 @@
|
|
1 |
-
/*jshint browser:true */
|
2 |
-
/*!
|
3 |
-
* FitVids 1.1
|
4 |
-
*
|
5 |
-
* Copyright 2013, Chris Coyier - http://css-tricks.com + Dave Rupert - http://daverupert.com
|
6 |
-
* Credit to Thierry Koblentz - http://www.alistapart.com/articles/creating-intrinsic-ratios-for-video/
|
7 |
-
* Released under the WTFPL license - http://sam.zoy.org/wtfpl/
|
8 |
-
*
|
9 |
-
*/
|
10 |
-
|
11 |
-
;(function( $ ){
|
12 |
-
|
13 |
-
'use strict';
|
14 |
-
|
15 |
-
$.fn.fitVids = function( options ) {
|
16 |
-
var settings = {
|
17 |
-
customSelector: null,
|
18 |
-
ignore: null
|
19 |
-
};
|
20 |
-
|
21 |
-
if(!document.getElementById('fit-vids-style')) {
|
22 |
-
// appendStyles: https://github.com/toddmotto/fluidvids/blob/master/dist/fluidvids.js
|
23 |
-
var head = document.head || document.getElementsByTagName('head')[0];
|
24 |
-
var css = '.fluid-width-video-wrapper{width:100%;position:relative;padding:0;}.fluid-width-video-wrapper iframe,.fluid-width-video-wrapper object,.fluid-width-video-wrapper embed {position:absolute;top:0;left:0;width:100%;height:100%;}';
|
25 |
-
var div = document.createElement("div");
|
26 |
-
div.innerHTML = '<p>x</p><style id="fit-vids-style">' + css + '</style>';
|
27 |
-
head.appendChild(div.childNodes[1]);
|
28 |
-
}
|
29 |
-
|
30 |
-
if ( options ) {
|
31 |
-
$.extend( settings, options );
|
32 |
-
}
|
33 |
-
|
34 |
-
return this.each(function(){
|
35 |
-
var selectors = [
|
36 |
-
'iframe[src*="player.vimeo.com"]',
|
37 |
-
'iframe[src*="youtube.com"]',
|
38 |
-
'iframe[src*="youtube-nocookie.com"]',
|
39 |
-
'iframe[src*="kickstarter.com"][src*="video.html"]',
|
40 |
-
'object',
|
41 |
-
'embed'
|
42 |
-
];
|
43 |
-
|
44 |
-
if (settings.customSelector) {
|
45 |
-
selectors.push(settings.customSelector);
|
46 |
-
}
|
47 |
-
|
48 |
-
var ignoreList = '.fitvidsignore';
|
49 |
-
|
50 |
-
if(settings.ignore) {
|
51 |
-
ignoreList = ignoreList + ', ' + settings.ignore;
|
52 |
-
}
|
53 |
-
|
54 |
-
var $allVideos = $(this).find(selectors.join(','));
|
55 |
-
$allVideos = $allVideos.not('object object'); // SwfObj conflict patch
|
56 |
-
$allVideos = $allVideos.not(ignoreList); // Disable FitVids on this video.
|
57 |
-
|
58 |
-
$allVideos.each(function(){
|
59 |
-
var $this = $(this);
|
60 |
-
if($this.parents(ignoreList).length > 0) {
|
61 |
-
return; // Disable FitVids on this video.
|
62 |
-
}
|
63 |
-
if (this.tagName.toLowerCase() === 'embed' && $this.parent('object').length || $this.parent('.fluid-width-video-wrapper').length) { return; }
|
64 |
-
if ((!$this.css('height') && !$this.css('width')) && (isNaN($this.attr('height')) || isNaN($this.attr('width'))))
|
65 |
-
{
|
66 |
-
$this.attr('height', 9);
|
67 |
-
$this.attr('width', 16);
|
68 |
-
}
|
69 |
-
var height = ( this.tagName.toLowerCase() === 'object' || ($this.attr('height') && !isNaN(parseInt($this.attr('height'), 10))) ) ? parseInt($this.attr('height'), 10) : $this.height(),
|
70 |
-
width = !isNaN(parseInt($this.attr('width'), 10)) ? parseInt($this.attr('width'), 10) : $this.width(),
|
71 |
-
aspectRatio = height / width;
|
72 |
-
if(!$this.attr('name')){
|
73 |
-
var videoName = 'fitvid' + $.fn.fitVids._count;
|
74 |
-
$this.attr('name', videoName);
|
75 |
-
$.fn.fitVids._count++;
|
76 |
-
}
|
77 |
-
$this.wrap('<div class="fluid-width-video-wrapper"></div>').parent('.fluid-width-video-wrapper').css('padding-top', (aspectRatio * 100)+'%');
|
78 |
-
$this.removeAttr('height').removeAttr('width');
|
79 |
-
});
|
80 |
-
});
|
81 |
-
};
|
82 |
-
|
83 |
-
// Internal counter for unique video names.
|
84 |
-
$.fn.fitVids._count = 0;
|
85 |
-
|
86 |
-
// Works with either jQuery or Zepto
|
87 |
-
})( window.jQuery || window.Zepto );
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
assets/js/jquery.minicolors.min.js
CHANGED
@@ -1,11 +1,8 @@
|
|
1 |
-
|
2 |
-
|
3 |
-
|
4 |
-
|
5 |
-
|
6 |
-
|
7 |
-
|
8 |
-
* @license: http://opensource.org/licenses/MIT
|
9 |
-
*
|
10 |
-
*/
|
11 |
-
!function(i){"function"==typeof define&&define.amd?define(["jquery"],i):"object"==typeof exports?module.exports=i(require("jquery")):i(jQuery)}(function($){"use strict";function i(i,t){var o=$('<div class="minicolors" />'),s=$.minicolors.defaults,a,n,r,c,l;if(!i.data("minicolors-initialized")){if(t=$.extend(!0,{},s,t),o.addClass("minicolors-theme-"+t.theme).toggleClass("minicolors-with-opacity",t.opacity).toggleClass("minicolors-no-data-uris",t.dataUris!==!0),void 0!==t.position&&$.each(t.position.split(" "),function(){o.addClass("minicolors-position-"+this)}),a="rgb"===t.format?t.opacity?"25":"20":t.keywords?"11":"7",i.addClass("minicolors-input").data("minicolors-initialized",!1).data("minicolors-settings",t).prop("size",a).wrap(o).after('<div class="minicolors-panel minicolors-slider-'+t.control+'"><div class="minicolors-slider minicolors-sprite"><div class="minicolors-picker"></div></div><div class="minicolors-opacity-slider minicolors-sprite"><div class="minicolors-picker"></div></div><div class="minicolors-grid minicolors-sprite"><div class="minicolors-grid-inner"></div><div class="minicolors-picker"><div></div></div></div></div>'),t.inline||(i.after('<span class="minicolors-swatch minicolors-sprite minicolors-input-swatch"><span class="minicolors-swatch-color"></span></span>'),i.next(".minicolors-input-swatch").on("click",function(t){t.preventDefault(),i.focus()})),c=i.parent().find(".minicolors-panel"),c.on("selectstart",function(){return!1}).end(),t.swatches&&0!==t.swatches.length)for(t.swatches.length>7&&(t.swatches.length=7),c.addClass("minicolors-with-swatches"),n=$('<ul class="minicolors-swatches"></ul>').appendTo(c),l=0;l<t.swatches.length;++l)r=t.swatches[l],r=f(r)?u(r,!0):x(p(r,!0)),$('<li class="minicolors-swatch minicolors-sprite"><span class="minicolors-swatch-color"></span></li>').appendTo(n).data("swatch-color",t.swatches[l]).find(".minicolors-swatch-color").css({backgroundColor:y(r),opacity:r.a}),t.swatches[l]=r;t.inline&&i.parent().addClass("minicolors-inline"),e(i,!1),i.data("minicolors-initialized",!0)}}function t(i){var t=i.parent();i.removeData("minicolors-initialized").removeData("minicolors-settings").removeProp("size").removeClass("minicolors-input"),t.before(i).remove()}function o(i){var t=i.parent(),o=t.find(".minicolors-panel"),a=i.data("minicolors-settings");!i.data("minicolors-initialized")||i.prop("disabled")||t.hasClass("minicolors-inline")||t.hasClass("minicolors-focus")||(s(),t.addClass("minicolors-focus"),o.stop(!0,!0).fadeIn(a.showSpeed,function(){a.show&&a.show.call(i.get(0))}))}function s(){$(".minicolors-focus").each(function(){var i=$(this),t=i.find(".minicolors-input"),o=i.find(".minicolors-panel"),s=t.data("minicolors-settings");o.fadeOut(s.hideSpeed,function(){s.hide&&s.hide.call(t.get(0)),i.removeClass("minicolors-focus")})})}function a(i,t,o){var s=i.parents(".minicolors").find(".minicolors-input"),a=s.data("minicolors-settings"),r=i.find("[class$=-picker]"),e=i.offset().left,c=i.offset().top,l=Math.round(t.pageX-e),h=Math.round(t.pageY-c),d=o?a.animationSpeed:0,p,u,g,m;t.originalEvent.changedTouches&&(l=t.originalEvent.changedTouches[0].pageX-e,h=t.originalEvent.changedTouches[0].pageY-c),0>l&&(l=0),0>h&&(h=0),l>i.width()&&(l=i.width()),h>i.height()&&(h=i.height()),i.parent().is(".minicolors-slider-wheel")&&r.parent().is(".minicolors-grid")&&(p=75-l,u=75-h,g=Math.sqrt(p*p+u*u),m=Math.atan2(u,p),0>m&&(m+=2*Math.PI),g>75&&(g=75,l=75-75*Math.cos(m),h=75-75*Math.sin(m)),l=Math.round(l),h=Math.round(h)),i.is(".minicolors-grid")?r.stop(!0).animate({top:h+"px",left:l+"px"},d,a.animationEasing,function(){n(s,i)}):r.stop(!0).animate({top:h+"px"},d,a.animationEasing,function(){n(s,i)})}function n(i,t){function o(i,t){var o,s;return i.length&&t?(o=i.offset().left,s=i.offset().top,{x:o-t.offset().left+i.outerWidth()/2,y:s-t.offset().top+i.outerHeight()/2}):null}var s,a,n,e,l,h,d,p=i.val(),u=i.attr("data-opacity"),g=i.parent(),f=i.data("minicolors-settings"),v=g.find(".minicolors-input-swatch"),b=g.find(".minicolors-grid"),w=g.find(".minicolors-slider"),y=g.find(".minicolors-opacity-slider"),k=b.find("[class$=-picker]"),M=w.find("[class$=-picker]"),x=y.find("[class$=-picker]"),I=o(k,b),S=o(M,w),z=o(x,y);if(t.is(".minicolors-grid, .minicolors-slider, .minicolors-opacity-slider")){switch(f.control){case"wheel":e=b.width()/2-I.x,l=b.height()/2-I.y,h=Math.sqrt(e*e+l*l),d=Math.atan2(l,e),0>d&&(d+=2*Math.PI),h>75&&(h=75,I.x=69-75*Math.cos(d),I.y=69-75*Math.sin(d)),a=m(h/.75,0,100),s=m(180*d/Math.PI,0,360),n=m(100-Math.floor(S.y*(100/w.height())),0,100),p=C({h:s,s:a,b:n}),w.css("backgroundColor",C({h:s,s:a,b:100}));break;case"saturation":s=m(parseInt(I.x*(360/b.width()),10),0,360),a=m(100-Math.floor(S.y*(100/w.height())),0,100),n=m(100-Math.floor(I.y*(100/b.height())),0,100),p=C({h:s,s:a,b:n}),w.css("backgroundColor",C({h:s,s:100,b:n})),g.find(".minicolors-grid-inner").css("opacity",a/100);break;case"brightness":s=m(parseInt(I.x*(360/b.width()),10),0,360),a=m(100-Math.floor(I.y*(100/b.height())),0,100),n=m(100-Math.floor(S.y*(100/w.height())),0,100),p=C({h:s,s:a,b:n}),w.css("backgroundColor",C({h:s,s:a,b:100})),g.find(".minicolors-grid-inner").css("opacity",1-n/100);break;default:s=m(360-parseInt(S.y*(360/w.height()),10),0,360),a=m(Math.floor(I.x*(100/b.width())),0,100),n=m(100-Math.floor(I.y*(100/b.height())),0,100),p=C({h:s,s:a,b:n}),b.css("backgroundColor",C({h:s,s:100,b:100}))}u=f.opacity?parseFloat(1-z.y/y.height()).toFixed(2):1,r(i,p,u)}else v.find("span").css({backgroundColor:p,opacity:u}),c(i,p,u)}function r(i,t,o){var s,a=i.parent(),n=i.data("minicolors-settings"),r=a.find(".minicolors-input-swatch");n.opacity&&i.attr("data-opacity",o),"rgb"===n.format?(s=f(t)?u(t,!0):x(p(t,!0)),o=""===i.attr("data-opacity")?1:m(parseFloat(i.attr("data-opacity")).toFixed(2),0,1),(isNaN(o)||!n.opacity)&&(o=1),t=i.minicolors("rgbObject").a<=1&&s&&n.opacity?"rgba("+s.r+", "+s.g+", "+s.b+", "+parseFloat(o)+")":"rgb("+s.r+", "+s.g+", "+s.b+")"):(f(t)&&(t=w(t)),t=d(t,n.letterCase)),i.val(t),r.find("span").css({backgroundColor:t,opacity:o}),c(i,t,o)}function e(i,t){var o,s,a,n,r,e,l,h,b,y,M=i.parent(),x=i.data("minicolors-settings"),I=M.find(".minicolors-input-swatch"),S=M.find(".minicolors-grid"),z=M.find(".minicolors-slider"),F=M.find(".minicolors-opacity-slider"),D=S.find("[class$=-picker]"),T=z.find("[class$=-picker]"),j=F.find("[class$=-picker]");switch(f(i.val())?(o=w(i.val()),r=m(parseFloat(v(i.val())).toFixed(2),0,1),r&&i.attr("data-opacity",r)):o=d(p(i.val(),!0),x.letterCase),o||(o=d(g(x.defaultValue,!0),x.letterCase)),s=k(o),n=x.keywords?$.map(x.keywords.split(","),function(i){return $.trim(i.toLowerCase())}):[],e=""!==i.val()&&$.inArray(i.val().toLowerCase(),n)>-1?d(i.val()):f(i.val())?u(i.val()):o,t||i.val(e),x.opacity&&(a=""===i.attr("data-opacity")?1:m(parseFloat(i.attr("data-opacity")).toFixed(2),0,1),isNaN(a)&&(a=1),i.attr("data-opacity",a),I.find("span").css("opacity",a),h=m(F.height()-F.height()*a,0,F.height()),j.css("top",h+"px")),"transparent"===i.val().toLowerCase()&&I.find("span").css("opacity",0),I.find("span").css("backgroundColor",o),x.control){case"wheel":b=m(Math.ceil(.75*s.s),0,S.height()/2),y=s.h*Math.PI/180,l=m(75-Math.cos(y)*b,0,S.width()),h=m(75-Math.sin(y)*b,0,S.height()),D.css({top:h+"px",left:l+"px"}),h=150-s.b/(100/S.height()),""===o&&(h=0),T.css("top",h+"px"),z.css("backgroundColor",C({h:s.h,s:s.s,b:100}));break;case"saturation":l=m(5*s.h/12,0,150),h=m(S.height()-Math.ceil(s.b/(100/S.height())),0,S.height()),D.css({top:h+"px",left:l+"px"}),h=m(z.height()-s.s*(z.height()/100),0,z.height()),T.css("top",h+"px"),z.css("backgroundColor",C({h:s.h,s:100,b:s.b})),M.find(".minicolors-grid-inner").css("opacity",s.s/100);break;case"brightness":l=m(5*s.h/12,0,150),h=m(S.height()-Math.ceil(s.s/(100/S.height())),0,S.height()),D.css({top:h+"px",left:l+"px"}),h=m(z.height()-s.b*(z.height()/100),0,z.height()),T.css("top",h+"px"),z.css("backgroundColor",C({h:s.h,s:s.s,b:100})),M.find(".minicolors-grid-inner").css("opacity",1-s.b/100);break;default:l=m(Math.ceil(s.s/(100/S.width())),0,S.width()),h=m(S.height()-Math.ceil(s.b/(100/S.height())),0,S.height()),D.css({top:h+"px",left:l+"px"}),h=m(z.height()-s.h/(360/z.height()),0,z.height()),T.css("top",h+"px"),S.css("backgroundColor",C({h:s.h,s:100,b:100}))}i.data("minicolors-initialized")&&c(i,e,a)}function c(i,t,o){var s=i.data("minicolors-settings"),a=i.data("minicolors-lastChange"),n,r,e;if(!a||a.value!==t||a.opacity!==o){if(i.data("minicolors-lastChange",{value:t,opacity:o}),s.swatches&&0!==s.swatches.length){for(n=f(t)?u(t,!0):x(t),r=-1,e=0;e<s.swatches.length;++e)if(n.r===s.swatches[e].r&&n.g===s.swatches[e].g&&n.b===s.swatches[e].b&&n.a===s.swatches[e].a){r=e;break}i.parent().find(".minicolors-swatches .minicolors-swatch").removeClass("selected"),-1!==e&&i.parent().find(".minicolors-swatches .minicolors-swatch").eq(e).addClass("selected")}s.change&&(s.changeDelay?(clearTimeout(i.data("minicolors-changeTimeout")),i.data("minicolors-changeTimeout",setTimeout(function(){s.change.call(i.get(0),t,o)},s.changeDelay))):s.change.call(i.get(0),t,o)),i.trigger("change").trigger("input")}}function l(i){var t=p($(i).val(),!0),o=x(t),s=$(i).attr("data-opacity");return o?(void 0!==s&&$.extend(o,{a:parseFloat(s)}),o):null}function h(i,t){var o=p($(i).val(),!0),s=x(o),a=$(i).attr("data-opacity");return s?(void 0===a&&(a=1),t?"rgba("+s.r+", "+s.g+", "+s.b+", "+parseFloat(a)+")":"rgb("+s.r+", "+s.g+", "+s.b+")"):null}function d(i,t){return"uppercase"===t?i.toUpperCase():i.toLowerCase()}function p(i,t){return i=i.replace(/^#/g,""),i.match(/^[A-F0-9]{3,6}/gi)?3!==i.length&&6!==i.length?"":(3===i.length&&t&&(i=i[0]+i[0]+i[1]+i[1]+i[2]+i[2]),"#"+i):""}function u(i,t){var o=i.replace(/[^\d,.]/g,""),s=o.split(",");return s[0]=m(parseInt(s[0],10),0,255),s[1]=m(parseInt(s[1],10),0,255),s[2]=m(parseInt(s[2],10),0,255),s[3]&&(s[3]=m(parseFloat(s[3],10),0,1)),t?{r:s[0],g:s[1],b:s[2],a:s[3]?s[3]:null}:"undefined"!=typeof s[3]&&s[3]<=1?"rgba("+s[0]+", "+s[1]+", "+s[2]+", "+s[3]+")":"rgb("+s[0]+", "+s[1]+", "+s[2]+")"}function g(i,t){return f(i)?u(i):p(i,t)}function m(i,t,o){return t>i&&(i=t),i>o&&(i=o),i}function f(i){var t=i.match(/^rgba?[\s+]?\([\s+]?(\d+)[\s+]?,[\s+]?(\d+)[\s+]?,[\s+]?(\d+)[\s+]?/i);return t&&4===t.length?!0:!1}function v(i){return i=i.match(/^rgba?[\s+]?\([\s+]?(\d+)[\s+]?,[\s+]?(\d+)[\s+]?,[\s+]?(\d+)[\s+]?,[\s+]?(\d+(\.\d{1,2})?|\.\d{1,2})[\s+]?/i),i&&6===i.length?i[4]:"1"}function b(i){var t={},o=Math.round(i.h),s=Math.round(255*i.s/100),a=Math.round(255*i.b/100);if(0===s)t.r=t.g=t.b=a;else{var n=a,r=(255-s)*a/255,e=(n-r)*(o%60)/60;360===o&&(o=0),60>o?(t.r=n,t.b=r,t.g=r+e):120>o?(t.g=n,t.b=r,t.r=n-e):180>o?(t.g=n,t.r=r,t.b=r+e):240>o?(t.b=n,t.r=r,t.g=n-e):300>o?(t.b=n,t.g=r,t.r=r+e):360>o?(t.r=n,t.g=r,t.b=n-e):(t.r=0,t.g=0,t.b=0)}return{r:Math.round(t.r),g:Math.round(t.g),b:Math.round(t.b)}}function w(i){return i=i.match(/^rgba?[\s+]?\([\s+]?(\d+)[\s+]?,[\s+]?(\d+)[\s+]?,[\s+]?(\d+)[\s+]?/i),i&&4===i.length?"#"+("0"+parseInt(i[1],10).toString(16)).slice(-2)+("0"+parseInt(i[2],10).toString(16)).slice(-2)+("0"+parseInt(i[3],10).toString(16)).slice(-2):""}function y(i){var t=[i.r.toString(16),i.g.toString(16),i.b.toString(16)];return $.each(t,function(i,o){1===o.length&&(t[i]="0"+o)}),"#"+t.join("")}function C(i){return y(b(i))}function k(i){var t=M(x(i));return 0===t.s&&(t.h=360),t}function M(i){var t={h:0,s:0,b:0},o=Math.min(i.r,i.g,i.b),s=Math.max(i.r,i.g,i.b),a=s-o;return t.b=s,t.s=0!==s?255*a/s:0,0!==t.s?i.r===s?t.h=(i.g-i.b)/a:i.g===s?t.h=2+(i.b-i.r)/a:t.h=4+(i.r-i.g)/a:t.h=-1,t.h*=60,t.h<0&&(t.h+=360),t.s*=100/255,t.b*=100/255,t}function x(i){return i=parseInt(i.indexOf("#")>-1?i.substring(1):i,16),{r:i>>16,g:(65280&i)>>8,b:255&i}}$.minicolors={defaults:{animationSpeed:50,animationEasing:"swing",change:null,changeDelay:0,control:"hue",dataUris:!0,defaultValue:"",format:"hex",hide:null,hideSpeed:100,inline:!1,keywords:"",letterCase:"lowercase",opacity:!1,position:"bottom left",show:null,showSpeed:100,theme:"default",swatches:[]}},$.extend($.fn,{minicolors:function(a,n){switch(a){case"destroy":return $(this).each(function(){t($(this))}),$(this);case"hide":return s(),$(this);case"opacity":return void 0===n?$(this).attr("data-opacity"):($(this).each(function(){e($(this).attr("data-opacity",n))}),$(this));case"rgbObject":return l($(this),"rgbaObject"===a);case"rgbString":case"rgbaString":return h($(this),"rgbaString"===a);case"settings":return void 0===n?$(this).data("minicolors-settings"):($(this).each(function(){var i=$(this).data("minicolors-settings")||{};t($(this)),$(this).minicolors($.extend(!0,i,n))}),$(this));case"show":return o($(this).eq(0)),$(this);case"value":return void 0===n?$(this).val():($(this).each(function(){"object"==typeof n?(n.opacity&&$(this).attr("data-opacity",m(n.opacity,0,1)),n.color&&$(this).val(n.color)):$(this).val(n),e($(this))}),$(this));default:return"create"!==a&&(n=a),$(this).each(function(){i($(this),n)}),$(this)}}}),$(document).on("mousedown.minicolors touchstart.minicolors",function(i){$(i.target).parents().add(i.target).hasClass("minicolors")||s()}).on("mousedown.minicolors touchstart.minicolors",".minicolors-grid, .minicolors-slider, .minicolors-opacity-slider",function(i){var t=$(this);i.preventDefault(),$(document).data("minicolors-target",t),a(t,i,!0)}).on("mousemove.minicolors touchmove.minicolors",function(i){var t=$(document).data("minicolors-target");t&&a(t,i)}).on("mouseup.minicolors touchend.minicolors",function(){$(this).removeData("minicolors-target")}).on("click.minicolors",".minicolors-swatches li",function(i){i.preventDefault();var t=$(this),o=t.parents(".minicolors").find(".minicolors-input"),s=t.data("swatch-color");r(o,s,v(s)),e(o)}).on("mousedown.minicolors touchstart.minicolors",".minicolors-input-swatch",function(i){var t=$(this).parent().find(".minicolors-input");i.preventDefault(),o(t)}).on("focus.minicolors",".minicolors-input",function(){var i=$(this);i.data("minicolors-initialized")&&o(i)}).on("blur.minicolors",".minicolors-input",function(){var i=$(this),t=i.data("minicolors-settings"),o,s,a,n,r;i.data("minicolors-initialized")&&(o=t.keywords?$.map(t.keywords.split(","),function(i){return $.trim(i.toLowerCase())}):[],""!==i.val()&&$.inArray(i.val().toLowerCase(),o)>-1?r=i.val():(f(i.val())?a=u(i.val(),!0):(s=p(i.val(),!0),a=s?x(s):null),r=null===a?t.defaultValue:"rgb"===t.format?u(t.opacity?"rgba("+a.r+","+a.g+","+a.b+","+i.attr("data-opacity")+")":"rgb("+a.r+","+a.g+","+a.b+")"):y(a)),n=t.opacity?i.attr("data-opacity"):1,"transparent"===r.toLowerCase()&&(n=0),i.closest(".minicolors").find(".minicolors-input-swatch > span").css("opacity",n),i.val(r),""===i.val()&&i.val(g(t.defaultValue,!0)),i.val(d(i.val(),t.letterCase)))}).on("keydown.minicolors",".minicolors-input",function(i){var t=$(this);if(t.data("minicolors-initialized"))switch(i.keyCode){case 9:s();break;case 13:case 27:s(),t.blur()}}).on("keyup.minicolors",".minicolors-input",function(){var i=$(this);i.data("minicolors-initialized")&&e(i,!0)}).on("paste.minicolors",".minicolors-input",function(){var i=$(this);i.data("minicolors-initialized")&&setTimeout(function(){e(i,!0)},1)})});
|
1 |
+
//
|
2 |
+
// jQuery MiniColors: A tiny color picker built on jQuery
|
3 |
+
//
|
4 |
+
// Developed by Cory LaViska for A Beautiful Site, LLC
|
5 |
+
//
|
6 |
+
// Licensed under the MIT license: http://opensource.org/licenses/MIT
|
7 |
+
//
|
8 |
+
!function(i){"function"==typeof define&&define.amd?define(["jquery"],i):"object"==typeof exports?module.exports=i(require("jquery")):i(jQuery)}(function(i){"use strict";function t(t,o){var s,a,n,e,r,l=i('<div class="minicolors" />'),h=i.minicolors.defaults;if(!t.data("minicolors-initialized")){if(o=i.extend(!0,{},h,o),l.addClass("minicolors-theme-"+o.theme).toggleClass("minicolors-with-opacity",o.opacity),void 0!==o.position&&i.each(o.position.split(" "),function(){l.addClass("minicolors-position-"+this)}),s="rgb"===o.format?o.opacity?"25":"20":o.keywords?"11":"7",t.addClass("minicolors-input").data("minicolors-initialized",!1).data("minicolors-settings",o).prop("size",s).wrap(l).after('<div class="minicolors-panel minicolors-slider-'+o.control+'"><div class="minicolors-slider minicolors-sprite"><div class="minicolors-picker"></div></div><div class="minicolors-opacity-slider minicolors-sprite"><div class="minicolors-picker"></div></div><div class="minicolors-grid minicolors-sprite"><div class="minicolors-grid-inner"></div><div class="minicolors-picker"><div></div></div></div></div>'),o.inline||(t.after('<span class="minicolors-swatch minicolors-sprite minicolors-input-swatch"><span class="minicolors-swatch-color"></span></span>'),t.next(".minicolors-input-swatch").on("click",function(i){i.preventDefault(),t.focus()})),e=t.parent().find(".minicolors-panel"),e.on("selectstart",function(){return!1}).end(),o.swatches&&0!==o.swatches.length)for(e.addClass("minicolors-with-swatches"),a=i('<ul class="minicolors-swatches"></ul>').appendTo(e),r=0;r<o.swatches.length;++r)n=o.swatches[r],n=v(n)?g(n,!0):I(u(n,!0)),i('<li class="minicolors-swatch minicolors-sprite"><span class="minicolors-swatch-color"></span></li>').appendTo(a).data("swatch-color",o.swatches[r]).find(".minicolors-swatch-color").css({backgroundColor:C(n),opacity:n.a}),o.swatches[r]=n;o.inline&&t.parent().addClass("minicolors-inline"),c(t,!1),t.data("minicolors-initialized",!0)}}function o(i){var t=i.parent();i.removeData("minicolors-initialized").removeData("minicolors-settings").removeProp("size").removeClass("minicolors-input"),t.before(i).remove()}function s(i){var t=i.parent(),o=t.find(".minicolors-panel"),s=i.data("minicolors-settings");!i.data("minicolors-initialized")||i.prop("disabled")||t.hasClass("minicolors-inline")||t.hasClass("minicolors-focus")||(a(),t.addClass("minicolors-focus"),o.stop(!0,!0).fadeIn(s.showSpeed,function(){s.show&&s.show.call(i.get(0))}))}function a(){i(".minicolors-focus").each(function(){var t=i(this),o=t.find(".minicolors-input"),s=t.find(".minicolors-panel"),a=o.data("minicolors-settings");s.fadeOut(a.hideSpeed,function(){a.hide&&a.hide.call(o.get(0)),t.removeClass("minicolors-focus")})})}function n(i,t,o){var s,a,n,r,c=i.parents(".minicolors").find(".minicolors-input"),l=c.data("minicolors-settings"),h=i.find("[class$=-picker]"),d=i.offset().left,p=i.offset().top,u=Math.round(t.pageX-d),g=Math.round(t.pageY-p),m=o?l.animationSpeed:0;t.originalEvent.changedTouches&&(u=t.originalEvent.changedTouches[0].pageX-d,g=t.originalEvent.changedTouches[0].pageY-p),u<0&&(u=0),g<0&&(g=0),u>i.width()&&(u=i.width()),g>i.height()&&(g=i.height()),i.parent().is(".minicolors-slider-wheel")&&h.parent().is(".minicolors-grid")&&(s=75-u,a=75-g,n=Math.sqrt(s*s+a*a),r=Math.atan2(a,s),r<0&&(r+=2*Math.PI),n>75&&(n=75,u=75-75*Math.cos(r),g=75-75*Math.sin(r)),u=Math.round(u),g=Math.round(g)),i.is(".minicolors-grid")?h.stop(!0).animate({top:g+"px",left:u+"px"},m,l.animationEasing,function(){e(c,i)}):h.stop(!0).animate({top:g+"px"},m,l.animationEasing,function(){e(c,i)})}function e(i,t){function o(i,t){var o,s;return i.length&&t?(o=i.offset().left,s=i.offset().top,{x:o-t.offset().left+i.outerWidth()/2,y:s-t.offset().top+i.outerHeight()/2}):null}var s,a,n,e,c,h,d,p=i.val(),u=i.attr("data-opacity"),g=i.parent(),m=i.data("minicolors-settings"),v=g.find(".minicolors-input-swatch"),b=g.find(".minicolors-grid"),w=g.find(".minicolors-slider"),y=g.find(".minicolors-opacity-slider"),C=b.find("[class$=-picker]"),M=w.find("[class$=-picker]"),x=y.find("[class$=-picker]"),I=o(C,b),S=o(M,w),z=o(x,y);if(t.is(".minicolors-grid, .minicolors-slider, .minicolors-opacity-slider")){switch(m.control){case"wheel":e=b.width()/2-I.x,c=b.height()/2-I.y,h=Math.sqrt(e*e+c*c),d=Math.atan2(c,e),d<0&&(d+=2*Math.PI),h>75&&(h=75,I.x=69-75*Math.cos(d),I.y=69-75*Math.sin(d)),a=f(h/.75,0,100),s=f(180*d/Math.PI,0,360),n=f(100-Math.floor(S.y*(100/w.height())),0,100),p=k({h:s,s:a,b:n}),w.css("backgroundColor",k({h:s,s:a,b:100}));break;case"saturation":s=f(parseInt(I.x*(360/b.width()),10),0,360),a=f(100-Math.floor(S.y*(100/w.height())),0,100),n=f(100-Math.floor(I.y*(100/b.height())),0,100),p=k({h:s,s:a,b:n}),w.css("backgroundColor",k({h:s,s:100,b:n})),g.find(".minicolors-grid-inner").css("opacity",a/100);break;case"brightness":s=f(parseInt(I.x*(360/b.width()),10),0,360),a=f(100-Math.floor(I.y*(100/b.height())),0,100),n=f(100-Math.floor(S.y*(100/w.height())),0,100),p=k({h:s,s:a,b:n}),w.css("backgroundColor",k({h:s,s:a,b:100})),g.find(".minicolors-grid-inner").css("opacity",1-n/100);break;default:s=f(360-parseInt(S.y*(360/w.height()),10),0,360),a=f(Math.floor(I.x*(100/b.width())),0,100),n=f(100-Math.floor(I.y*(100/b.height())),0,100),p=k({h:s,s:a,b:n}),b.css("backgroundColor",k({h:s,s:100,b:100}))}u=m.opacity?parseFloat(1-z.y/y.height()).toFixed(2):1,r(i,p,u)}else v.find("span").css({backgroundColor:p,opacity:u}),l(i,p,u)}function r(i,t,o){var s,a=i.parent(),n=i.data("minicolors-settings"),e=a.find(".minicolors-input-swatch");n.opacity&&i.attr("data-opacity",o),"rgb"===n.format?(s=v(t)?g(t,!0):I(u(t,!0)),o=""===i.attr("data-opacity")?1:f(parseFloat(i.attr("data-opacity")).toFixed(2),0,1),!isNaN(o)&&n.opacity||(o=1),t=i.minicolors("rgbObject").a<=1&&s&&n.opacity?"rgba("+s.r+", "+s.g+", "+s.b+", "+parseFloat(o)+")":"rgb("+s.r+", "+s.g+", "+s.b+")"):(v(t)&&(t=y(t)),t=p(t,n.letterCase)),i.val(t),e.find("span").css({backgroundColor:t,opacity:o}),l(i,t,o)}function c(t,o){var s,a,n,e,r,c,h,d,w,C,x=t.parent(),I=t.data("minicolors-settings"),S=x.find(".minicolors-input-swatch"),z=x.find(".minicolors-grid"),F=x.find(".minicolors-slider"),T=x.find(".minicolors-opacity-slider"),D=z.find("[class$=-picker]"),j=F.find("[class$=-picker]"),q=T.find("[class$=-picker]");switch(v(t.val())?(s=y(t.val()),r=f(parseFloat(b(t.val())).toFixed(2),0,1),r&&t.attr("data-opacity",r)):s=p(u(t.val(),!0),I.letterCase),s||(s=p(m(I.defaultValue,!0),I.letterCase)),a=M(s),e=I.keywords?i.map(I.keywords.split(","),function(t){return i.trim(t.toLowerCase())}):[],c=""!==t.val()&&i.inArray(t.val().toLowerCase(),e)>-1?p(t.val()):v(t.val())?g(t.val()):s,o||t.val(c),I.opacity&&(n=""===t.attr("data-opacity")?1:f(parseFloat(t.attr("data-opacity")).toFixed(2),0,1),isNaN(n)&&(n=1),t.attr("data-opacity",n),S.find("span").css("opacity",n),d=f(T.height()-T.height()*n,0,T.height()),q.css("top",d+"px")),"transparent"===t.val().toLowerCase()&&S.find("span").css("opacity",0),S.find("span").css("backgroundColor",s),I.control){case"wheel":w=f(Math.ceil(.75*a.s),0,z.height()/2),C=a.h*Math.PI/180,h=f(75-Math.cos(C)*w,0,z.width()),d=f(75-Math.sin(C)*w,0,z.height()),D.css({top:d+"px",left:h+"px"}),d=150-a.b/(100/z.height()),""===s&&(d=0),j.css("top",d+"px"),F.css("backgroundColor",k({h:a.h,s:a.s,b:100}));break;case"saturation":h=f(5*a.h/12,0,150),d=f(z.height()-Math.ceil(a.b/(100/z.height())),0,z.height()),D.css({top:d+"px",left:h+"px"}),d=f(F.height()-a.s*(F.height()/100),0,F.height()),j.css("top",d+"px"),F.css("backgroundColor",k({h:a.h,s:100,b:a.b})),x.find(".minicolors-grid-inner").css("opacity",a.s/100);break;case"brightness":h=f(5*a.h/12,0,150),d=f(z.height()-Math.ceil(a.s/(100/z.height())),0,z.height()),D.css({top:d+"px",left:h+"px"}),d=f(F.height()-a.b*(F.height()/100),0,F.height()),j.css("top",d+"px"),F.css("backgroundColor",k({h:a.h,s:a.s,b:100})),x.find(".minicolors-grid-inner").css("opacity",1-a.b/100);break;default:h=f(Math.ceil(a.s/(100/z.width())),0,z.width()),d=f(z.height()-Math.ceil(a.b/(100/z.height())),0,z.height()),D.css({top:d+"px",left:h+"px"}),d=f(F.height()-a.h/(360/F.height()),0,F.height()),j.css("top",d+"px"),z.css("backgroundColor",k({h:a.h,s:100,b:100}))}t.data("minicolors-initialized")&&l(t,c,n)}function l(i,t,o){var s,a,n,e=i.data("minicolors-settings"),r=i.data("minicolors-lastChange");if(!r||r.value!==t||r.opacity!==o){if(i.data("minicolors-lastChange",{value:t,opacity:o}),e.swatches&&0!==e.swatches.length){for(s=v(t)?g(t,!0):I(t),a=-1,n=0;n<e.swatches.length;++n)if(s.r===e.swatches[n].r&&s.g===e.swatches[n].g&&s.b===e.swatches[n].b&&s.a===e.swatches[n].a){a=n;break}i.parent().find(".minicolors-swatches .minicolors-swatch").removeClass("selected"),a!==-1&&i.parent().find(".minicolors-swatches .minicolors-swatch").eq(n).addClass("selected")}e.change&&(e.changeDelay?(clearTimeout(i.data("minicolors-changeTimeout")),i.data("minicolors-changeTimeout",setTimeout(function(){e.change.call(i.get(0),t,o)},e.changeDelay))):e.change.call(i.get(0),t,o)),i.trigger("change").trigger("input")}}function h(t){var o,s=i(t).attr("data-opacity");if(v(i(t).val()))o=g(i(t).val(),!0);else{var a=u(i(t).val(),!0);o=I(a)}return o?(void 0!==s&&i.extend(o,{a:parseFloat(s)}),o):null}function d(t,o){var s,a=i(t).attr("data-opacity");if(v(i(t).val()))s=g(i(t).val(),!0);else{var n=u(i(t).val(),!0);s=I(n)}return s?(void 0===a&&(a=1),o?"rgba("+s.r+", "+s.g+", "+s.b+", "+parseFloat(a)+")":"rgb("+s.r+", "+s.g+", "+s.b+")"):null}function p(i,t){return"uppercase"===t?i.toUpperCase():i.toLowerCase()}function u(i,t){return i=i.replace(/^#/g,""),i.match(/^[A-F0-9]{3,6}/gi)?3!==i.length&&6!==i.length?"":(3===i.length&&t&&(i=i[0]+i[0]+i[1]+i[1]+i[2]+i[2]),"#"+i):""}function g(i,t){var o=i.replace(/[^\d,.]/g,""),s=o.split(",");return s[0]=f(parseInt(s[0],10),0,255),s[1]=f(parseInt(s[1],10),0,255),s[2]=f(parseInt(s[2],10),0,255),s[3]&&(s[3]=f(parseFloat(s[3],10),0,1)),t?s[3]?{r:s[0],g:s[1],b:s[2],a:s[3]}:{r:s[0],g:s[1],b:s[2]}:"undefined"!=typeof s[3]&&s[3]<=1?"rgba("+s[0]+", "+s[1]+", "+s[2]+", "+s[3]+")":"rgb("+s[0]+", "+s[1]+", "+s[2]+")"}function m(i,t){return v(i)?g(i):u(i,t)}function f(i,t,o){return i<t&&(i=t),i>o&&(i=o),i}function v(i){var t=i.match(/^rgba?[\s+]?\([\s+]?(\d+)[\s+]?,[\s+]?(\d+)[\s+]?,[\s+]?(\d+)[\s+]?/i);return!(!t||4!==t.length)}function b(i){return i=i.match(/^rgba?[\s+]?\([\s+]?(\d+)[\s+]?,[\s+]?(\d+)[\s+]?,[\s+]?(\d+)[\s+]?,[\s+]?(\d+(\.\d{1,2})?|\.\d{1,2})[\s+]?/i),i&&6===i.length?i[4]:"1"}function w(i){var t={},o=Math.round(i.h),s=Math.round(255*i.s/100),a=Math.round(255*i.b/100);if(0===s)t.r=t.g=t.b=a;else{var n=a,e=(255-s)*a/255,r=(n-e)*(o%60)/60;360===o&&(o=0),o<60?(t.r=n,t.b=e,t.g=e+r):o<120?(t.g=n,t.b=e,t.r=n-r):o<180?(t.g=n,t.r=e,t.b=e+r):o<240?(t.b=n,t.r=e,t.g=n-r):o<300?(t.b=n,t.g=e,t.r=e+r):o<360?(t.r=n,t.g=e,t.b=n-r):(t.r=0,t.g=0,t.b=0)}return{r:Math.round(t.r),g:Math.round(t.g),b:Math.round(t.b)}}function y(i){return i=i.match(/^rgba?[\s+]?\([\s+]?(\d+)[\s+]?,[\s+]?(\d+)[\s+]?,[\s+]?(\d+)[\s+]?/i),i&&4===i.length?"#"+("0"+parseInt(i[1],10).toString(16)).slice(-2)+("0"+parseInt(i[2],10).toString(16)).slice(-2)+("0"+parseInt(i[3],10).toString(16)).slice(-2):""}function C(t){var o=[t.r.toString(16),t.g.toString(16),t.b.toString(16)];return i.each(o,function(i,t){1===t.length&&(o[i]="0"+t)}),"#"+o.join("")}function k(i){return C(w(i))}function M(i){var t=x(I(i));return 0===t.s&&(t.h=360),t}function x(i){var t={h:0,s:0,b:0},o=Math.min(i.r,i.g,i.b),s=Math.max(i.r,i.g,i.b),a=s-o;return t.b=s,t.s=0!==s?255*a/s:0,0!==t.s?i.r===s?t.h=(i.g-i.b)/a:i.g===s?t.h=2+(i.b-i.r)/a:t.h=4+(i.r-i.g)/a:t.h=-1,t.h*=60,t.h<0&&(t.h+=360),t.s*=100/255,t.b*=100/255,t}function I(i){return i=parseInt(i.indexOf("#")>-1?i.substring(1):i,16),{r:i>>16,g:(65280&i)>>8,b:255&i}}i.minicolors={defaults:{animationSpeed:50,animationEasing:"swing",change:null,changeDelay:0,control:"hue",defaultValue:"",format:"hex",hide:null,hideSpeed:100,inline:!1,keywords:"",letterCase:"lowercase",opacity:!1,position:"bottom left",show:null,showSpeed:100,theme:"default",swatches:[]}},i.extend(i.fn,{minicolors:function(n,e){switch(n){case"destroy":return i(this).each(function(){o(i(this))}),i(this);case"hide":return a(),i(this);case"opacity":return void 0===e?i(this).attr("data-opacity"):(i(this).each(function(){c(i(this).attr("data-opacity",e))}),i(this));case"rgbObject":return h(i(this),"rgbaObject"===n);case"rgbString":case"rgbaString":return d(i(this),"rgbaString"===n);case"settings":return void 0===e?i(this).data("minicolors-settings"):(i(this).each(function(){var t=i(this).data("minicolors-settings")||{};o(i(this)),i(this).minicolors(i.extend(!0,t,e))}),i(this));case"show":return s(i(this).eq(0)),i(this);case"value":return void 0===e?i(this).val():(i(this).each(function(){"object"==typeof e&&"null"!==e?(e.opacity&&i(this).attr("data-opacity",f(e.opacity,0,1)),e.color&&i(this).val(e.color)):i(this).val(e),c(i(this))}),i(this));default:return"create"!==n&&(e=n),i(this).each(function(){t(i(this),e)}),i(this)}}}),i([document,top.document]).on("mousedown.minicolors touchstart.minicolors",function(t){i(t.target).parents().add(t.target).hasClass("minicolors")||a()}).on("mousedown.minicolors touchstart.minicolors",".minicolors-grid, .minicolors-slider, .minicolors-opacity-slider",function(t){var o=i(this);t.preventDefault(),i(t.delegateTarget).data("minicolors-target",o),n(o,t,!0)}).on("mousemove.minicolors touchmove.minicolors",function(t){var o=i(t.delegateTarget).data("minicolors-target");o&&n(o,t)}).on("mouseup.minicolors touchend.minicolors",function(){i(this).removeData("minicolors-target")}).on("click.minicolors",".minicolors-swatches li",function(t){t.preventDefault();var o=i(this),s=o.parents(".minicolors").find(".minicolors-input"),a=o.data("swatch-color");r(s,a,b(a)),c(s)}).on("mousedown.minicolors touchstart.minicolors",".minicolors-input-swatch",function(t){var o=i(this).parent().find(".minicolors-input");t.preventDefault(),s(o)}).on("focus.minicolors",".minicolors-input",function(){var t=i(this);t.data("minicolors-initialized")&&s(t)}).on("blur.minicolors",".minicolors-input",function(){var t,o,s,a,n,e=i(this),r=e.data("minicolors-settings");e.data("minicolors-initialized")&&(t=r.keywords?i.map(r.keywords.split(","),function(t){return i.trim(t.toLowerCase())}):[],""!==e.val()&&i.inArray(e.val().toLowerCase(),t)>-1?n=e.val():(v(e.val())?s=g(e.val(),!0):(o=u(e.val(),!0),s=o?I(o):null),n=null===s?r.defaultValue:"rgb"===r.format?g(r.opacity?"rgba("+s.r+","+s.g+","+s.b+","+e.attr("data-opacity")+")":"rgb("+s.r+","+s.g+","+s.b+")"):C(s)),a=r.opacity?e.attr("data-opacity"):1,"transparent"===n.toLowerCase()&&(a=0),e.closest(".minicolors").find(".minicolors-input-swatch > span").css("opacity",a),e.val(n),""===e.val()&&e.val(m(r.defaultValue,!0)),e.val(p(e.val(),r.letterCase)))}).on("keydown.minicolors",".minicolors-input",function(t){var o=i(this);if(o.data("minicolors-initialized"))switch(t.keyCode){case 9:a();break;case 13:case 27:a(),o.blur()}}).on("keyup.minicolors",".minicolors-input",function(){var t=i(this);t.data("minicolors-initialized")&&c(t,!0)}).on("paste.minicolors",".minicolors-input",function(){var t=i(this);t.data("minicolors-initialized")&&setTimeout(function(){c(t,!0)},1)})});
|
|
|
|
|
|
assets/js/wpforms-preview.js
DELETED
@@ -1,17 +0,0 @@
|
|
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));
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
changelog.txt
CHANGED
@@ -1,5 +1,21 @@
|
|
1 |
== Changelog ==
|
2 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
3 |
= 1.3.8 =
|
4 |
- Changed: Available conditional logic rules/functionality with Providers have been updated
|
5 |
- Changed: Updated form builder modals (jquery-confirm.js)
|
1 |
== Changelog ==
|
2 |
|
3 |
+
= 1.3.9.1 =
|
4 |
+
- Changed: Template Export excludes array items with empty strings
|
5 |
+
- Fixed: Admin notices displaying on plugin Welcome/activation screen
|
6 |
+
- Fixed: WPForms admin pages displaying blank due to conflicts with a few other plugins
|
7 |
+
|
8 |
+
= 1.3.9 =
|
9 |
+
- Added: Complete redesign and refactor of admin area
|
10 |
+
- Added: New Settings API
|
11 |
+
- Added: Entry print preview compact mode
|
12 |
+
- Added: Entry print preview view entry notes
|
13 |
+
- Added: Dynamic field choices nest hierarchical items
|
14 |
+
- Added: Form import/export to Tools sub page
|
15 |
+
- Added: Form template export to Tools sub page
|
16 |
+
- Changed: System Info content to new Tools sub-page
|
17 |
+
- Changed: Shortcode provided in form builder now includes title/description arguments
|
18 |
+
|
19 |
= 1.3.8 =
|
20 |
- Changed: Available conditional logic rules/functionality with Providers have been updated
|
21 |
- Changed: Updated form builder modals (jquery-confirm.js)
|
includes/admin/admin.php
ADDED
@@ -0,0 +1,310 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Global admin related items and functionality.
|
4 |
+
*
|
5 |
+
* @package WPForms
|
6 |
+
* @author WPForms
|
7 |
+
* @since 1.3.9
|
8 |
+
* @license GPL-2.0+
|
9 |
+
* @copyright Copyright (c) 2017, WPForms LLC
|
10 |
+
*/
|
11 |
+
|
12 |
+
/**
|
13 |
+
* Helper function to determine if viewing an WPForms related admin page.
|
14 |
+
*
|
15 |
+
* @since 1.3.9
|
16 |
+
* @return boolean
|
17 |
+
*/
|
18 |
+
function wpforms_is_admin_page() {
|
19 |
+
|
20 |
+
// Bail if we're not on a WPForms screen or page (also exclude form builder).
|
21 |
+
if ( ! is_admin() || empty( $_REQUEST['page'] ) || strpos( $_REQUEST['page'], 'wpforms' ) === false || 'wpforms-builder' === $_REQUEST['page'] ) {
|
22 |
+
return false;
|
23 |
+
}
|
24 |
+
|
25 |
+
return true;
|
26 |
+
}
|
27 |
+
|
28 |
+
/**
|
29 |
+
* Load styles for all WPForms-related admin screens.
|
30 |
+
*
|
31 |
+
* @since 1.3.9
|
32 |
+
*/
|
33 |
+
function wpforms_admin_styles() {
|
34 |
+
|
35 |
+
if ( ! wpforms_is_admin_page() ) {
|
36 |
+
return;
|
37 |
+
}
|
38 |
+
|
39 |
+
// jQuery confirm.
|
40 |
+
wp_enqueue_style(
|
41 |
+
'jquery-confirm',
|
42 |
+
WPFORMS_PLUGIN_URL . 'assets/css/jquery-confirm.min.css',
|
43 |
+
array(),
|
44 |
+
'3.2.3'
|
45 |
+
);
|
46 |
+
|
47 |
+
// Minicolors (color picker).
|
48 |
+
wp_enqueue_style(
|
49 |
+
'minicolors',
|
50 |
+
WPFORMS_PLUGIN_URL . 'assets/css/jquery.minicolors.css',
|
51 |
+
array(),
|
52 |
+
'2.2.6'
|
53 |
+
);
|
54 |
+
|
55 |
+
// FontAwesome.
|
56 |
+
wp_enqueue_style(
|
57 |
+
'wpforms-font-awesome',
|
58 |
+
WPFORMS_PLUGIN_URL . 'assets/css/font-awesome.min.css',
|
59 |
+
null,
|
60 |
+
'4.4.0'
|
61 |
+
);
|
62 |
+
|
63 |
+
// Main admin styles.
|
64 |
+
wp_enqueue_style(
|
65 |
+
'wpforms-admin',
|
66 |
+
WPFORMS_PLUGIN_URL . 'assets/css/admin.css',
|
67 |
+
array(),
|
68 |
+
WPFORMS_VERSION
|
69 |
+
);
|
70 |
+
}
|
71 |
+
add_action( 'admin_enqueue_scripts', 'wpforms_admin_styles' );
|
72 |
+
|
73 |
+
/**
|
74 |
+
* Load scripts for all WPForms-related admin screens.
|
75 |
+
*
|
76 |
+
* @since 1.3.9
|
77 |
+
*/
|
78 |
+
function wpforms_admin_scripts() {
|
79 |
+
|
80 |
+
if ( ! wpforms_is_admin_page() ) {
|
81 |
+
return;
|
82 |
+
}
|
83 |
+
|
84 |
+
wp_enqueue_media();
|
85 |
+
|
86 |
+
// jQuery confirm
|
87 |
+
wp_enqueue_script(
|
88 |
+
'jquery-confirm',
|
89 |
+
WPFORMS_PLUGIN_URL . 'assets/js/jquery.jquery-confirm.min.js',
|
90 |
+
array( 'jquery' ),
|
91 |
+
'3.2.3',
|
92 |
+
false
|
93 |
+
);
|
94 |
+
|
95 |
+
// Minicolors (color picker).
|
96 |
+
wp_enqueue_script(
|
97 |
+
'minicolors',
|
98 |
+
WPFORMS_PLUGIN_URL . 'assets/js/jquery.minicolors.min.js',
|
99 |
+
array( 'jquery' ),
|
100 |
+
'2.2.6',
|
101 |
+
false
|
102 |
+
);
|
103 |
+
|
104 |
+
// Choices.js.
|
105 |
+
wp_enqueue_script(
|
106 |
+
'choicesjs',
|
107 |
+
WPFORMS_PLUGIN_URL . 'assets/js/choices.min.js',
|
108 |
+
array(),
|
109 |
+
'2.8.10',
|
110 |
+
false
|
111 |
+
);
|
112 |
+
|
113 |
+
$dir = ( defined( 'WPFORMS_DEVELOPMENT' ) && WPFORMS_DEVELOPMENT ) ? '/src' : '';
|
114 |
+
$suffix = ( defined( 'WPFORMS_DEVELOPMENT' ) && WPFORMS_DEVELOPMENT ) ? '' : '.min';
|
115 |
+
|
116 |
+
// Main admin script.
|
117 |
+
wp_enqueue_script(
|
118 |
+
'wpforms-admin',
|
119 |
+
WPFORMS_PLUGIN_URL . "assets/js{$dir}/admin{$suffix}.js",
|
120 |
+
array( 'jquery' ),
|
121 |
+
WPFORMS_VERSION,
|
122 |
+
false
|
123 |
+
);
|
124 |
+
|
125 |
+
$strings = array(
|
126 |
+
'addon_activate' => __( 'Activate', 'wpforms' ),
|
127 |
+
'addon_active' => __( 'Active', 'wpforms' ),
|
128 |
+
'addon_deactivate' => __( 'Deactivate', 'wpforms' ),
|
129 |
+
'addon_inactive' => __( 'Inactive', 'wpforms' ),
|
130 |
+
'addon_install' => __( 'Install Addon', 'wpforms' ),
|
131 |
+
'ajax_url' => admin_url( 'admin-ajax.php' ),
|
132 |
+
'cancel' => __( 'Cancel', 'wpforms' ),
|
133 |
+
'close' => __( 'Close', 'wpforms' ),
|
134 |
+
'entry_delete_confirm' => __( 'Are you sure you want to delete this entry?', 'wpforms' ),
|
135 |
+
'entry_empty_fields_hide' => __( 'Hide Empty Fields', 'wpforms' ),
|
136 |
+
'entry_empty_fields_show' => __( 'Show Empty Fields', 'wpforms' ),
|
137 |
+
'entry_note_delete_confirm' => __( 'Are you sure you want to delete this note?', 'wpforms' ),
|
138 |
+
'entry_unstar' => __( 'Unstar entry', 'wpforms' ),
|
139 |
+
'entry_star' => __( 'Star entry', 'wpforms' ),
|
140 |
+
'entry_read' => __( 'Mark entry read', 'wpforms' ),
|
141 |
+
'entry_unread' => __( 'Mark entry unread', 'wpforms' ),
|
142 |
+
'form_delete_confirm' => __( 'Are you sure you want to delete this form?', 'wpforms' ),
|
143 |
+
'form_duplicate_confirm' => __( 'Are you sure you want to duplicate this form?', 'wpforms' ),
|
144 |
+
'heads_up' => __( 'Heads up!', 'wpforms' ),
|
145 |
+
'nonce' => wp_create_nonce( 'wpforms-admin' ),
|
146 |
+
'ok' => __( 'OK', 'wpforms' ),
|
147 |
+
'provider_delete_confirm' => __( 'Are you sure you want to disconnect this account?', 'wpforms' ),
|
148 |
+
'provider_auth_error' => __( 'Could not authenticate with the provider.', 'wpforms' ),
|
149 |
+
'upload_image_title' => __( 'Upload or Choose Your Image', 'wpforms' ),
|
150 |
+
'upload_image_button' => __( 'Use Image', 'wpforms' ),
|
151 |
+
);
|
152 |
+
$strings = apply_filters( 'wpforms_admin_strings', $strings );
|
153 |
+
|
154 |
+
wp_localize_script(
|
155 |
+
'wpforms-admin',
|
156 |
+
'wpforms_admin',
|
157 |
+
$strings
|
158 |
+
);
|
159 |
+
}
|
160 |
+
add_action( 'admin_enqueue_scripts', 'wpforms_admin_scripts' );
|
161 |
+
|
162 |
+
/**
|
163 |
+
* Add body class to WPForms admin pages for easy reference.
|
164 |
+
*
|
165 |
+
* @since 1.3.9
|
166 |
+
* @param string $classes
|
167 |
+
* @return string
|
168 |
+
*/
|
169 |
+
function wpforms_admin_body_class( $classes ) {
|
170 |
+
|
171 |
+
if ( ! wpforms_is_admin_page() ) {
|
172 |
+
return $classes;
|
173 |
+
}
|
174 |
+
|
175 |
+
return "$classes wpforms-admin-page";
|
176 |
+
}
|
177 |
+
add_filter( 'admin_body_class', 'wpforms_admin_body_class', 10, 1 );
|
178 |
+
|
179 |
+
/**
|
180 |
+
* Outputs the WPForms admin header.
|
181 |
+
*
|
182 |
+
* @since 1.3.9
|
183 |
+
*/
|
184 |
+
function wpforms_admin_header() {
|
185 |
+
|
186 |
+
// Bail if we're not on a WPForms screen or page (also exclude form builder).
|
187 |
+
if ( ! wpforms_is_admin_page() ) {
|
188 |
+
return;
|
189 |
+
}
|
190 |
+
|
191 |
+
// Omit header from Welcome activation screen.
|
192 |
+
if ( 'wpforms-getting-started' === $_REQUEST['page'] ) {
|
193 |
+
return;
|
194 |
+
}
|
195 |
+
?>
|
196 |
+
<div id="wpforms-header-temp"></div>
|
197 |
+
<div id="wpforms-header" class="wpforms-header">
|
198 |
+
<img class="wpforms-header-logo" src="<?php echo WPFORMS_PLUGIN_URL; ?>assets/images/logo.png" alt="WPForms Logo"/>
|
199 |
+
</div>
|
200 |
+
<?php
|
201 |
+
}
|
202 |
+
add_action( 'in_admin_header', 'wpforms_admin_header', 100 );
|
203 |
+
|
204 |
+
/**
|
205 |
+
* Remove non-WPForms notices from WPForms pages.
|
206 |
+
*
|
207 |
+
* @since 1.3.9
|
208 |
+
*/
|
209 |
+
function wpforms_admin_hide_unrelated_notices() {
|
210 |
+
|
211 |
+
// Bail if we're not on a WPForms screen or page.
|
212 |
+
if ( empty( $_REQUEST['page'] ) || strpos( $_REQUEST['page'], 'wpforms' ) === false ) {
|
213 |
+
return;
|
214 |
+
}
|
215 |
+
|
216 |
+
global $wp_filter;
|
217 |
+
|
218 |
+
if ( ! empty( $wp_filter['user_admin_notices']->callbacks ) && is_array( $wp_filter['user_admin_notices']->callbacks ) ) {
|
219 |
+
foreach ( $wp_filter['user_admin_notices']->callbacks as $priority => $hooks ) {
|
220 |
+
foreach ( $hooks as $name => $arr ) {
|
221 |
+
if ( is_object( $arr['function'] ) && $arr['function'] instanceof Closure ) {
|
222 |
+
unset( $wp_filter['user_admin_notices']->callbacks[ $priority ][ $name ] );
|
223 |
+
continue;
|
224 |
+
}
|
225 |
+
if ( ! empty( $arr['function'][0] ) && is_object( $arr['function'][0] ) && strpos( strtolower( get_class( $arr['function'][0] ) ), 'wpforms' ) !== false ) {
|
226 |
+
continue;
|
227 |
+
}
|
228 |
+
if ( ! empty( $name ) && strpos( $name, 'wpforms' ) === false ) {
|
229 |
+
unset( $wp_filter['user_admin_notices']->callbacks[ $priority ][ $name ] );
|
230 |
+
}
|
231 |
+
}
|
232 |
+
}
|
233 |
+
}
|
234 |
+
|
235 |
+
if ( ! empty( $wp_filter['admin_notices']->callbacks ) && is_array( $wp_filter['admin_notices']->callbacks ) ) {
|
236 |
+
foreach ( $wp_filter['admin_notices']->callbacks as $priority => $hooks ) {
|
237 |
+
foreach ( $hooks as $name => $arr ) {
|
238 |
+
if ( is_object( $arr['function'] ) && $arr['function'] instanceof Closure ) {
|
239 |
+
unset( $wp_filter['admin_notices']->callbacks[ $priority ][ $name ] );
|
240 |
+
continue;
|
241 |
+
}
|
242 |
+
if ( ! empty( $arr['function'][0] ) && is_object( $arr['function'][0] ) && strpos( strtolower( get_class( $arr['function'][0] ) ), 'wpforms' ) !== false ) {
|
243 |
+
continue;
|
244 |
+
}
|
245 |
+
if ( ! empty( $name ) && strpos( $name, 'wpforms' ) === false ) {
|
246 |
+
unset( $wp_filter['admin_notices']->callbacks[ $priority ][ $name ] );
|
247 |
+
}
|
248 |
+
}
|
249 |
+
}
|
250 |
+
}
|
251 |
+
|
252 |
+
if ( ! empty( $wp_filter['all_admin_notices']->callbacks ) && is_array( $wp_filter['all_admin_notices']->callbacks ) ) {
|
253 |
+
foreach ( $wp_filter['all_admin_notices']->callbacks as $priority => $hooks ) {
|
254 |
+
foreach ( $hooks as $name => $arr ) {
|
255 |
+
if ( is_object( $arr['function'] ) && $arr['function'] instanceof Closure ) {
|
256 |
+
unset( $wp_filter['all_admin_notices']->callbacks[ $priority ][ $name ] );
|
257 |
+
continue;
|
258 |
+
}
|
259 |
+
if ( ! empty( $arr['function'][0] ) && is_object( $arr['function'][0] ) && strpos( strtolower( get_class( $arr['function'][0] ) ), 'wpforms' ) !== false ) {
|
260 |
+
continue;
|
261 |
+
}
|
262 |
+
if ( ! empty( $name ) && strpos( $name, 'wpforms' ) === false ) {
|
263 |
+
unset( $wp_filter['all_admin_notices']->callbacks[ $priority ][ $name ] );
|
264 |
+
}
|
265 |
+
}
|
266 |
+
}
|
267 |
+
}
|
268 |
+
}
|
269 |
+
add_action( 'admin_print_scripts', 'wpforms_admin_hide_unrelated_notices' );
|
270 |
+
|
271 |
+
/**
|
272 |
+
* Upgrade link used within the various admin pages.
|
273 |
+
*
|
274 |
+
* Previously was only included as a method in wpforms-lite.php, but made
|
275 |
+
* available globally in 1.3.9.
|
276 |
+
*
|
277 |
+
* @since 1.3.9
|
278 |
+
*/
|
279 |
+
function wpforms_admin_upgrade_link() {
|
280 |
+
|
281 |
+
// Check if there's a constant.
|
282 |
+
$shareasale_id = '';
|
283 |
+
if ( defined( 'WPFORMS_SHAREASALE_ID' ) ) {
|
284 |
+
$shareasale_id = WPFORMS_SHAREASALE_ID;
|
285 |
+
}
|
286 |
+
|
287 |
+
// If there's no constant, check if there's an option.
|
288 |
+
if ( empty( $shareasale_id ) ) {
|
289 |
+
$shareasale_id = get_option( 'wpforms_shareasale_id', '' );
|
290 |
+
}
|
291 |
+
|
292 |
+
// Whether we have an ID or not, filter the ID.
|
293 |
+
$shareasale_id = apply_filters( 'wpforms_shareasale_id', $shareasale_id );
|
294 |
+
|
295 |
+
// If at this point we still don't have an ID, we really don't have one!
|
296 |
+
// Just return the standard upgrade URL.
|
297 |
+
if ( empty( $shareasale_id ) ) {
|
298 |
+
return 'https://wpforms.com/lite-upgrade/?utm_source=WordPress&utm_medium=link&utm_campaign=liteplugin';
|
299 |
+
}
|
300 |
+
|
301 |
+
// Whether we have a specific redirect URL to use
|
302 |
+
$shareasale_redirect = apply_filters( 'wpforms_shareasale_redirect', get_option( 'wpforms_shareasale_redirect', '' ) );
|
303 |
+
|
304 |
+
// Build final URL
|
305 |
+
$shareasale_url = sprintf( 'http://www.shareasale.com/r.cfm?B=837827&U=%s&M=64312&urllink=%s', $shareasale_id, $shareasale_redirect );
|
306 |
+
|
307 |
+
// If here, we have a ShareASale ID
|
308 |
+
// Return ShareASale URL with redirect.
|
309 |
+
return esc_url( $shareasale_url );
|
310 |
+
}
|
includes/admin/ajax-actions.php
CHANGED
@@ -21,41 +21,41 @@ function wpforms_save_form() {
|
|
21 |
|
22 |
// Check for permissions
|
23 |
if ( !current_user_can( apply_filters( 'wpforms_manage_cap', 'manage_options' ) ) )
|
24 |
-
die( __( 'You do
|
25 |
|
26 |
// Check for form data
|
27 |
-
if ( empty( $_POST['data'] ) )
|
28 |
die( __( 'No data provided', 'wpforms' ) );
|
29 |
|
30 |
-
$form_post = json_decode( stripslashes( $_POST['data'] ) );
|
31 |
$data = array();
|
32 |
|
33 |
-
if ( ! is_null( $form_post ) && $form_post ) {
|
34 |
-
foreach ( $form_post as $post_input_data ) {
|
35 |
-
// For input names that are arrays (e.g. `menu-item-db-id[3][4][5]`),
|
36 |
-
// derive the array path keys via regex and set the value in $_POST.
|
37 |
-
preg_match( '#([^\[]*)(\[(.+)\])?#', $post_input_data->name, $matches );
|
38 |
|
39 |
-
$array_bits = array( $matches[1] );
|
40 |
|
41 |
-
if ( isset( $matches[3] ) ) {
|
42 |
-
$array_bits = array_merge( $array_bits, explode( '][', $matches[3] ) );
|
43 |
-
}
|
44 |
|
45 |
-
$new_post_data = array();
|
46 |
|
47 |
-
// Build the new array value from leaf to trunk.
|
48 |
-
for ( $i = count( $array_bits ) - 1; $i >= 0; $i -- ) {
|
49 |
-
if ( $i == count( $array_bits ) - 1 ) {
|
50 |
-
$new_post_data[ $array_bits[ $i ] ] = wp_slash( $post_input_data->value );
|
51 |
-
} else {
|
52 |
-
$new_post_data = array( $array_bits[ $i ] => $new_post_data );
|
53 |
-
}
|
54 |
-
}
|
55 |
|
56 |
-
$data = array_replace_recursive( $data, $new_post_data );
|
57 |
-
}
|
58 |
-
}
|
59 |
|
60 |
$form_id = wpforms()->form->update( $data['id'], $data );
|
61 |
|
@@ -85,20 +85,20 @@ function wpforms_new_form() {
|
|
85 |
check_ajax_referer( 'wpforms-builder', 'nonce' );
|
86 |
|
87 |
// Check for form title
|
88 |
-
if ( empty( $_POST['title'] ) )
|
89 |
die( __( 'No form title provided', 'wpforms' ) );
|
90 |
|
91 |
// Create form
|
92 |
$form_title = sanitize_text_field( $_POST['title'] );
|
93 |
$form_template = sanitize_text_field( $_POST['template'] );
|
94 |
$title_exists = get_page_by_title( $form_title, 'OBJECT', 'wpforms' );
|
95 |
-
$form_id = wpforms()->form->add(
|
96 |
$form_title,
|
97 |
-
array(),
|
98 |
array( 'template' => $form_template )
|
99 |
);
|
100 |
if ( NULL != $title_exists ) {
|
101 |
-
wp_update_post( array(
|
102 |
'ID' => $form_id,
|
103 |
'post_title' => $form_title . ' (ID #' . $form_id . ')',
|
104 |
) );
|
@@ -111,7 +111,7 @@ function wpforms_new_form() {
|
|
111 |
);
|
112 |
wp_send_json_success( $data );
|
113 |
} else {
|
114 |
-
die( __( 'Error creating form', 'wpforms' ) );
|
115 |
}
|
116 |
}
|
117 |
add_action( 'wp_ajax_wpforms_new_form', 'wpforms_new_form' );
|
@@ -127,7 +127,7 @@ function wpforms_update_form_template() {
|
|
127 |
check_ajax_referer( 'wpforms-builder', 'nonce' );
|
128 |
|
129 |
// Check for form title
|
130 |
-
if ( empty( $_POST['form_id'] ) )
|
131 |
die( __( 'No form ID provided', 'wpforms' ) );
|
132 |
|
133 |
$data = wpforms()->form->get( $_POST['form_id'], array( 'content_only' => true ) );
|
@@ -140,7 +140,7 @@ function wpforms_update_form_template() {
|
|
140 |
);
|
141 |
wp_send_json_success( $data );
|
142 |
} else {
|
143 |
-
die( __( 'Error updating form template', 'wpforms' ) );
|
144 |
}
|
145 |
}
|
146 |
add_action( 'wp_ajax_wpforms_update_form_template', 'wpforms_update_form_template' );
|
@@ -198,7 +198,7 @@ function wpforms_builder_dynamic_choices() {
|
|
198 |
|
199 |
// Fetch the option row HTML to be returned to the builder
|
200 |
$field = new WPForms_Field_Select( false );
|
201 |
-
$field_args = array(
|
202 |
'id' => $id,
|
203 |
'dynamic_choices' => $type,
|
204 |
);
|
@@ -242,34 +242,34 @@ function wpforms_builder_dynamic_source() {
|
|
242 |
|
243 |
$type_name = __( 'post type', 'wpforms' );
|
244 |
$args = array(
|
245 |
-
'post_type' => $source,
|
246 |
-
'posts_per_page' => 20,
|
247 |
-
'orderby' => 'title',
|
248 |
'order' => 'ASC',
|
249 |
);
|
250 |
-
$posts =
|
251 |
$total = wp_count_posts( $source );
|
252 |
$total = $total->publish;
|
253 |
$pt = get_post_type_object( $source );
|
254 |
$source_name = $pt->labels->name;
|
255 |
-
|
256 |
foreach ( $posts as $post ) {
|
257 |
$items[] = $post->post_title;
|
258 |
}
|
259 |
|
260 |
} elseif ( 'taxonomy' == $type ) {
|
261 |
-
|
262 |
$type_name = __( 'taxonomy', 'wpforms' );
|
263 |
$args = array(
|
264 |
-
'taxonomy' => $source,
|
265 |
-
'hide_empty' => false,
|
266 |
'number' => 20,
|
267 |
);
|
268 |
-
$terms =
|
269 |
$total = wp_count_terms( $source );
|
270 |
$tax = get_taxonomy( $source );
|
271 |
$source_name = $tax->labels->name;
|
272 |
-
|
273 |
foreach ( $terms as $term ) {
|
274 |
$items[] = $term->name;
|
275 |
}
|
@@ -284,4 +284,4 @@ function wpforms_builder_dynamic_source() {
|
|
284 |
'type_name' => $type_name,
|
285 |
) );
|
286 |
}
|
287 |
-
add_action( 'wp_ajax_wpforms_builder_dynamic_source', 'wpforms_builder_dynamic_source' );
|
21 |
|
22 |
// Check for permissions
|
23 |
if ( !current_user_can( apply_filters( 'wpforms_manage_cap', 'manage_options' ) ) )
|
24 |
+
die( __( 'You do not have permission.', 'wpforms' ) );
|
25 |
|
26 |
// Check for form data
|
27 |
+
if ( empty( $_POST['data'] ) )
|
28 |
die( __( 'No data provided', 'wpforms' ) );
|
29 |
|
30 |
+
$form_post = json_decode( stripslashes( $_POST['data'] ) );
|
31 |
$data = array();
|
32 |
|
33 |
+
if ( ! is_null( $form_post ) && $form_post ) {
|
34 |
+
foreach ( $form_post as $post_input_data ) {
|
35 |
+
// For input names that are arrays (e.g. `menu-item-db-id[3][4][5]`),
|
36 |
+
// derive the array path keys via regex and set the value in $_POST.
|
37 |
+
preg_match( '#([^\[]*)(\[(.+)\])?#', $post_input_data->name, $matches );
|
38 |
|
39 |
+
$array_bits = array( $matches[1] );
|
40 |
|
41 |
+
if ( isset( $matches[3] ) ) {
|
42 |
+
$array_bits = array_merge( $array_bits, explode( '][', $matches[3] ) );
|
43 |
+
}
|
44 |
|
45 |
+
$new_post_data = array();
|
46 |
|
47 |
+
// Build the new array value from leaf to trunk.
|
48 |
+
for ( $i = count( $array_bits ) - 1; $i >= 0; $i -- ) {
|
49 |
+
if ( $i == count( $array_bits ) - 1 ) {
|
50 |
+
$new_post_data[ $array_bits[ $i ] ] = wp_slash( $post_input_data->value );
|
51 |
+
} else {
|
52 |
+
$new_post_data = array( $array_bits[ $i ] => $new_post_data );
|
53 |
+
}
|
54 |
+
}
|
55 |
|
56 |
+
$data = array_replace_recursive( $data, $new_post_data );
|
57 |
+
}
|
58 |
+
}
|
59 |
|
60 |
$form_id = wpforms()->form->update( $data['id'], $data );
|
61 |
|
85 |
check_ajax_referer( 'wpforms-builder', 'nonce' );
|
86 |
|
87 |
// Check for form title
|
88 |
+
if ( empty( $_POST['title'] ) )
|
89 |
die( __( 'No form title provided', 'wpforms' ) );
|
90 |
|
91 |
// Create form
|
92 |
$form_title = sanitize_text_field( $_POST['title'] );
|
93 |
$form_template = sanitize_text_field( $_POST['template'] );
|
94 |
$title_exists = get_page_by_title( $form_title, 'OBJECT', 'wpforms' );
|
95 |
+
$form_id = wpforms()->form->add(
|
96 |
$form_title,
|
97 |
+
array(),
|
98 |
array( 'template' => $form_template )
|
99 |
);
|
100 |
if ( NULL != $title_exists ) {
|
101 |
+
wp_update_post( array(
|
102 |
'ID' => $form_id,
|
103 |
'post_title' => $form_title . ' (ID #' . $form_id . ')',
|
104 |
) );
|
111 |
);
|
112 |
wp_send_json_success( $data );
|
113 |
} else {
|
114 |
+
die( __( 'Error creating form', 'wpforms' ) );
|
115 |
}
|
116 |
}
|
117 |
add_action( 'wp_ajax_wpforms_new_form', 'wpforms_new_form' );
|
127 |
check_ajax_referer( 'wpforms-builder', 'nonce' );
|
128 |
|
129 |
// Check for form title
|
130 |
+
if ( empty( $_POST['form_id'] ) )
|
131 |
die( __( 'No form ID provided', 'wpforms' ) );
|
132 |
|
133 |
$data = wpforms()->form->get( $_POST['form_id'], array( 'content_only' => true ) );
|
140 |
);
|
141 |
wp_send_json_success( $data );
|
142 |
} else {
|
143 |
+
die( __( 'Error updating form template', 'wpforms' ) );
|
144 |
}
|
145 |
}
|
146 |
add_action( 'wp_ajax_wpforms_update_form_template', 'wpforms_update_form_template' );
|
198 |
|
199 |
// Fetch the option row HTML to be returned to the builder
|
200 |
$field = new WPForms_Field_Select( false );
|
201 |
+
$field_args = array(
|
202 |
'id' => $id,
|
203 |
'dynamic_choices' => $type,
|
204 |
);
|
242 |
|
243 |
$type_name = __( 'post type', 'wpforms' );
|
244 |
$args = array(
|
245 |
+
'post_type' => $source,
|
246 |
+
'posts_per_page' => 20,
|
247 |
+
'orderby' => 'title',
|
248 |
'order' => 'ASC',
|
249 |
);
|
250 |
+
$posts = wpforms_get_hierarchical_object( apply_filters( 'wpforms_dynamic_choice_post_type_args', $args, array( 'id' => $id ), $form_id ), true );
|
251 |
$total = wp_count_posts( $source );
|
252 |
$total = $total->publish;
|
253 |
$pt = get_post_type_object( $source );
|
254 |
$source_name = $pt->labels->name;
|
255 |
+
|
256 |
foreach ( $posts as $post ) {
|
257 |
$items[] = $post->post_title;
|
258 |
}
|
259 |
|
260 |
} elseif ( 'taxonomy' == $type ) {
|
261 |
+
|
262 |
$type_name = __( 'taxonomy', 'wpforms' );
|
263 |
$args = array(
|
264 |
+
'taxonomy' => $source,
|
265 |
+
'hide_empty' => false,
|
266 |
'number' => 20,
|
267 |
);
|
268 |
+
$terms = wpforms_get_hierarchical_object( apply_filters( 'wpforms_dynamic_choice_taxonomy_args', $args, array( 'id' => $id ), $form_id ), true );
|
269 |
$total = wp_count_terms( $source );
|
270 |
$tax = get_taxonomy( $source );
|
271 |
$source_name = $tax->labels->name;
|
272 |
+
|
273 |
foreach ( $terms as $term ) {
|
274 |
$items[] = $term->name;
|
275 |
}
|
284 |
'type_name' => $type_name,
|
285 |
) );
|
286 |
}
|
287 |
+
add_action( 'wp_ajax_wpforms_builder_dynamic_source', 'wpforms_builder_dynamic_source' );
|
includes/admin/builder/class-builder.php
CHANGED
@@ -173,14 +173,14 @@ class WPForms_Builder {
|
|
173 |
'jquery-confirm',
|
174 |
WPFORMS_PLUGIN_URL . 'assets/css/jquery-confirm.min.css',
|
175 |
null,
|
176 |
-
'2.
|
177 |
);
|
178 |
|
179 |
wp_enqueue_style(
|
180 |
'minicolors',
|
181 |
WPFORMS_PLUGIN_URL . 'assets/css/jquery.minicolors.css',
|
182 |
null,
|
183 |
-
'2.2.
|
184 |
);
|
185 |
|
186 |
wp_enqueue_style(
|
@@ -217,7 +217,7 @@ class WPForms_Builder {
|
|
217 |
'jquery-confirm',
|
218 |
WPFORMS_PLUGIN_URL . 'assets/js/jquery.jquery-confirm.min.js',
|
219 |
array(),
|
220 |
-
'2.
|
221 |
false
|
222 |
);
|
223 |
|
@@ -241,7 +241,7 @@ class WPForms_Builder {
|
|
241 |
'minicolors',
|
242 |
WPFORMS_PLUGIN_URL . 'assets/js/jquery.minicolors.min.js',
|
243 |
array( 'jquery' ),
|
244 |
-
'2.2.
|
245 |
false
|
246 |
);
|
247 |
|
@@ -439,7 +439,7 @@ class WPForms_Builder {
|
|
439 |
|
440 |
<div class="wpforms-left">
|
441 |
|
442 |
-
<img src="<?php echo WPFORMS_PLUGIN_URL; ?>assets/images/
|
443 |
|
444 |
</div>
|
445 |
|
173 |
'jquery-confirm',
|
174 |
WPFORMS_PLUGIN_URL . 'assets/css/jquery-confirm.min.css',
|
175 |
null,
|
176 |
+
'3.2.3'
|
177 |
);
|
178 |
|
179 |
wp_enqueue_style(
|
180 |
'minicolors',
|
181 |
WPFORMS_PLUGIN_URL . 'assets/css/jquery.minicolors.css',
|
182 |
null,
|
183 |
+
'2.2.6'
|
184 |
);
|
185 |
|
186 |
wp_enqueue_style(
|
217 |
'jquery-confirm',
|
218 |
WPFORMS_PLUGIN_URL . 'assets/js/jquery.jquery-confirm.min.js',
|
219 |
array(),
|
220 |
+
'3.2.3',
|
221 |
false
|
222 |
);
|
223 |
|
241 |
'minicolors',
|
242 |
WPFORMS_PLUGIN_URL . 'assets/js/jquery.minicolors.min.js',
|
243 |
array( 'jquery' ),
|
244 |
+
'2.2.6',
|
245 |
false
|
246 |
);
|
247 |
|
439 |
|
440 |
<div class="wpforms-left">
|
441 |
|
442 |
+
<img src="<?php echo WPFORMS_PLUGIN_URL; ?>assets/images/sullie-alt.png" alt="Sullie WPForms mascot">
|
443 |
|
444 |
</div>
|
445 |
|
includes/admin/builder/panels/class-providers.php
CHANGED
@@ -51,7 +51,7 @@ class WPForms_Builder_Panel_Providers extends WPForms_Builder_Panel {
|
|
51 |
'wpforms-builder-providers',
|
52 |
'wpforms_builder_providers',
|
53 |
array(
|
54 |
-
'url' => esc_url(
|
55 |
'confirm_save' => __( 'We need to save your progress to continue to the Marketing panel. Is that OK?', 'wpforms' ),
|
56 |
'confirm_connection' => __( 'Are you sure you want to delete this connecton?', 'wpforms' ),
|
57 |
'prompt_connection' => __( 'Enter a %type% nickname', 'wpforms' ),
|
@@ -118,4 +118,4 @@ class WPForms_Builder_Panel_Providers extends WPForms_Builder_Panel {
|
|
118 |
do_action( 'wpforms_providers_panel_content', $this->form );
|
119 |
}
|
120 |
}
|
121 |
-
new WPForms_Builder_Panel_Providers;
|
51 |
'wpforms-builder-providers',
|
52 |
'wpforms_builder_providers',
|
53 |
array(
|
54 |
+
'url' => esc_url( add_query_arg( array( 'view' => 'providers' ) ) ),
|
55 |
'confirm_save' => __( 'We need to save your progress to continue to the Marketing panel. Is that OK?', 'wpforms' ),
|
56 |
'confirm_connection' => __( 'Are you sure you want to delete this connecton?', 'wpforms' ),
|
57 |
'prompt_connection' => __( 'Enter a %type% nickname', 'wpforms' ),
|
118 |
do_action( 'wpforms_providers_panel_content', $this->form );
|
119 |
}
|
120 |
}
|
121 |
+
new WPForms_Builder_Panel_Providers;
|
includes/admin/class-am-deactivation-survey.php
ADDED
@@ -0,0 +1,279 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
if ( ! class_exists( 'AM_Deactivation_Survey' ) ) {
|
3 |
+
/**
|
4 |
+
* Awesome Motive Deactivation Survey.
|
5 |
+
*
|
6 |
+
* This prompts the user for more details when they deactivate the plugin.
|
7 |
+
*
|
8 |
+
* @version 1.0.0
|
9 |
+
* @package AwesomeMotive
|
10 |
+
* @author Jared Atchison
|
11 |
+
* @license GPL-2.0+
|
12 |
+
* @copyright Copyright (c) 2017
|
13 |
+
*/
|
14 |
+
class AM_Deactivation_Survey {
|
15 |
+
|
16 |
+
/**
|
17 |
+
* The API URL we are calling.
|
18 |
+
*
|
19 |
+
* @since 1.0.0
|
20 |
+
* @var string
|
21 |
+
*/
|
22 |
+
public $api_url = 'https://api.awesomemotive.com/v1/deactivation-survey/';
|
23 |
+
|
24 |
+
/**
|
25 |
+
* Name for this plugin.
|
26 |
+
*
|
27 |
+
* @since 1.0.0
|
28 |
+
* @var string
|
29 |
+
*/
|
30 |
+
public $name;
|
31 |
+
|
32 |
+
/**
|
33 |
+
* Unique slug for this plugin.
|
34 |
+
*
|
35 |
+
* @since 1.0.0
|
36 |
+
* @var string
|
37 |
+
*/
|
38 |
+
public $plugin;
|
39 |
+
|
40 |
+
/**
|
41 |
+
* Primary class constructor.
|
42 |
+
*
|
43 |
+
* @since 1.0.0
|
44 |
+
* @param string $name Plugin name.
|
45 |
+
* @param string $plugin Plugin slug.
|
46 |
+
*/
|
47 |
+
public function __construct( $name = '', $plugin = '' ) {
|
48 |
+
|
49 |
+
$this->name = $name;
|
50 |
+
$this->plugin = $plugin;
|
51 |
+
|
52 |
+
add_action( 'admin_print_scripts', array( $this, 'js' ), 20 );
|
53 |
+
add_action( 'admin_print_scripts', array( $this, 'css' ) );
|
54 |
+
add_action( 'admin_footer', array( $this, 'modal' ) );
|
55 |
+
}
|
56 |
+
|
57 |
+
/**
|
58 |
+
* Checks if current admin screen is the plugins page.
|
59 |
+
*
|
60 |
+
* @since 1.0.0
|
61 |
+
* @return bool
|
62 |
+
*/
|
63 |
+
public function is_plugin_page() {
|
64 |
+
|
65 |
+
return ( in_array( get_current_screen()->id, array( 'plugins', 'plugins-network' ), true ) );
|
66 |
+
}
|
67 |
+
|
68 |
+
/**
|
69 |
+
* Survey javascript.
|
70 |
+
*
|
71 |
+
* @since 1.0.0
|
72 |
+
*/
|
73 |
+
public function js() {
|
74 |
+
|
75 |
+
if ( ! $this->is_plugin_page() ) {
|
76 |
+
return;
|
77 |
+
}
|
78 |
+
?>
|
79 |
+
<script type="text/javascript">
|
80 |
+
jQuery(function($){
|
81 |
+
var $deactivateLink = $('#the-list').find('[data-slug="<?php echo $this->plugin; ?>"] span.deactivate a'),
|
82 |
+
$overlay = $('#am-deactivate-survey-<?php echo $this->plugin; ?>'),
|
83 |
+
$form = $overlay.find('form'),
|
84 |
+
formOpen = false;
|
85 |
+
// Plugin listing table deactivate link.
|
86 |
+
$deactivateLink.on('click', function(event) {
|
87 |
+
event.preventDefault();
|
88 |
+
$overlay.css('display', 'table');
|
89 |
+
formOpen = true;
|
90 |
+
$form.find('.am-deactivate-survey-option:first-of-type input[type=radio]').focus();
|
91 |
+
});
|
92 |
+
// Survey radio option selected.
|
93 |
+
$form.on('change', 'input[type=radio]', function(event) {
|
94 |
+
event.preventDefault();
|
95 |
+
$form.find('input[type=text], .error').hide();
|
96 |
+
$form.find('.am-deactivate-survey-option').removeClass('selected');
|
97 |
+
$(this).closest('.am-deactivate-survey-option').addClass('selected').find('input[type=text]').show();
|
98 |
+
});
|
99 |
+
// Survey Skip & Deactivate.
|
100 |
+
$form.on('click', '.am-deactivate-survey-deactivate', function(event) {
|
101 |
+
event.preventDefault();
|
102 |
+
location.href = $deactivateLink.attr('href');
|
103 |
+
});
|
104 |
+
// Survey submit.
|
105 |
+
$form.submit(function(event) {
|
106 |
+
event.preventDefault();
|
107 |
+
if (! $form.find('input[type=radio]:checked').val()) {
|
108 |
+
$form.find('.am-deactivate-survey-footer').prepend('<span class="error">Please select an option</span>');
|
109 |
+
return;
|
110 |
+
}
|
111 |
+
var data = {
|
112 |
+
code: $form.find('.selected input[type=radio]').val(),
|
113 |
+
reason: $form.find('.selected .am-deactivate-survey-option-reason').text(),
|
114 |
+
details: $form.find('.selected input[type=text]').val(),
|
115 |
+
site: '<?php echo esc_url( home_url() ); ?>',
|
116 |
+
plugin: '<?php echo sanitize_key( $this->name ); ?>'
|
117 |
+
}
|
118 |
+
var submitSurvey = $.post('<?php echo $this->api_url; ?>', data);
|
119 |
+
submitSurvey.always(function() {
|
120 |
+
location.href = $deactivateLink.attr('href');
|
121 |
+
});
|
122 |
+
});
|
123 |
+
// Exit key closes survey when open.
|
124 |
+
$(document).keyup(function(event) {
|
125 |
+
if (27 === event.keyCode && formOpen) {
|
126 |
+
$overlay.hide();
|
127 |
+
formOpen = false;
|
128 |
+
$deactivateLink.focus();
|
129 |
+
}
|
130 |
+
});
|
131 |
+
});
|
132 |
+
</script>
|
133 |
+
<?php
|
134 |
+
}
|
135 |
+
|
136 |
+
/**
|
137 |
+
* Survey CSS.
|
138 |
+
*
|
139 |
+
* @since 1.0.0
|
140 |
+
*/
|
141 |
+
public function css() {
|
142 |
+
|
143 |
+
if ( ! $this->is_plugin_page() ) {
|
144 |
+
return;
|
145 |
+
}
|
146 |
+
?>
|
147 |
+
<style type="text/css">
|
148 |
+
.am-deactivate-survey-modal {
|
149 |
+
display: none;
|
150 |
+
table-layout: fixed;
|
151 |
+
position: fixed;
|
152 |
+
z-index: 9999;
|
153 |
+
width: 100%;
|
154 |
+
height: 100%;
|
155 |
+
text-align: center;
|
156 |
+
font-size: 14px;
|
157 |
+
top: 0;
|
158 |
+
left: 0;
|
159 |
+
background: rgba(0,0,0,0.8);
|
160 |
+
}
|
161 |
+
.am-deactivate-survey-wrap {
|
162 |
+
display: table-cell;
|
163 |
+
vertical-align: middle;
|
164 |
+
}
|
165 |
+
.am-deactivate-survey {
|
166 |
+
background-color: #fff;
|
167 |
+
max-width: 550px;
|
168 |
+
margin: 0 auto;
|
169 |
+
padding: 30px;
|
170 |
+
text-align: left;
|
171 |
+
}
|
172 |
+
.am-deactivate-survey .error {
|
173 |
+
display: block;
|
174 |
+
color: red;
|
175 |
+
margin: 0 0 10px 0;
|
176 |
+
}
|
177 |
+
.am-deactivate-survey-title {
|
178 |
+
display: block;
|
179 |
+
font-size: 18px;
|
180 |
+
font-weight: 700;
|
181 |
+
text-transform: uppercase;
|
182 |
+
border-bottom: 1px solid #ddd;
|
183 |
+
padding: 0 0 18px 0;
|
184 |
+
margin: 0 0 18px 0;
|
185 |
+
}
|
186 |
+
.am-deactivate-survey-title span {
|
187 |
+
color: #999;
|
188 |
+
margin-right: 10px;
|
189 |
+
}
|
190 |
+
.am-deactivate-survey-desc {
|
191 |
+
display: block;
|
192 |
+
font-weight: 600;
|
193 |
+
margin: 0 0 18px 0;
|
194 |
+
}
|
195 |
+
.am-deactivate-survey-option {
|
196 |
+
margin: 0 0 10px 0;
|
197 |
+
}
|
198 |
+
.am-deactivate-survey-option-input {
|
199 |
+
margin-right: 10px !important;
|
200 |
+
}
|
201 |
+
.am-deactivate-survey-option-details {
|
202 |
+
display: none;
|
203 |
+
width: 90%;
|
204 |
+
margin: 10px 0 0 30px;
|
205 |
+
}
|
206 |
+
.am-deactivate-survey-footer {
|
207 |
+
margin-top: 18px;
|
208 |
+
}
|
209 |
+
.am-deactivate-survey-deactivate {
|
210 |
+
float: right;
|
211 |
+
font-size: 13px;
|
212 |
+
color: #ccc;
|
213 |
+
text-decoration: none;
|
214 |
+
padding-top: 7px;
|
215 |
+
}
|
216 |
+
</style>
|
217 |
+
<?php
|
218 |
+
}
|
219 |
+
|
220 |
+
/**
|
221 |
+
* Survey modal.
|
222 |
+
*
|
223 |
+
* @since 1.0.0
|
224 |
+
*/
|
225 |
+
public function modal() {
|
226 |
+
|
227 |
+
if ( ! $this->is_plugin_page() ) {
|
228 |
+
return;
|
229 |
+
}
|
230 |
+
|
231 |
+
$options = array(
|
232 |
+
1 => array(
|
233 |
+
'title' => 'I no longer need the plugin',
|
234 |
+
),
|
235 |
+
2 => array(
|
236 |
+
'title' => 'I\'m switching to a different plugin',
|
237 |
+
'details' => 'Please share which plugin',
|
238 |
+
),
|
239 |
+
3 => array(
|
240 |
+
'title' => 'I couldn\'t get the plugin to work',
|
241 |
+
),
|
242 |
+
4 => array(
|
243 |
+
'title' => 'It\'s a temporary deactivation',
|
244 |
+
),
|
245 |
+
5 => array(
|
246 |
+
'title' => 'Other',
|
247 |
+
'details' => 'Please share the reason',
|
248 |
+
),
|
249 |
+
);
|
250 |
+
?>
|
251 |
+
<div class="am-deactivate-survey-modal" id="am-deactivate-survey-<?php echo $this->plugin; ?>">
|
252 |
+
<div class="am-deactivate-survey-wrap">
|
253 |
+
<form class="am-deactivate-survey" method="post">
|
254 |
+
<span class="am-deactivate-survey-title"><span class="dashicons dashicons-testimonial"></span> Quick Feedback</span>
|
255 |
+
<span class="am-deactivate-survey-desc">If you have a moment, please share why you are deactivating <?php echo $this->name; ?>:</span>
|
256 |
+
<div class="am-deactivate-survey-options">
|
257 |
+
<?php foreach ( $options as $id => $option ) : ?>
|
258 |
+
<div class="am-deactivate-survey-option">
|
259 |
+
<label for="am-deactivate-survey-option-<?php echo $this->plugin; ?>-<?php echo $id; ?>" class="am-deactivate-survey-option-label">
|
260 |
+
<input id="am-deactivate-survey-option-<?php echo $this->plugin; ?>-<?php echo $id; ?>" class="am-deactivate-survey-option-input" type="radio" name="code" value="<?php echo $id; ?>" />
|
261 |
+
<span class="am-deactivate-survey-option-reason"><?php echo $option['title']; ?></span>
|
262 |
+
</label>
|
263 |
+
<?php if ( ! empty( $option['details'] ) ) : ?>
|
264 |
+
<input class="am-deactivate-survey-option-details" type="text" placeholder="<?php echo $option['details']; ?>" />
|
265 |
+
<?php endif; ?>
|
266 |
+
</div>
|
267 |
+
<?php endforeach; ?>
|
268 |
+
</div>
|
269 |
+
<div class="am-deactivate-survey-footer">
|
270 |
+
<button type="submit" class="am-deactivate-survey-submit button button-primary button-large">Submit & Deactivate</button>
|
271 |
+
<a href="#" class="am-deactivate-survey-deactivate">Skip & Deactivate</a>
|
272 |
+
</div>
|
273 |
+
</form>
|
274 |
+
</div>
|
275 |
+
</div>
|
276 |
+
<?php
|
277 |
+
}
|
278 |
+
}
|
279 |
+
} // End if().
|
includes/admin/class-am-notification.php
ADDED
@@ -0,0 +1,353 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
if ( ! class_exists( 'AM_Notification' ) ) {
|
3 |
+
/**
|
4 |
+
* Awesome Motive Notifications
|
5 |
+
*
|
6 |
+
* This creates a custom post type (if it doesn't exist) and calls the API to
|
7 |
+
* retrieve notifications for this product.
|
8 |
+
*
|
9 |
+
* @package AwesomeMotive
|
10 |
+
* @author Benjamin Rojas
|
11 |
+
* @license GPL-2.0+
|
12 |
+
* @copyright Copyright (c) 2017, Retyp LLC
|
13 |
+
* @version 1.0.0
|
14 |
+
*/
|
15 |
+
class AM_Notification {
|
16 |
+
/**
|
17 |
+
* The api url we are calling.
|
18 |
+
*
|
19 |
+
* @since 1.0.0
|
20 |
+
*
|
21 |
+
* @var string
|
22 |
+
*/
|
23 |
+
public $api_url = 'https://api.awesomemotive.com/v1/notification/';
|
24 |
+
|
25 |
+
/**
|
26 |
+
* A unique slug for this plugin.
|
27 |
+
* (Not the WordPress plugin slug)
|
28 |
+
*
|
29 |
+
* @since 1.0.0
|
30 |
+
*
|
31 |
+
* @var string
|
32 |
+
*/
|
33 |
+
public $plugin;
|
34 |
+
|
35 |
+
/**
|
36 |
+
* The current plugin version.
|
37 |
+
*
|
38 |
+
* @since 1.0.0
|
39 |
+
*
|
40 |
+
* @var string
|
41 |
+
*/
|
42 |
+
public $plugin_version;
|
43 |
+
|
44 |
+
/**
|
45 |
+
* The list of installed plugins.
|
46 |
+
*
|
47 |
+
* @since 1.0.0
|
48 |
+
*
|
49 |
+
* @var array
|
50 |
+
*/
|
51 |
+
public $plugin_list = array();
|
52 |
+
|
53 |
+
/**
|
54 |
+
* The list of installed themes.
|
55 |
+
*
|
56 |
+
* @since 1.0.0
|
57 |
+
*
|
58 |
+
* @var string
|
59 |
+
*/
|
60 |
+
public $theme_list = array();
|
61 |
+
|
62 |
+
/**
|
63 |
+
* Construct.
|
64 |
+
*
|
65 |
+
* @since 1.0.0
|
66 |
+
*
|
67 |
+
* @param string $plugin The plugin slug.
|
68 |
+
* @param string $version The version of the plugin.
|
69 |
+
*/
|
70 |
+
public function __construct( $plugin = '', $version = 0 ) {
|
71 |
+
$this->plugin = $plugin;
|
72 |
+
$this->plugin_version = $version;
|
73 |
+
|
74 |
+
add_action( 'init', array( $this, 'custom_post_type' ) );
|
75 |
+
add_action( 'init', array( $this, 'get_remote_notifications' ), 100 );
|
76 |
+
add_action( 'admin_notices', array( $this, 'display_notifications' ) );
|
77 |
+
add_action( 'wp_ajax_am_notification_dismiss', array( $this, 'dismiss_notification' ) );
|
78 |
+
}
|
79 |
+
|
80 |
+
/**
|
81 |
+
* Registers a custom post type.
|
82 |
+
*
|
83 |
+
* @since 1.0.0
|
84 |
+
*/
|
85 |
+
public function custom_post_type() {
|
86 |
+
register_post_type( 'amn_' . $this->plugin, array(
|
87 |
+
'supports' => false
|
88 |
+
) );
|
89 |
+
}
|
90 |
+
|
91 |
+
/**
|
92 |
+
* Retrieve the remote notifications if the time has expired.
|
93 |
+
*
|
94 |
+
* @since 1.0.0
|
95 |
+
*/
|
96 |
+
public function get_remote_notifications() {
|
97 |
+
$last_checked = get_option( '_amn_' . $this->plugin . '_last_checked', strtotime( '-1 week' ) );
|
98 |
+
|
99 |
+
if ( $last_checked < strtotime( 'today midnight' ) ) {
|
100 |
+
|
101 |
+
$plugin_notifications = $this->get_plugin_notifications( 1 );
|
102 |
+
|
103 |
+
$notification_id = null;
|
104 |
+
if ( ! empty( $plugin_notifications) ) {
|
105 |
+
// Unset it from the array.
|
106 |
+
$notification = $plugin_notifications[0];
|
107 |
+
$notification_id = get_post_meta( $notification->ID, 'notification_id', true );
|
108 |
+
}
|
109 |
+
|
110 |
+
$response = wp_remote_retrieve_body( wp_remote_post( $this->api_url, array(
|
111 |
+
'sslverify' => false,
|
112 |
+
'body' => array(
|
113 |
+
'slug' => $this->plugin,
|
114 |
+
'version' => $this->plugin_version,
|
115 |
+
'last_notification' => $notification_id,
|
116 |
+
'plugins' => $this->get_plugins_list(),
|
117 |
+
'themes' => $this->get_themes_list()
|
118 |
+
)
|
119 |
+
) ) );
|
120 |
+
|
121 |
+
$data = json_decode( $response );
|
122 |
+
|
123 |
+
if ( ! empty( $data->id ) ) {
|
124 |
+
|
125 |
+
$notifications = array();
|
126 |
+
foreach ( (array) $data->slugs as $slug ) {
|
127 |
+
$notifications = array_merge( $notifications, (array) get_posts( array(
|
128 |
+
'post_type' => 'amn_' . $slug,
|
129 |
+
'post_status' => 'all',
|
130 |
+
'meta_key' => 'notification_id',
|
131 |
+
'meta_value' => $data->id
|
132 |
+
) ) );
|
133 |
+
}
|
134 |
+
|
135 |
+
if ( empty( $notifications ) ) {
|
136 |
+
|
137 |
+
$new_notification_id = wp_insert_post( array(
|
138 |
+
'post_content' => $data->content,
|
139 |
+
'post_type' => 'amn_' . $this->plugin
|
140 |
+
) );
|
141 |
+
|
142 |
+
update_post_meta( $new_notification_id, 'notification_id', $data->id );
|
143 |
+
update_post_meta( $new_notification_id, 'type', $data->type );
|
144 |
+
update_post_meta( $new_notification_id, 'dismissable', (bool) $data->dismissible ? 1 : 0 );
|
145 |
+
update_post_meta( $new_notification_id, 'location', wp_json_encode( $data->location ) );
|
146 |
+
update_post_meta( $new_notification_id, 'plugins', wp_json_encode( $data->plugins ) );
|
147 |
+
update_post_meta( $new_notification_id, 'theme', $data->theme );
|
148 |
+
update_post_meta( $new_notification_id, 'version', $data->version );
|
149 |
+
update_post_meta( $new_notification_id, 'viewed', 0 );
|
150 |
+
}
|
151 |
+
|
152 |
+
}
|
153 |
+
|
154 |
+
// Set the option now so we can't run this again until after 24 hours.
|
155 |
+
update_option( '_amn_' . $this->plugin . '_last_checked', strtotime( 'today midnight' ) );
|
156 |
+
}
|
157 |
+
}
|
158 |
+
|
159 |
+
/**
|
160 |
+
* Get local plugin notifications that have already been set.
|
161 |
+
*
|
162 |
+
* @since 1.0.0
|
163 |
+
*
|
164 |
+
* @param integer $limit Set the limit for how many posts to retrieve.
|
165 |
+
* @param array $args Any top-level arguments to add to the array.
|
166 |
+
* @return object WP_Posts that match the query.
|
167 |
+
*/
|
168 |
+
public function get_plugin_notifications( $limit = -1, $args = array() ) {
|
169 |
+
return get_posts( array(
|
170 |
+
'showposts' => $limit,
|
171 |
+
'post_type' => 'amn_' . $this->plugin
|
172 |
+
) + $args );
|
173 |
+
}
|
174 |
+
|
175 |
+
/**
|
176 |
+
* Retrieve a list of plugins that are currently installed.
|
177 |
+
*
|
178 |
+
* @since 1.0.0
|
179 |
+
*
|
180 |
+
* @return array An array of plugins that are currently installed.
|
181 |
+
*/
|
182 |
+
public function get_plugins_list() {
|
183 |
+
if ( ! empty( $this->plugin_list ) ) {
|
184 |
+
return $this->plugin_list;
|
185 |
+
}
|
186 |
+
|
187 |
+
if ( ! function_exists( 'get_plugins' ) ) {
|
188 |
+
require_once ABSPATH . 'wp-admin/includes/plugin.php';
|
189 |
+
}
|
190 |
+
|
191 |
+
$plugins = get_plugins();
|
192 |
+
|
193 |
+
foreach ( $plugins as $slug => $plugin ) {
|
194 |
+
$this->plugin_list[ $slug ] = array(
|
195 |
+
'slug' => $slug,
|
196 |
+
'name' => $plugin['Name'],
|
197 |
+
'version' => $plugin['Version'],
|
198 |
+
'active' => is_plugin_active( $slug )
|
199 |
+
);
|
200 |
+
}
|
201 |
+
|
202 |
+
return $this->plugin_list;
|
203 |
+
}
|
204 |
+
|
205 |
+
/**
|
206 |
+
* Retrieve a list of themes that are currently installed.
|
207 |
+
*
|
208 |
+
* @since 1.0.0
|
209 |
+
*
|
210 |
+
* @return array An array of themes that are currently installed.
|
211 |
+
*/
|
212 |
+
public function get_themes_list() {
|
213 |
+
if ( ! empty( $this->theme_list ) ) {
|
214 |
+
return $this->theme_list;
|
215 |
+
}
|
216 |
+
|
217 |
+
$themes = wp_get_themes();
|
218 |
+
|
219 |
+
foreach ( $themes as $slug => $theme ) {
|
220 |
+
$this->theme_list[ $slug ] = array(
|
221 |
+
'slug' => $slug,
|
222 |
+
'name' => $theme->Name,
|
223 |
+
'version' => $theme->Version,
|
224 |
+
'active' => (string) wp_get_theme() == $theme->Name
|
225 |
+
);
|
226 |
+
}
|
227 |
+
|
228 |
+
return $this->theme_list;
|
229 |
+
}
|
230 |
+
|
231 |
+
/**
|
232 |
+
* Display any notifications that should be displayed.
|
233 |
+
*
|
234 |
+
* @since 1.0.0
|
235 |
+
*/
|
236 |
+
public function display_notifications() {
|
237 |
+
|
238 |
+
if ( ! current_user_can( apply_filters( 'am_notifications_display', 'manage_options' ) ) ) {
|
239 |
+
return;
|
240 |
+
}
|
241 |
+
|
242 |
+
$plugin_notifications = $this->get_plugin_notifications( -1, array(
|
243 |
+
'post_status' => 'all',
|
244 |
+
'meta_key' => 'viewed',
|
245 |
+
'meta_value' => '0'
|
246 |
+
) );
|
247 |
+
|
248 |
+
$plugin_notifications = $this->validate_notifications( $plugin_notifications );
|
249 |
+
|
250 |
+
if ( ! empty( $plugin_notifications ) ) {
|
251 |
+
foreach ( $plugin_notifications as $notification ) {
|
252 |
+
$dismissable = get_post_meta( $notification->ID, 'dismissable', true );
|
253 |
+
$type = get_post_meta( $notification->ID, 'type', true );
|
254 |
+
?>
|
255 |
+
<div class="am-notification am-notification-<?php echo $notification->ID; ?> notice notice-<?php echo $type; ?><?php echo $dismissable ? ' is-dismissible' : ''; ?>">
|
256 |
+
<?php echo $notification->post_content; ?>
|
257 |
+
</div>
|
258 |
+
<script type="text/javascript">
|
259 |
+
jQuery(document).ready( function($) {
|
260 |
+
$(document).on('click', '.am-notification-<?php echo $notification->ID; ?> button.notice-dismiss', function( event ) {
|
261 |
+
$.post( ajaxurl, {
|
262 |
+
action: 'am_notification_dismiss',
|
263 |
+
notification_id: '<?php echo $notification->ID; ?>'
|
264 |
+
});
|
265 |
+
});
|
266 |
+
});
|
267 |
+
</script>
|
268 |
+
<?php }
|
269 |
+
}
|
270 |
+
}
|
271 |
+
|
272 |
+
/**
|
273 |
+
* Validate the notifications before displaying them.
|
274 |
+
*
|
275 |
+
* @since 1.0.0
|
276 |
+
*
|
277 |
+
* @param array $plugin_notifications An array of plugin notifications.
|
278 |
+
* @return array A filtered array of plugin notifications.
|
279 |
+
*/
|
280 |
+
public function validate_notifications( $plugin_notifications ) {
|
281 |
+
global $pagenow;
|
282 |
+
foreach ( $plugin_notifications as $key => $notification ) {
|
283 |
+
// Location validation.
|
284 |
+
$location = (array) json_decode( get_post_meta( $notification->ID, 'location', true ) );
|
285 |
+
$continue = false;
|
286 |
+
if ( ! in_array( 'everywhere', $location ) ) {
|
287 |
+
if ( in_array( 'index.php', $location ) && 'index.php' == $pagenow ) {
|
288 |
+
$continue = true;
|
289 |
+
}
|
290 |
+
|
291 |
+
if ( in_array( 'plugins.php', $location ) && 'plugins.php' == $pagenow ) {
|
292 |
+
$continue = true;
|
293 |
+
}
|
294 |
+
|
295 |
+
if ( ! $continue ) {
|
296 |
+
unset( $plugin_notifications[ $key ] );
|
297 |
+
}
|
298 |
+
}
|
299 |
+
|
300 |
+
// Plugin validation (OR conditional)
|
301 |
+
$plugins = (array) json_decode( get_post_meta( $notification->ID, 'plugins', true ) );
|
302 |
+
$continue = false;
|
303 |
+
if ( ! empty( $plugins ) ) {
|
304 |
+
foreach ( $plugins as $plugin ) {
|
305 |
+
if ( is_plugin_active( $plugin ) ) {
|
306 |
+
$continue = true;
|
307 |
+
}
|
308 |
+
}
|
309 |
+
|
310 |
+
if ( ! $continue ) {
|
311 |
+
unset( $plugin_notifications[ $key ] );
|
312 |
+
}
|
313 |
+
}
|
314 |
+
|
315 |
+
// Theme validation.
|
316 |
+
$theme = get_post_meta( $notification->ID, 'theme', true );
|
317 |
+
$continue = (string) wp_get_theme() == $theme;
|
318 |
+
|
319 |
+
if ( ! empty( $theme ) && ! $continue ) {
|
320 |
+
unset( $plugin_notifications[ $key ] );
|
321 |
+
}
|
322 |
+
|
323 |
+
// Version validation.
|
324 |
+
$version = get_post_meta( $notification->ID, 'version', true );
|
325 |
+
$continue = false;
|
326 |
+
if ( ! empty( $version ) ) {
|
327 |
+
if ( version_compare( $this->plugin_version, $version, '<=' ) ) {
|
328 |
+
$continue = true;
|
329 |
+
}
|
330 |
+
|
331 |
+
if ( ! $continue ) {
|
332 |
+
unset( $plugin_notifications[ $key ] );
|
333 |
+
}
|
334 |
+
}
|
335 |
+
|
336 |
+
}
|
337 |
+
|
338 |
+
return $plugin_notifications;
|
339 |
+
}
|
340 |
+
|
341 |
+
/**
|
342 |
+
* Dismiss the notification via AJAX.
|
343 |
+
*
|
344 |
+
* @since 1.0.0
|
345 |
+
*/
|
346 |
+
public function dismiss_notification() {
|
347 |
+
$notification_id = intval( $_POST['notification_id'] );
|
348 |
+
update_post_meta( $notification_id, 'viewed', 1 );
|
349 |
+
die;
|
350 |
+
}
|
351 |
+
|
352 |
+
}
|
353 |
+
}
|
includes/admin/class-menu.php
CHANGED
@@ -7,7 +7,7 @@
|
|
7 |
* @since 1.0.0
|
8 |
* @license GPL-2.0+
|
9 |
* @copyright Copyright (c) 2016, WPForms LLC
|
10 |
-
*/
|
11 |
class WPForms_Admin_Menu {
|
12 |
|
13 |
/**
|
@@ -17,9 +17,12 @@ class WPForms_Admin_Menu {
|
|
17 |
*/
|
18 |
public function __construct() {
|
19 |
|
20 |
-
// Let's make some menus
|
21 |
-
add_action( 'admin_menu',
|
22 |
-
add_action( '
|
|
|
|
|
|
|
23 |
}
|
24 |
|
25 |
/**
|
@@ -31,7 +34,7 @@ class WPForms_Admin_Menu {
|
|
31 |
|
32 |
$menu_cap = apply_filters( 'wpforms_manage_cap', 'manage_options' );
|
33 |
|
34 |
-
// Default Forms top level menu item
|
35 |
add_menu_page(
|
36 |
__( 'WPForms', 'wpforms' ),
|
37 |
__( 'WPForms', 'wpforms' ),
|
@@ -42,7 +45,7 @@ class WPForms_Admin_Menu {
|
|
42 |
apply_filters( 'wpforms_menu_position', '57.7' )
|
43 |
);
|
44 |
|
45 |
-
// All Forms sub menu item
|
46 |
add_submenu_page(
|
47 |
'wpforms-overview',
|
48 |
__( 'WPForms', 'wpforms' ),
|
@@ -52,7 +55,7 @@ class WPForms_Admin_Menu {
|
|
52 |
array( $this, 'admin_page' )
|
53 |
);
|
54 |
|
55 |
-
// Add New sub menu item
|
56 |
add_submenu_page(
|
57 |
'wpforms-overview',
|
58 |
__( 'WPForms Builder', 'wpforms' ),
|
@@ -62,7 +65,7 @@ class WPForms_Admin_Menu {
|
|
62 |
array( $this, 'admin_page' )
|
63 |
);
|
64 |
|
65 |
-
// Entries sub menu item
|
66 |
add_submenu_page(
|
67 |
'wpforms-overview',
|
68 |
__( 'Form Entries', 'wpforms' ),
|
@@ -74,7 +77,7 @@ class WPForms_Admin_Menu {
|
|
74 |
|
75 |
do_action( 'wpform_admin_menu', $this );
|
76 |
|
77 |
-
// Settings sub menu item
|
78 |
add_submenu_page(
|
79 |
'wpforms-overview',
|
80 |
__( 'WPForms Settings', 'wpforms' ),
|
@@ -84,6 +87,16 @@ class WPForms_Admin_Menu {
|
|
84 |
array( $this, 'admin_page' )
|
85 |
);
|
86 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
87 |
// Hidden placeholder paged used for misc content.
|
88 |
add_submenu_page(
|
89 |
'wpforms-settings',
|
@@ -94,7 +107,7 @@ class WPForms_Admin_Menu {
|
|
94 |
array( $this, 'admin_page' )
|
95 |
);
|
96 |
|
97 |
-
// Addons submenu page
|
98 |
add_submenu_page(
|
99 |
'wpforms-overview',
|
100 |
__( 'WPForms Addons', 'wpforms' ),
|
@@ -105,6 +118,11 @@ class WPForms_Admin_Menu {
|
|
105 |
);
|
106 |
}
|
107 |
|
|
|
|
|
|
|
|
|
|
|
108 |
public function admin_page() {
|
109 |
|
110 |
do_action( 'wpforms_admin_page' );
|
@@ -117,12 +135,70 @@ class WPForms_Admin_Menu {
|
|
117 |
*/
|
118 |
public function menu_icon() {
|
119 |
|
120 |
-
|
121 |
-
|
122 |
-
|
123 |
-
|
124 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
125 |
);
|
|
|
|
|
|
|
|
|
126 |
}
|
|
|
127 |
}
|
128 |
-
|
7 |
* @since 1.0.0
|
8 |
* @license GPL-2.0+
|
9 |
* @copyright Copyright (c) 2016, WPForms LLC
|
10 |
+
*/
|
11 |
class WPForms_Admin_Menu {
|
12 |
|
13 |
/**
|
17 |
*/
|
18 |
public function __construct() {
|
19 |
|
20 |
+
// Let's make some menus.
|
21 |
+
add_action( 'admin_menu', array( $this, 'register_menus' ), 9 );
|
22 |
+
add_action( 'admin_print_styles', array( $this, 'menu_icon' ) );
|
23 |
+
|
24 |
+
// Plugins page settings link.
|
25 |
+
add_filter( 'plugin_action_links_' . plugin_basename( WPFORMS_PLUGIN_DIR . 'wpforms.php' ), array( $this, 'settings_link' ) );
|
26 |
}
|
27 |
|
28 |
/**
|
34 |
|
35 |
$menu_cap = apply_filters( 'wpforms_manage_cap', 'manage_options' );
|
36 |
|
37 |
+
// Default Forms top level menu item.
|
38 |
add_menu_page(
|
39 |
__( 'WPForms', 'wpforms' ),
|
40 |
__( 'WPForms', 'wpforms' ),
|
45 |
apply_filters( 'wpforms_menu_position', '57.7' )
|
46 |
);
|
47 |
|
48 |
+
// All Forms sub menu item.
|
49 |
add_submenu_page(
|
50 |
'wpforms-overview',
|
51 |
__( 'WPForms', 'wpforms' ),
|
55 |
array( $this, 'admin_page' )
|
56 |
);
|
57 |
|
58 |
+
// Add New sub menu item.
|
59 |
add_submenu_page(
|
60 |
'wpforms-overview',
|
61 |
__( 'WPForms Builder', 'wpforms' ),
|
65 |
array( $this, 'admin_page' )
|
66 |
);
|
67 |
|
68 |
+
// Entries sub menu item.
|
69 |
add_submenu_page(
|
70 |
'wpforms-overview',
|
71 |
__( 'Form Entries', 'wpforms' ),
|
77 |
|
78 |
do_action( 'wpform_admin_menu', $this );
|
79 |
|
80 |
+
// Settings sub menu item.
|
81 |
add_submenu_page(
|
82 |
'wpforms-overview',
|
83 |
__( 'WPForms Settings', 'wpforms' ),
|
87 |
array( $this, 'admin_page' )
|
88 |
);
|
89 |
|
90 |
+
// Tools sub menu item.
|
91 |
+
add_submenu_page(
|
92 |
+
'wpforms-overview',
|
93 |
+
__( 'WPForms Tools', 'wpforms' ),
|
94 |
+
__( 'Tools', 'wpforms' ),
|
95 |
+
$menu_cap,
|
96 |
+
'wpforms-tools',
|
97 |
+
array( $this, 'admin_page' )
|
98 |
+
);
|
99 |
+
|
100 |
// Hidden placeholder paged used for misc content.
|
101 |
add_submenu_page(
|
102 |
'wpforms-settings',
|
107 |
array( $this, 'admin_page' )
|
108 |
);
|
109 |
|
110 |
+
// Addons submenu page.
|
111 |
add_submenu_page(
|
112 |
'wpforms-overview',
|
113 |
__( 'WPForms Addons', 'wpforms' ),
|
118 |
);
|
119 |
}
|
120 |
|
121 |
+
/**
|
122 |
+
* Wrapper for the hook to render our custom settings pages.
|
123 |
+
*
|
124 |
+
* @since 1.0.0
|
125 |
+
*/
|
126 |
public function admin_page() {
|
127 |
|
128 |
do_action( 'wpforms_admin_page' );
|
135 |
*/
|
136 |
public function menu_icon() {
|
137 |
|
138 |
+
$menu_cap = apply_filters( 'wpforms_manage_cap', 'manage_options' );
|
139 |
+
|
140 |
+
if ( ! current_user_can( $menu_cap ) ) {
|
141 |
+
return;
|
142 |
+
}
|
143 |
+
?>
|
144 |
+
<style type="text/css">
|
145 |
+
@font-face {
|
146 |
+
font-family: "wpforms-menu";
|
147 |
+
src:url("<?php echo WPFORMS_PLUGIN_URL; ?>assets/fonts/wpforms-menu.eot");
|
148 |
+
src:url("<?php echo WPFORMS_PLUGIN_URL; ?>assets/fonts/wpforms-menu.eot?#iefix") format("embedded-opentype"),
|
149 |
+
url("<?php echo WPFORMS_PLUGIN_URL; ?>assets/fonts/wpforms-menu.woff") format("woff"),
|
150 |
+
url("<?php echo WPFORMS_PLUGIN_URL; ?>assets/fonts/wpforms-menu.ttf") format("truetype"),
|
151 |
+
url("<?php echo WPFORMS_PLUGIN_URL; ?>assets/fonts/wpforms-menu.svg#wpforms") format("svg");
|
152 |
+
font-weight: normal;
|
153 |
+
font-style: normal;
|
154 |
+
}
|
155 |
+
#toplevel_page_wpforms-overview .wp-menu-image:before,
|
156 |
+
.wpforms-menu-icon:before {
|
157 |
+
content: "\61";
|
158 |
+
font-family: "wpforms-menu" !important;
|
159 |
+
font-style: normal !important;
|
160 |
+
font-weight: normal !important;
|
161 |
+
font-variant: normal !important;
|
162 |
+
text-transform: none !important;
|
163 |
+
speak: none;
|
164 |
+
line-height: 1;
|
165 |
+
-webkit-font-smoothing: antialiased;
|
166 |
+
-moz-osx-font-smoothing: grayscale;
|
167 |
+
}
|
168 |
+
#toplevel_page_wpforms-overview .wp-menu-image:before {
|
169 |
+
font-size: 1.15em;
|
170 |
+
padding-top: 9px;
|
171 |
+
}
|
172 |
+
</style>
|
173 |
+
<?php
|
174 |
+
}
|
175 |
+
|
176 |
+
/**
|
177 |
+
* Add settings link to the Plugins page.
|
178 |
+
*
|
179 |
+
* @since 1.3.9
|
180 |
+
* @param array $links
|
181 |
+
* @return array $links
|
182 |
+
*/
|
183 |
+
public function settings_link( $links ) {
|
184 |
+
|
185 |
+
$admin_link = add_query_arg(
|
186 |
+
array(
|
187 |
+
'page' => 'wpforms-settings',
|
188 |
+
),
|
189 |
+
admin_url( 'admin.php' )
|
190 |
+
);
|
191 |
+
|
192 |
+
$setting_link = sprintf(
|
193 |
+
'<a href="%s">%s</a>',
|
194 |
+
$admin_link ,
|
195 |
+
__( 'Settings', 'wpforms' )
|
196 |
);
|
197 |
+
|
198 |
+
array_unshift( $links, $setting_link );
|
199 |
+
|
200 |
+
return $links;
|
201 |
}
|
202 |
+
|
203 |
}
|
204 |
+
new WPForms_Admin_Menu;
|
includes/admin/class-notices.php
ADDED
@@ -0,0 +1,136 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Admin notices, on the fly.
|
4 |
+
*
|
5 |
+
* @example
|
6 |
+
* Notice::success( 'All is good!' );
|
7 |
+
*
|
8 |
+
* @example
|
9 |
+
* Notice::warning( 'Do something please.' );
|
10 |
+
*
|
11 |
+
* @todo Persistent, dismissable notices
|
12 |
+
* @link https://gist.github.com/monkeymonk/2ea17e2260daaecd0049c46c8d6c85fd
|
13 |
+
* @package WPForms
|
14 |
+
* @author WPForms
|
15 |
+
* @since 1.3.9
|
16 |
+
* @license GPL-2.0+
|
17 |
+
* @copyright Copyright (c) 2017, WPForms LLC
|
18 |
+
*/
|
19 |
+
class WPForms_Admin_Notice {
|
20 |
+
|
21 |
+
/**
|
22 |
+
* Single instance holder.
|
23 |
+
*
|
24 |
+
* @since 1.3.9
|
25 |
+
* @var mixed
|
26 |
+
*/
|
27 |
+
private static $_instance = null;
|
28 |
+
|
29 |
+
/**
|
30 |
+
* Added notices.
|
31 |
+
*
|
32 |
+
* @since 1.3.9
|
33 |
+
* @var array
|
34 |
+
*/
|
35 |
+
public $notices = array();
|
36 |
+
|
37 |
+
/**
|
38 |
+
* Get the instance.
|
39 |
+
*
|
40 |
+
* @since 1.3.9
|
41 |
+
* @return WPForms_Admin
|
42 |
+
*/
|
43 |
+
public static function getInstance() {
|
44 |
+
|
45 |
+
if ( is_null( self::$_instance ) ) {
|
46 |
+
self::$_instance = new WPForms_Admin_Notice();
|
47 |
+
}
|
48 |
+
|
49 |
+
return self::$_instance;
|
50 |
+
}
|
51 |
+
|
52 |
+
/**
|
53 |
+
* Hook when called.
|
54 |
+
*
|
55 |
+
* @since 1.3.9
|
56 |
+
*/
|
57 |
+
public function __construct() {
|
58 |
+
|
59 |
+
add_action( 'admin_notices', array( &$this, 'display' ) );
|
60 |
+
}
|
61 |
+
|
62 |
+
/**
|
63 |
+
* Display the notices.
|
64 |
+
*
|
65 |
+
* @since 1.3.9
|
66 |
+
*/
|
67 |
+
public function display() {
|
68 |
+
|
69 |
+
if ( ! current_user_can( apply_filters( 'wpforms_manage_cap', 'manage_options' ) ) ) {
|
70 |
+
return;
|
71 |
+
}
|
72 |
+
|
73 |
+
echo implode( ' ', $this->notices );
|
74 |
+
}
|
75 |
+
|
76 |
+
/**
|
77 |
+
* Add notice to instance property.
|
78 |
+
*
|
79 |
+
* @since 1.3.9
|
80 |
+
* @param $message Message to display
|
81 |
+
* @param string $type Type of the notice (default: '')
|
82 |
+
*/
|
83 |
+
public static function add( $message, $type = '' ) {
|
84 |
+
|
85 |
+
$instance = self::getInstance();
|
86 |
+
$id = 'wpforms-notice-' . ( count( $instance->notices ) + 1 );
|
87 |
+
$type = ! empty( $type ) ? 'notice-' . $type : '';
|
88 |
+
$notice = sprintf( '<div class="notice wpforms-notice %s" id="%s">%s</div>', $type, $id, wpautop( $message ) );
|
89 |
+
|
90 |
+
$instance->notices[] = $notice;
|
91 |
+
}
|
92 |
+
|
93 |
+
/**
|
94 |
+
* Add Info notice.
|
95 |
+
*
|
96 |
+
* @since 1.3.9
|
97 |
+
* @param string $message Message to display
|
98 |
+
*/
|
99 |
+
public static function info( $message ) {
|
100 |
+
|
101 |
+
self::add( $message, 'info' );
|
102 |
+
}
|
103 |
+
|
104 |
+
/**
|
105 |
+
* Add Error notice.
|
106 |
+
*
|
107 |
+
* @since 1.3.9
|
108 |
+
* @param string $message Message to display
|
109 |
+
*/
|
110 |
+
public static function error( $message ){
|
111 |
+
|
112 |
+
self::add( $message, 'error' );
|
113 |
+
}
|
114 |
+
|
115 |
+
/**
|
116 |
+
* Add Success notice.
|
117 |
+
*
|
118 |
+
* @since 1.3.9
|
119 |
+
* @param string $message Message to display
|
120 |
+
*/
|
121 |
+
public static function success( $message ){
|
122 |
+
|
123 |
+
self::add( $message, 'success' );
|
124 |
+
}
|
125 |
+
|
126 |
+
/**
|
127 |
+
* Add Warning notice.
|
128 |
+
*
|
129 |
+
* @since 1.3.9
|
130 |
+
* @param string $message Message to display
|
131 |
+
*/
|
132 |
+
public static function warning( $message ) {
|
133 |
+
|
134 |
+
self::add( $message, 'warning' );
|
135 |
+
}
|
136 |
+
}
|
{lite/includes → includes}/admin/class-review.php
RENAMED
@@ -1,6 +1,6 @@
|
|
1 |
<?php
|
2 |
/**
|
3 |
-
*
|
4 |
*
|
5 |
* @package WPForms
|
6 |
* @author WPForms
|
@@ -63,10 +63,67 @@ class WPForms_Review {
|
|
63 |
// Update the review option now.
|
64 |
update_option( 'wpforms_review', $review );
|
65 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
66 |
// Fetch when plugin was initially installed
|
67 |
$activated = get_option( 'wpforms_activated', array() );
|
68 |
|
69 |
-
if ( !empty( $activated['lite'] ) ) {
|
70 |
// Only continue if plugin has been installed for at least 7 days
|
71 |
if ( ( $activated['lite'] + ( DAY_IN_SECONDS * 7 ) ) > time() ) {
|
72 |
return;
|
@@ -139,4 +196,4 @@ class WPForms_Review {
|
|
139 |
}
|
140 |
|
141 |
}
|
142 |
-
new WPForms_Review;
|
1 |
<?php
|
2 |
/**
|
3 |
+
* Ask for some love.
|
4 |
*
|
5 |
* @package WPForms
|
6 |
* @author WPForms
|
63 |
// Update the review option now.
|
64 |
update_option( 'wpforms_review', $review );
|
65 |
|
66 |
+
// Logic is slightly different depending on what's at our disposal.
|
67 |
+
if ( wpforms()->pro && class_exists( 'WPForms_Entry_Handler' ) ) {
|
68 |
+
$this->review();
|
69 |
+
} else {
|
70 |
+
$this->review_lite();
|
71 |
+
}
|
72 |
+
}
|
73 |
+
|
74 |
+
/**
|
75 |
+
* Maybe show review request.
|
76 |
+
*
|
77 |
+
* @since 1.3.9
|
78 |
+
*/
|
79 |
+
public function review() {
|
80 |
+
|
81 |
+
// Fetch total entries
|
82 |
+
$entries = wpforms()->entry->get_entries( array( 'number' => 50 ), true );
|
83 |
+
|
84 |
+
// Only show review request if the site has collected at least 50 entries
|
85 |
+
if ( empty( $entries ) || $entries < 50 ) {
|
86 |
+
return;
|
87 |
+
}
|
88 |
+
|
89 |
+
// We have a candidate! Output a review message.
|
90 |
+
?>
|
91 |
+
<div class="notice notice-info is-dismissible wpforms-review-notice">
|
92 |
+
<p><?php _e( 'Hey, I noticed you collected over 50 entries from WPForms - that’s awesome! Could you please do me a BIG favor and give it a 5-star rating on WordPress to help us spread the word and boost our motivation?', 'wpforms' ); ?></p>
|
93 |
+
<p><strong><?php _e( '~ Syed Balkhi<br>Co-Founder of WPForms', 'wpforms' ); ?></strong></p>
|
94 |
+
<p>
|
95 |
+
<a href="https://wordpress.org/support/plugin/wpforms-lite/reviews/?filter=5#new-post" class="wpforms-dismiss-review-notice wpforms-review-out" target="_blank" rel="noopener"><?php _e( 'Ok, you deserve it', 'wpforms' ); ?></a><br>
|
96 |
+
<a href="#" class="wpforms-dismiss-review-notice" target="_blank" rel="noopener"><?php _e( 'Nope, maybe later', 'wpforms' ); ?></a><br>
|
97 |
+
<a href="#" class="wpforms-dismiss-review-notice" target="_blank" rel="noopener"><?php _e( 'I already did', 'wpforms' ); ?></a>
|
98 |
+
</p>
|
99 |
+
</div>
|
100 |
+
<script type="text/javascript">
|
101 |
+
jQuery(document).ready( function($) {
|
102 |
+
$(document).on('click', '.wpforms-dismiss-review-notice, .wpforms-review-notice button', function( event ) {
|
103 |
+
if ( ! $(this).hasClass('wpforms-review-out') ) {
|
104 |
+
event.preventDefault();
|
105 |
+
}
|
106 |
+
$.post( ajaxurl, {
|
107 |
+
action: 'wpforms_review_dismiss'
|
108 |
+
});
|
109 |
+
$('.wpforms-review-notice').remove();
|
110 |
+
});
|
111 |
+
});
|
112 |
+
</script>
|
113 |
+
<?php
|
114 |
+
}
|
115 |
+
|
116 |
+
/**
|
117 |
+
* Maybe show Lite review request.
|
118 |
+
*
|
119 |
+
* @since 1.3.9
|
120 |
+
*/
|
121 |
+
public function review_lite() {
|
122 |
+
|
123 |
// Fetch when plugin was initially installed
|
124 |
$activated = get_option( 'wpforms_activated', array() );
|
125 |
|
126 |
+
if ( ! empty( $activated['lite'] ) ) {
|
127 |
// Only continue if plugin has been installed for at least 7 days
|
128 |
if ( ( $activated['lite'] + ( DAY_IN_SECONDS * 7 ) ) > time() ) {
|
129 |
return;
|
196 |
}
|
197 |
|
198 |
}
|
199 |
+
new WPForms_Review;
|
includes/admin/class-settings.php
ADDED
@@ -0,0 +1,505 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Settings class.
|
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_Settings {
|
12 |
+
|
13 |
+
/**
|
14 |
+
* The current active tab.
|
15 |
+
*
|
16 |
+
* @since 1.3.9
|
17 |
+
* @var array
|
18 |
+
*/
|
19 |
+
public $view;
|
20 |
+
|
21 |
+
/**
|
22 |
+
* Primary class constructor.
|
23 |
+
*
|
24 |
+
* @since 1.0.0
|
25 |
+
*/
|
26 |
+
public function __construct() {
|
27 |
+
|
28 |
+
// Maybe load settings page.
|
29 |
+
add_action( 'admin_init', array( $this, 'init' ) );
|
30 |
+
}
|
31 |
+
|
32 |
+
/**
|
33 |
+
* Determing if the user is viewing the settings page, if so, party on.
|
34 |
+
*
|
35 |
+
* @since 1.0.0
|
36 |
+
*/
|
37 |
+
public function init() {
|
38 |
+
|
39 |
+
// Check what page we are on.
|
40 |
+
$page = isset( $_GET['page'] ) ? $_GET['page'] : '';
|
41 |
+
|
42 |
+
// Only load if we are actually on the settings page.
|
43 |
+
if ( 'wpforms-settings' === $page ) {
|
44 |
+
|
45 |
+
// Include API callbacks and functions.
|
46 |
+
require_once WPFORMS_PLUGIN_DIR . 'includes/admin/settings-api.php';
|
47 |
+
|
48 |
+
// Watch for triggered save.
|
49 |
+
$this->save_settings();
|
50 |
+
|
51 |
+
// Determine the current active settings tab.
|
52 |
+
$this->view = isset( $_GET['view'] ) ? esc_html( $_GET['view'] ) : 'general';
|
53 |
+
|
54 |
+
add_action( 'admin_enqueue_scripts', array( $this, 'enqueues' ) );
|
55 |
+
add_action( 'wpforms_admin_settings_after', array( $this, 'captcha_addon_notice' ) );
|
56 |
+
add_action( 'wpforms_admin_page', array( $this, 'output' ) );
|
57 |
+
|
58 |
+
// Hook for add-ons.
|
59 |
+
do_action( 'wpforms_settings_init' );
|
60 |
+
}
|
61 |
+
}
|
62 |
+
|
63 |
+
/**
|
64 |
+
* Sanitize and save setings.
|
65 |
+
*
|
66 |
+
* @since 1.3.9
|
67 |
+
*/
|
68 |
+
public function save_settings() {
|
69 |
+
|
70 |
+
// Check nonce and other various security checks.
|
71 |
+
if ( ! isset( $_POST['wpforms-settings-submit'] ) ) {
|
72 |
+
return;
|
73 |
+
}
|
74 |
+
|
75 |
+
if ( ! wp_verify_nonce( $_POST['nonce'], 'wpforms-settings-nonce' ) ) {
|
76 |
+
return;
|
77 |
+
}
|
78 |
+
|
79 |
+
if ( ! current_user_can( apply_filters( 'wpforms_manage_cap', 'manage_options' ) ) ) {
|
80 |
+
return;
|
81 |
+
}
|
82 |
+
|
83 |
+
if ( empty( $_POST['view'] ) ) {
|
84 |
+
return;
|
85 |
+
}
|
86 |
+
|
87 |
+
// Get registered fields and current settings.
|
88 |
+
$fields = $this->get_registered_settings( $_POST['view'] );
|
89 |
+
$settings = get_option( 'wpforms_settings', array() );
|
90 |
+
|
91 |
+
if ( empty( $fields ) || ! is_array( $fields ) ) {
|
92 |
+
return;
|
93 |
+
}
|
94 |
+
|
95 |
+
// Sanitize and prep each field.
|
96 |
+
foreach ( $fields as $id => $field ) {
|
97 |
+
|
98 |
+
// Certain field types are not valid for saving and are skipped.
|
99 |
+
$exclude = apply_filters( 'wpforms_settings_exclude_type', array( 'content', 'license', 'providers' ) );
|
100 |
+
|
101 |
+
if ( empty( $field['type'] ) || in_array( $field['type'], $exclude, true ) ) {
|
102 |
+
continue;
|
103 |
+
}
|
104 |
+
|
105 |
+
$value = isset( $_POST[ $id ] ) ? trim( $_POST[ $id ] ) : false;
|
106 |
+
$vaue_prev = isset( $settings[ $id ] ) ? $settings[ $id ] : false;
|
107 |
+
|
108 |
+
// Custom filter can be provided for sanitizing, otherwise use
|
109 |
+
// defaults.
|
110 |
+
if ( ! empty( $field['filter'] ) && function_exists( $field['filter'] ) ) {
|
111 |
+
|
112 |
+
$value = call_user_func( $field['filter'], $value, $id, $field, $value_prev );
|
113 |
+
|
114 |
+
} else {
|
115 |
+
|
116 |
+
switch ( $field['type'] ) {
|
117 |
+
case 'checkbox':
|
118 |
+
$value = (bool) $value;
|
119 |
+
break;
|
120 |
+
case 'image':
|
121 |
+
$value = esc_url_raw( $value );
|
122 |
+
break;
|
123 |
+
case 'color':
|
124 |
+
$value = wpforms_sanitize_hex_color( $value );
|
125 |
+
break;
|
126 |
+
case 'text':
|
127 |
+
case 'radio':
|
128 |
+
case 'select':
|
129 |
+
default:
|
130 |
+
$value = sanitize_text_field( $value );
|
131 |
+
break;
|
132 |
+
}
|
133 |
+
}
|
134 |
+
|
135 |
+
// Add to settings.
|
136 |
+
$settings[ $id ] = $value;
|
137 |
+
}
|
138 |
+
|
139 |
+
// Save settings.
|
140 |
+
update_option( 'wpforms_settings', $settings );
|
141 |
+
|
142 |
+
WPForms_Admin_Notice::success( __( 'Settings saved.', 'wpforms' ) );
|
143 |
+
}
|
144 |
+
|
145 |
+
/**
|
146 |
+
* Enqueue assets for the settings page.
|
147 |
+
*
|
148 |
+
* @since 1.0.0
|
149 |
+
*/
|
150 |
+
public function enqueues() {
|
151 |
+
|
152 |
+
// Hook for add-ons.
|
153 |
+
do_action( 'wpforms_settings_enqueue' );
|
154 |
+
}
|
155 |
+
|
156 |
+
/**
|
157 |
+
* Return registered settings tabs.
|
158 |
+
*
|
159 |
+
* @since 1.3.9
|
160 |
+
* @return array
|
161 |
+
*/
|
162 |
+
public function get_tabs() {
|
163 |
+
|
164 |
+
$tabs = array(
|
165 |
+
'general' => array(
|
166 |
+
'name' => __( 'General', 'wpforms' ),
|
167 |
+
'form' => true,
|
168 |
+
'submit' => __( 'Save Settings', 'wpforms' ),
|
169 |
+
),
|
170 |
+
'email' => array(
|
171 |
+
'name' => __( 'Email', 'wpforms' ),
|
172 |
+
'form' => true,
|
173 |
+
'submit' => __( 'Save Settings', 'wpforms' ),
|
174 |
+
),
|
175 |
+
'recaptcha' => array(
|
176 |
+
'name' => __( 'reCAPTCHA', 'wpforms' ),
|
177 |
+
'form' => true,
|
178 |
+
'submit' => __( 'Save Settings', 'wpforms' ),
|
179 |
+
),
|
180 |
+
'validation' => array(
|
181 |
+
'name' => __( 'Validation', 'wpforms' ),
|
182 |
+
'form' => true,
|
183 |
+
'submit' => __( 'Save Settings', 'wpforms' ),
|
184 |
+
),
|
185 |
+
'integrations' => array(
|
186 |
+
'name' => __( 'Integrations', 'wpforms' ),
|
187 |
+
'form' => false,
|
188 |
+
'submit' => false,
|
189 |
+
),
|
190 |
+
);
|
191 |
+
return apply_filters( 'wpforms_settings_tabs', $tabs );
|
192 |
+
}
|
193 |
+
|
194 |
+
/**
|
195 |
+
* Output tab navigation area.
|
196 |
+
*
|
197 |
+
* @since 1.3.9
|
198 |
+
*/
|
199 |
+
public function tabs() {
|
200 |
+
|
201 |
+
$tabs = $this->get_tabs();
|
202 |
+
|
203 |
+
echo '<ul class="wpforms-admin-tabs">';
|
204 |
+
foreach ( $tabs as $id => $tab ) {
|
205 |
+
|
206 |
+
$active = $id === $this->view ? 'active' : '';
|
207 |
+
$name = esc_html( $tab['name'] );
|
208 |
+
$link = esc_url_raw( add_query_arg( 'view', $id, admin_url( 'admin.php?page=wpforms-settings' ) ) );
|
209 |
+
|
210 |
+
echo '<li><a href="' . $link . '" class="' . $active . '">' . $name . '</a></li>';
|
211 |
+
}
|
212 |
+
echo '</ul>';
|
213 |
+
}
|
214 |
+
|
215 |
+
/**
|
216 |
+
* Return all the default registered settings fields.
|
217 |
+
*
|
218 |
+
* @since 1.3.9
|
219 |
+
* @param string $view
|
220 |
+
* @return array
|
221 |
+
*/
|
222 |
+
public function get_registered_settings( $view = '' ) {
|
223 |
+
|
224 |
+
// reCAPTCAH heading description is long so we define it seperately.
|
225 |
+
$recaptcha_desc = '<p>' . __( 'reCAPTCHA is a free anti-spam service from Google which helps to protect your website from spam and abuse while letting real people pass through with ease.', 'wpforms' ) . '</p>';
|
226 |
+
$recaptcha_desc .= '<p>' . __( 'Google\'s original <a href="https://www.google.com/recaptcha/intro/" target="_blank" rel="noopener noreferrer">v2 reCAPTCHA</a> prompts users to check a box to prove they\'re human, whereas <a href="https://www.google.com/recaptcha/intro/invisible.html" target="_blank" rel="noopener noreferrer">Invisible reCAPTCHA</a> uses advanced technology to detect real users without requiring any input.', 'wpforms' ) . '</p>';
|
227 |
+
$recaptcha_desc .= '<p>' . __( 'Sites already using v2 reCAPTCHA will need to create new site keys before switching to the Invisible reCAPTCHA.', 'wpforms' ) . '</p>';
|
228 |
+
$recaptcha_desc .= '<p>' . __( '<a href="https://wpforms.com/docs/setup-captcha-wpforms/" rel="noopener noreferrer" target="_blank">Read our walk through</a> to learn more and for step-by-step directions.', 'wpforms' ) . '</p>';
|
229 |
+
|
230 |
+
$defaults = array(
|
231 |
+
// General Settings tab.
|
232 |
+
'general' => array(
|
233 |
+
'license-heading' => array(
|
234 |
+
'id' => 'license-heading',
|
235 |
+
'content' => '<h4>' . __( 'License', 'wpforms' ) . '</h4><p>' . __( 'Your license key provides access to updates and Add-ons', 'wpforms' ) . '</p>',
|
236 |
+
'type' => 'content',
|
237 |
+
'no_label' => true,
|
238 |
+
'class' => array( 'section-heading' ),
|
239 |
+
),
|
240 |
+
'license-key' => array(
|
241 |
+
'id' => 'license-key',
|
242 |
+
'name' => __( 'License Key', 'wpforms' ),
|
243 |
+
'type' => 'license',
|
244 |
+
),
|
245 |
+
'general-heading' => array(
|
246 |
+
'id' => 'general-heading',
|
247 |
+
'content' => '<h4>' . __( 'General', 'wpforms' ) . '</h4>',
|
248 |
+
'type' => 'content',
|
249 |
+
'no_label' => true,
|
250 |
+
'class' => array( 'section-heading', 'no-desc' ),
|
251 |
+
),
|
252 |
+
'disable-css' => array(
|
253 |
+
'id' => 'disable-css',
|
254 |
+
'name' => __( 'Include Form Styling', 'wpforms' ),
|
255 |
+
'desc' => __( 'Determines which CSS files to load for the site.', 'wpforms' ),
|
256 |
+
'type' => 'select',
|
257 |
+
'choicesjs' => true,
|
258 |
+
'default' => 1,
|
259 |
+
'options' => array(
|
260 |
+
1 => __( 'Base and form theme styling', 'wpforms' ),
|
261 |
+
2 => __( 'Base styling only', 'wpforms' ),
|
262 |
+
3 => __( 'No styling', 'wpforms' ),
|
263 |
+
),
|
264 |
+
),
|
265 |
+
'global-assets' => array(
|
266 |
+
'id' => 'global-assets',
|
267 |
+
'name' => __( 'Load Assets Globally', 'wpforms' ),
|
268 |
+
'desc' => __( 'Check this if you would like to load WPForms assets site-wide. Only check if your site is having compatibility issues or instructed to by support.', 'wpforms' ),
|
269 |
+
'type' => 'checkbox',
|
270 |
+
),
|
271 |
+
),
|
272 |
+
// Email settings tab.
|
273 |
+
'email' => array(
|
274 |
+
'email-heading' => array(
|
275 |
+
'id' => 'email-heading',
|
276 |
+
'content' => '<h4>' . __( 'Email', 'wpforms' ) . '</h4>',
|
277 |
+
'type' => 'content',
|
278 |
+
'no_label' => true,
|
279 |
+
'class' => array( 'section-heading', 'no-desc' ),
|
280 |
+
),
|
281 |
+
'email-template' => array(
|
282 |
+
'id' => 'email-template',
|
283 |
+
'name' => __( 'Template', 'wpforms' ),
|
284 |
+
'desc' => __( 'Determines how email notifications will be formatted. HTML Templates are the default.', 'wpforms' ),
|
285 |
+
'type' => 'radio',
|
286 |
+
'default' => 'default',
|
287 |
+
'options' => array(
|
288 |
+
'default' => __( 'HTML Template', 'wpforms' ),
|
289 |
+
'none' => __( 'Plain text', 'wpforms' ),
|
290 |
+
),
|
291 |
+
),
|
292 |
+
'email-header-image' => array(
|
293 |
+
'id' => 'email-header-image',
|
294 |
+
'name' => __( 'Header Image', 'wpforms' ),
|
295 |
+
'desc' => __( 'Upload or choose a logo to be displayed at the top of email notifications.<br>Recommended size is 300x100 or smaller for best support on all devices.', 'wpforms' ),
|
296 |
+
'type' => 'image',
|
297 |
+
),
|
298 |
+
'email-background-color' => array(
|
299 |
+
'id' => 'email-background-color',
|
300 |
+
'name' => __( 'Background Color', 'wpforms' ),
|
301 |
+
'desc' => __( 'Customize the background color of the HTML email template.', 'wpforms' ),
|
302 |
+
'type' => 'color',
|
303 |
+
'default' => '#e9eaec',
|
304 |
+
),
|
305 |
+
'email-carbon-copy' => array(
|
306 |
+
'id' => 'email-carbon-copy',
|
307 |
+
'name' => __( 'Carbon Copy', 'wpforms' ),
|
308 |
+
'desc' => __( 'Check this if you would like to enable the ability to CC: email addresses in the form notification settings.', 'wpforms' ),
|
309 |
+
'type' => 'checkbox',
|
310 |
+
),
|
311 |
+
),
|
312 |
+
// Recaptcha settings tab.
|
313 |
+
'recaptcha' => array(
|
314 |
+
'recaptcha-heading' => array(
|
315 |
+
'id' => 'recaptcha-heading',
|
316 |
+
'content' => '<h4>' . __( 'reCAPTCHA', 'wpforms' ) . '</h4>' . $recaptcha_desc,
|
317 |
+
'type' => 'content',
|
318 |
+
'no_label' => true,
|
319 |
+
'class' => array( 'section-heading' ),
|
320 |
+
),
|
321 |
+
'recaptcha-type' => array(
|
322 |
+
'id' => 'recaptcha-type',
|
323 |
+
'name' => __( 'Type', 'wpforms' ),
|
324 |
+
'type' => 'radio',
|
325 |
+
'default' => 'default',
|
326 |
+
'options' => array(
|
327 |
+
'v2' => __( 'v2 reCAPTCHA', 'wpforms' ),
|
328 |
+
'invisible' => __( 'Invisible reCAPTCHA', 'wpforms' ),
|
329 |
+
),
|
330 |
+
),
|
331 |
+
'recaptcha-site-key' => array(
|
332 |
+
'id' => 'recaptcha-site-key',
|
333 |
+
'name' => __( 'Site Key', 'wpforms' ),
|
334 |
+
'type' => 'text',
|
335 |
+
),
|
336 |
+
'recaptcha-secret-key' => array(
|
337 |
+
'id' => 'recaptcha-secret-key',
|
338 |
+
'name' => __( 'Secret Key', 'wpforms' ),
|
339 |
+
'type' => 'text',
|
340 |
+
),
|
341 |
+
),
|
342 |
+
// Validation messages settings tab.
|
343 |
+
'validation' => array(
|
344 |
+
'validation-heading' => array(
|
345 |
+
'id' => 'validation-heading',
|
346 |
+
'content' => '<h4>' . __( 'Validation Messages', 'wpforms' ) . '</h4><p>' . __( 'These messages are displayed to the user as they fill out a form in real-time.', 'wpforms' ) . '</p>',
|
347 |
+
'type' => 'content',
|
348 |
+
'no_label' => true,
|
349 |
+
'class' => array( 'section-heading' ),
|
350 |
+
),
|
351 |
+
'validation-required' => array(
|
352 |
+
'id' => 'validation-required',
|
353 |
+
'name' => __( 'Required', 'wpforms' ),
|
354 |
+
'type' => 'text',
|
355 |
+
'default' => __( 'This field is required.', 'wpforms' ),
|
356 |
+
),
|
357 |
+
'validation-url' => array(
|
358 |
+
'id' => 'validation-url',
|
359 |
+
'name' => __( 'Website URL', 'wpforms' ),
|
360 |
+
'type' => 'text',
|
361 |
+
'default' => __( 'Please enter a valid URL.', 'wpforms' ),
|
362 |
+
),
|
363 |
+
'validation-email' => array(
|
364 |
+
'id' => 'validation-email',
|
365 |
+
'name' => __( 'Email', 'wpforms' ),
|
366 |
+
'type' => 'text',
|
367 |
+
'default' => __( 'Please enter a valid email address.', 'wpforms' ),
|
368 |
+
),
|
369 |
+
'validation-number' => array(
|
370 |
+
'id' => 'validation-number',
|
371 |
+
'name' => __( 'Number', 'wpforms' ),
|
372 |
+
'type' => 'text',
|
373 |
+
'default' => __( 'Please enter a valid number.', 'wpforms' ),
|
374 |
+
),
|
375 |
+
'validation-confirm' => array(
|
376 |
+
'id' => 'validation-confirm',
|
377 |
+
'name' => __( 'Confirm Value', 'wpforms' ),
|
378 |
+
'type' => 'text',
|
379 |
+
'default' => __( 'Field values do not match.', 'wpforms' ),
|
380 |
+
),
|
381 |
+
),
|
382 |
+
// Provider integrations settings tab.
|
383 |
+
'integrations' => array(
|
384 |
+
'integrations-heading' => array(
|
385 |
+
'id' => 'integrations-heading',
|
386 |
+
'content' => '<h4>' . __( 'Integrations', 'wpforms' ) . '</h4><p>' . __( 'Manage integrations with popular providers such as Constant Contact, MailChimp, Zapier, and more.', 'wpforms' ) . '</p>',
|
387 |
+
'type' => 'content',
|
388 |
+
'no_label' => true,
|
389 |
+
'class' => array( 'section-heading' ),
|
390 |
+
),
|
391 |
+
'integrations-providers' => array(
|
392 |
+
'id' => 'integrations-providers',
|
393 |
+
'content' => '<h4>' . __( 'Integrations', 'wpforms' ) . '</h4><p>' . __( 'Manage integrations with popular providers such as Constant Contact, MailChimp, Zapier, and more.', 'wpforms' ) . '</p>',
|
394 |
+
'type' => 'providers',
|
395 |
+
'wrap' => 'none',
|
396 |
+
),
|
397 |
+
),
|
398 |
+
);
|
399 |
+
$defaults = apply_filters( 'wpforms_settings_defaults', $defaults );
|
400 |
+
|
401 |
+
return empty( $view ) ? $defaults : $defaults[ $view ];
|
402 |
+
}
|
403 |
+
|
404 |
+
/**
|
405 |
+
* Return array containing markup for all the appropriate settings fields.
|
406 |
+
*
|
407 |
+
* @since 1.3.9
|
408 |
+
* @param string $view
|
409 |
+
* @return array
|
410 |
+
*/
|
411 |
+
public function get_settings_fields( $view = '' ) {
|
412 |
+
|
413 |
+
$fields = array();
|
414 |
+
$settings = $this->get_registered_settings( $view );
|
415 |
+
|
416 |
+
foreach ( $settings as $id => $args ) {
|
417 |
+
|
418 |
+
$fields[ $id ] = wpforms_settings_output_field( $args );
|
419 |
+
}
|
420 |
+
|
421 |
+
return apply_filters( 'wpforms_settings_fields', $fields, $view );
|
422 |
+
}
|
423 |
+
|
424 |
+
/**
|
425 |
+
* Build the output for the plugin settings page.
|
426 |
+
*
|
427 |
+
* @since 1.0.0
|
428 |
+
*/
|
429 |
+
public function output() {
|
430 |
+
|
431 |
+
$tabs = $this->get_tabs();
|
432 |
+
$fields = $this->get_settings_fields( $this->view );
|
433 |
+
|
434 |
+
echo '<div id="wpforms-settings" class="wrap wpforms-admin-wrap">';
|
435 |
+
|
436 |
+
$this->tabs();
|
437 |
+
|
438 |
+
echo '<h1 class="wpforms-h1-placeholder"></h1>';
|
439 |
+
|
440 |
+
if ( wpforms()->pro && class_exists( 'WPForms_License' ) ) {
|
441 |
+
wpforms()->license->notices( true );
|
442 |
+
}
|
443 |
+
|
444 |
+
echo '<div class="wpforms-admin-content wpforms-admin-settings">';
|
445 |
+
|
446 |
+
// Some tabs rely on AJAX and do not contain a form, such as Integrations.
|
447 |
+
if ( ! empty( $tabs[ $this->view ]['form'] ) ) {
|
448 |
+
echo '<form class="wpforms-admin-settings-form" method="post">';
|
449 |
+
echo '<input type="hidden" name="action" value="update-settings">';
|
450 |
+
echo '<input type="hidden" name="view" value="' . $this->view . '">';
|
451 |
+
echo '<input type="hidden" name="nonce" value="' . wp_create_nonce( 'wpforms-settings-nonce' ) . '">';
|
452 |
+
}
|
453 |
+
|
454 |
+
do_action( 'wpforms_admin_settings_before', $this->view, $fields );
|
455 |
+
|
456 |
+
foreach ( $fields as $field ) {
|
457 |
+
echo $field;
|
458 |
+
}
|
459 |
+
|
460 |
+
if ( ! empty( $tabs[ $this->view ]['submit'] ) ) {
|
461 |
+
echo '<p class="submit">';
|
462 |
+
echo '<button type="submit" class="wpforms-btn wpforms-btn-md wpforms-btn-orange" name="wpforms-settings-submit">' . $tabs[ $this->view ]['submit'] . '</button>';
|
463 |
+
echo '</p>';
|
464 |
+
}
|
465 |
+
|
466 |
+
do_action( 'wpforms_admin_settings_after', $this->view, $fields );
|
467 |
+
|
468 |
+
if ( ! empty( $tabs[ $this->view ]['form'] ) ) {
|
469 |
+
echo '</form>';
|
470 |
+
}
|
471 |
+
|
472 |
+
echo '</div>';
|
473 |
+
|
474 |
+
echo '</div>';
|
475 |
+
}
|
476 |
+
|
477 |
+
/**
|
478 |
+
* Let Lite users know a Custom Captcha addon is available.
|
479 |
+
*
|
480 |
+
* @since 1.3.9
|
481 |
+
*/
|
482 |
+
public function captcha_addon_notice() {
|
483 |
+
|
484 |
+
if ( 'recaptcha' !== $this->view ) {
|
485 |
+
return;
|
486 |
+
}
|
487 |
+
|
488 |
+
// Only display to Lite users.
|
489 |
+
if ( wpforms()->pro ) {
|
490 |
+
return;
|
491 |
+
}
|
492 |
+
?>
|
493 |
+
<div class="captcha-addon-notice wpforms-clear">
|
494 |
+
<img src="<?php echo WPFORMS_PLUGIN_URL; ?>assets/images/settings-captcha-addon.png">
|
495 |
+
<h5><?php _e( 'Want to better protect your contact forms from spam?', 'wpforms' ); ?></h5>
|
496 |
+
<p>
|
497 |
+
<?php _e( 'WPForms custom captcha addon allows you to add custom questions captcha or math questions captcha to your WordPress forms. Since we know spam is a huge problem for contact forms, WPForms goes above and beyond to help you protect your forms.', 'wpforms' ); ?>
|
498 |
+
<br><br>
|
499 |
+
<a href="<?php echo wpforms_admin_upgrade_link(); ?>" class="wpforms-btn wpforms-btn-md wpforms-btn-orange" target="_blank" rel="noopener noreferrer"><?php _e( 'Click here to Upgrade', 'wpforms' ); ?></a>
|
500 |
+
</p>
|
501 |
+
</div>
|
502 |
+
<?php
|
503 |
+
}
|
504 |
+
}
|
505 |
+
new WPForms_Settings;
|
includes/admin/class-tools.php
ADDED
@@ -0,0 +1,534 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Tools admin page class.
|
4 |
+
*
|
5 |
+
* @package WPForms
|
6 |
+
* @author WPForms
|
7 |
+
* @since 1.3.9
|
8 |
+
* @license GPL-2.0+
|
9 |
+
* @copyright Copyright (c) 2017, WPForms LLC
|
10 |
+
*/
|
11 |
+
class WPForms_Tools {
|
12 |
+
|
13 |
+
/**
|
14 |
+
* The current active tab.
|
15 |
+
*
|
16 |
+
* @since 1.3.9
|
17 |
+
* @var array
|
18 |
+
*/
|
19 |
+
public $view;
|
20 |
+
|
21 |
+
/**
|
22 |
+
* Template code if generated.
|
23 |
+
*
|
24 |
+
* @since 1.3.9
|
25 |
+
* @var string
|
26 |
+
*/
|
27 |
+
private $template = false;
|
28 |
+
|
29 |
+
/**
|
30 |
+
* The available forms.
|
31 |
+
*
|
32 |
+
* @since 1.3.9
|
33 |
+
* @var array
|
34 |
+
*/
|
35 |
+
public $forms = false;
|
36 |
+
|
37 |
+
/**
|
38 |
+
* Primary class constructor.
|
39 |
+
*
|
40 |
+
* @since 1.3.9
|
41 |
+
*/
|
42 |
+
public function __construct() {
|
43 |
+
|
44 |
+
// Maybe load tools page.
|
45 |
+
add_action( 'admin_init', array( $this, 'init' ) );
|
46 |
+
}
|
47 |
+
|
48 |
+
/**
|
49 |
+
* Determing if the user is viewing the tools page, if so, party on.
|
50 |
+
*
|
51 |
+
* @since 1.3.9
|
52 |
+
*/
|
53 |
+
public function init() {
|
54 |
+
|
55 |
+
// Check what page we are on.
|
56 |
+
$page = isset( $_GET['page'] ) ? $_GET['page'] : '';
|
57 |
+
|
58 |
+
// Only load if we are actually on the settings page.
|
59 |
+
if ( 'wpforms-tools' === $page ) {
|
60 |
+
|
61 |
+
// Determine the current active settings tab.
|
62 |
+
$this->view = isset( $_GET['view'] ) ? esc_html( $_GET['view'] ) : 'importexport';
|
63 |
+
|
64 |
+
// Retrieve available forms.
|
65 |
+
$args = array(
|
66 |
+
'orderby' => 'title',
|
67 |
+
);
|
68 |
+
$this->forms = wpforms()->form->get( '', $args );
|
69 |
+
|
70 |
+
add_action( 'wpforms_tools_init', array( $this, 'import_export_process' ) );
|
71 |
+
add_action( 'wpforms_admin_page', array( $this, 'output' ) );
|
72 |
+
|
73 |
+
// Hook for add-ons.
|
74 |
+
do_action( 'wpforms_tools_init' );
|
75 |
+
}
|
76 |
+
}
|
77 |
+
|
78 |
+
/**
|
79 |
+
* Build the output for the Tools admin page.
|
80 |
+
*
|
81 |
+
* @since 1.3.9
|
82 |
+
*/
|
83 |
+
public function output() {
|
84 |
+
|
85 |
+
?>
|
86 |
+
<div id="wpforms-tools" class="wrap wpforms-admin-wrap">
|
87 |
+
|
88 |
+
<ul class="wpforms-admin-tabs">
|
89 |
+
<li><a href="<?php echo admin_url( 'admin.php?page=wpforms-tools&view=importexport' ); ?>" class="<?php echo 'importexport' === $this->view ? 'active' : ''; ?>"><?php _e( 'Import/Export', 'wpforms' ); ?></a></li>
|
90 |
+
<li><a href="<?php echo admin_url( 'admin.php?page=wpforms-tools&view=system' ); ?>" class="<?php echo 'system' === $this->view ? 'active' : ''; ?>"><?php _e( 'System Info', 'wpforms' ); ?></a></li>
|
91 |
+
</ul>
|
92 |
+
|
93 |
+
<h1 class="wpforms-h1-placeholder"></h1>
|
94 |
+
|
95 |
+
<?php
|
96 |
+
if ( isset( $_GET['wpforms_notice'] ) && 'forms-imported' === $_GET['wpforms_notice'] ) {
|
97 |
+
printf( '<div class="updated notice is-dismissible"><p>%s</p></div>', __( 'Form(s) imported', 'wpforms' ) );
|
98 |
+
}
|
99 |
+
?>
|
100 |
+
|
101 |
+
<div class="wpforms-admin-content wpforms-admin-settings">
|
102 |
+
|
103 |
+
<?php
|
104 |
+
if ( 'system' === $this->view ) {
|
105 |
+
$this->system_info_tab();
|
106 |
+
} else {
|
107 |
+
$this->import_export_tab();
|
108 |
+
}
|
109 |
+
?>
|
110 |
+
|
111 |
+
</div>
|
112 |
+
|
113 |
+
</div>
|
114 |
+
<?php
|
115 |
+
}
|
116 |
+
|
117 |
+
/**
|
118 |
+
* Import/Export tab contents.
|
119 |
+
*
|
120 |
+
* @since 1.3.9
|
121 |
+
*/
|
122 |
+
public function import_export_tab() {
|
123 |
+
|
124 |
+
?>
|
125 |
+
<div class="wpforms-setting-row tools">
|
126 |
+
<h3><?php _e( 'Form Import', 'wpforms' ); ?></h3>
|
127 |
+
<p><?php _e( 'Select an export file.', 'wpforms' ); ?></p>
|
128 |
+
<form method="post" enctype="multipart/form-data" action="<?php echo admin_url( 'admin.php?page=wpforms-tools&view=importexport' ); ?>">
|
129 |
+
<div class="wpforms-file-upload">
|
130 |
+
<input type="file" name="file" id="wpforms-tools-form-import" class="inputfile" data-multiple-caption="{count} files selected" accept=".json" />
|
131 |
+
<label for="wpforms-tools-form-import">
|
132 |
+
<span class="fld"><span class="placeholder"><?php _e( 'No file chosen', 'wpforms' ); ?></span></span>
|
133 |
+
<strong class="wpforms-btn wpforms-btn-md wpforms-btn-light-grey">
|
134 |
+
<i class="fa fa-upload" aria-hidden="true"></i> <?php _e( 'Choose a file…', 'wpforms' ); ?>
|
135 |
+
</strong>
|
136 |
+
</label>
|
137 |
+
</div>
|
138 |
+
<br>
|
139 |
+
<input type="hidden" name="action" value="import_form">
|
140 |
+
<button type="submit" name="submit-importexport" class="wpforms-btn wpforms-btn-md wpforms-btn-orange"><?php _e( 'Import', 'wpforms' ); ?></button>
|
141 |
+
<?php wp_nonce_field( 'wpforms_import_nonce', 'wpforms-tools-importexport-nonce' ); ?>
|
142 |
+
</form>
|
143 |
+
</div>
|
144 |
+
|
145 |
+
<div class="wpforms-setting-row tools">
|
146 |
+
<h3 id="form-export"><?php _e( 'Form Export', 'wpforms' ); ?></h3>
|
147 |
+
<p><?php _e( 'Form exports files can be used to create a backup of your forms or to imported forms into another site.' ,'wpforms' ); ?></p>
|
148 |
+
<form method="post" action="<?php echo admin_url( 'admin.php?page=wpforms-tools&view=importexport' ); ?>">
|
149 |
+
<?php
|
150 |
+
if ( ! empty( $this->forms ) ) {
|
151 |
+
echo '<span class="choicesjs-select-wrap">';
|
152 |
+
echo '<select id="wpforms-tools-form-export" class="choicesjs-select" name="forms[]" multiple data-placeholder="' . __( 'Select form(s)', 'wpforms' ) . '">';
|
153 |
+
foreach ( $this->forms as $form ) {
|
154 |
+
printf( '<option value="%d">%s</option>', $form->ID, esc_html( $form->post_title ) );
|
155 |
+
}
|
156 |
+
echo '</select>';
|
157 |
+
echo '</span>';
|
158 |
+
} else {
|
159 |
+
echo '<p>' . __( 'You need to create a form before you can use form export.'. 'wpforms' ) . '</p>';
|
160 |
+
}
|
161 |
+
?>
|
162 |
+
<br>
|
163 |
+
<input type="hidden" name="action" value="export_form">
|
164 |
+
<?php wp_nonce_field( 'wpforms_import_nonce', 'wpforms-tools-importexport-nonce' ); ?>
|
165 |
+
<button type="submit" name="submit-importexport" class="wpforms-btn wpforms-btn-md wpforms-btn-orange"><?php _e( 'Export', 'wpforms' ); ?></button>
|
166 |
+
</form>
|
167 |
+
</div>
|
168 |
+
|
169 |
+
<div class="wpforms-setting-row tools">
|
170 |
+
<h3 id="template-export"><?php _e( 'Form Template Export', 'wpforms' ); ?></h3>
|
171 |
+
<?php
|
172 |
+
if ( $this->template ) {
|
173 |
+
echo '<p>' . __( 'The following code can be used to register your custom form template. Copy and paste the following code to your theme\'s functions.php file or include it within an external file.', 'wpforms' ) . '<p>';
|
174 |
+
echo '<p>' . sprintf( __( 'For more information <a href="%s" target="blank" rel="noopener noreferrer">see our documentation</a>.', 'wpforms' ), 'https://wpforms.com/docs/how-to-create-a-custom-form-template/' ) . '<p>';
|
175 |
+
echo '<textarea class="info-area" readonly>' . esc_textarea( $this->template ) . '</textarea><br>';
|
176 |
+
}
|
177 |
+
?>
|
178 |
+
<p><?php _e( 'Select a form to generate PHP code that can be used to register a custom form template.', 'wpforms' ); ?></p>
|
179 |
+
<form method="post" action="<?php echo admin_url( 'admin.php?page=wpforms-tools&view=importexport#template-export' ); ?>">
|
180 |
+
<?php
|
181 |
+
if ( ! empty( $this->forms ) ) {
|
182 |
+
echo '<span class="choicesjs-select-wrap">';
|
183 |
+
echo '<select id="wpforms-tools-form-template" class="choicesjs-select" name="form">';
|
184 |
+
foreach ( $this->forms as $form ) {
|
185 |
+
printf( '<option value="%d">%s</option>', $form->ID, esc_html( $form->post_title ) );
|
186 |
+
}
|
187 |
+
echo '</select>';
|
188 |
+
echo '</span>';
|
189 |
+
} else {
|
190 |
+
echo '<p>' . __( 'You need to create a form before you can generate a template.'. 'wpforms' ) . '</p>';
|
191 |
+
}
|
192 |
+
?>
|
193 |
+
<br>
|
194 |
+
<input type="hidden" name="action" value="export_template">
|
195 |
+
<?php wp_nonce_field( 'wpforms_import_nonce', 'wpforms-tools-importexport-nonce' ); ?>
|
196 |
+
<button type="submit" name="submit-importexport" class="wpforms-btn wpforms-btn-md wpforms-btn-orange"><?php _e( 'Export Template', 'wpforms' ); ?></button>
|
197 |
+
</form>
|
198 |
+
</div>
|
199 |
+
<?php
|
200 |
+
}
|
201 |
+
|
202 |
+
/**
|
203 |
+
* System Info tab contents.
|
204 |
+
*
|
205 |
+
* @since 1.3.9
|
206 |
+
*/
|
207 |
+
public function system_info_tab() {
|
208 |
+
|
209 |
+
?>
|
210 |
+
<div class="wpforms-setting-row tools">
|
211 |
+
<h3 id="form-export"><?php _e( 'System Information', 'wpforms' ); ?></h3>
|
212 |
+
<textarea readonly="readonly" class="info-area"><?php echo $this->get_system_info(); ?></textarea>
|
213 |
+
</div>
|
214 |
+
<?php
|
215 |
+
}
|
216 |
+
|
217 |
+
/**
|
218 |
+
* Import/Export processing.
|
219 |
+
*
|
220 |
+
* @since 1.3.9
|
221 |
+
*/
|
222 |
+
public function import_export_process() {
|
223 |
+
|
224 |
+
// Check for triggered save.
|
225 |
+
if ( empty( $_POST['wpforms-tools-importexport-nonce'] ) || empty( $_POST['action'] ) || ! isset( $_POST['submit-importexport'] ) ) {
|
226 |
+
return;
|
227 |
+
}
|
228 |
+
|
229 |
+
// Check for valid nonce and permission.
|
230 |
+
if ( ! wp_verify_nonce( $_POST['wpforms-tools-importexport-nonce'], 'wpforms_import_nonce' ) || ! current_user_can( apply_filters( 'wpforms_manage_cap', 'manage_options' ) ) ) {
|
231 |
+
return;
|
232 |
+
}
|
233 |
+
|
234 |
+
// Export Form(s).
|
235 |
+
if ( 'export_form' === $_POST['action'] && ! empty( $_POST['forms'] ) ) {
|
236 |
+
|
237 |
+
$export = array();
|
238 |
+
$forms = get_posts(
|
239 |
+
array(
|
240 |
+
'post_type' => 'wpforms',
|
241 |
+
'no_found_rows' => true,
|
242 |
+
'nopaging' => true,
|
243 |
+
'post__in' => array_map( 'intval', $_POST['forms'] ),
|
244 |
+
) );
|
245 |
+
|
246 |
+
foreach ( $forms as $form ) {
|
247 |
+
$export[] = wpforms_decode( $form->post_content );
|
248 |
+
}
|
249 |
+
|
250 |
+
ignore_user_abort( true );
|
251 |
+
|
252 |
+
if ( ! in_array( 'set_time_limit', explode( ',', ini_get( 'disable_functions' ) ) ) ) {
|
253 |
+
set_time_limit( 0 );
|
254 |
+
}
|
255 |
+
|
256 |
+
nocache_headers();
|
257 |
+
header( 'Content-Type: application/json; charset=utf-8' );
|
258 |
+
header( 'Content-Disposition: attachment; filename=wpforms-form-export-' . date( 'm-d-Y' ) . '.json' );
|
259 |
+
header( 'Expires: 0' );
|
260 |
+
|
261 |
+
echo wp_json_encode( $export );
|
262 |
+
exit;
|
263 |
+
}
|
264 |
+
|
265 |
+
// Import Form(s).
|
266 |
+
if ( 'import_form' === $_POST['action'] && ! empty( $_FILES['file']['tmp_name'] ) ) {
|
267 |
+
|
268 |
+
$ext = strtolower( pathinfo( $_FILES['file']['name'], PATHINFO_EXTENSION ) );
|
269 |
+
|
270 |
+
if ( 'json' !== $ext ) {
|
271 |
+
wp_die( __( 'Please upload a valid .json form export file.', 'wpforms' ), __( 'Error', 'wpformsp' ), array( 'response' => 400 ) );
|
272 |
+
}
|
273 |
+
|
274 |
+
$forms = json_decode( file_get_contents( $_FILES['file']['tmp_name'] ), true );
|
275 |
+
|
276 |
+
if ( ! empty( $forms ) ) {
|
277 |
+
|
278 |
+
foreach ( $forms as $form ) {
|
279 |
+
|
280 |
+
$title = ! empty( $form['settings']['form_title'] ) ? $form['settings']['form_title'] : '';
|
281 |
+
$desc = ! empty( $form['settings']['form_desc'] ) ? $form['settings']['form_desc'] : '';
|
282 |
+
$new_id = wp_insert_post( array(
|
283 |
+
'post_title' => $title,
|
284 |
+
'post_status' => 'publish',
|
285 |
+
'post_type' => 'wpforms',
|
286 |
+
'post_excerpt' => $desc,
|
287 |
+
) );
|
288 |
+
if ( $new_id ) {
|
289 |
+
$form['id'] = $new_id;
|
290 |
+
$new = array(
|
291 |
+
'ID' => $new_id,
|
292 |
+
'post_content' => wpforms_encode( $form ),
|
293 |
+
);
|
294 |
+
wp_update_post( $new );
|
295 |
+
}
|
296 |
+
}
|
297 |
+
wp_safe_redirect( admin_url( 'admin.php?page=wpforms-tools&view=importexport&wpforms_notice=forms-imported' ) );
|
298 |
+
exit;
|
299 |
+
}
|
300 |
+
}
|
301 |
+
|
302 |
+
// Export form template.
|
303 |
+
if ( 'export_template' === $_POST['action'] && ! empty( $_POST['form'] ) ) {
|
304 |
+
|
305 |
+
$args = array(
|
306 |
+
'content_only' => true,
|
307 |
+
);
|
308 |
+
$form_data = wpforms()->form->get( absint( $_POST['form'] ), $args );
|
309 |
+
|
310 |
+
if ( ! $form_data ) {
|
311 |
+
return;
|
312 |
+
}
|
313 |
+
|
314 |
+
// Define basic data.
|
315 |
+
$name = sanitize_text_field( $form_data['settings']['form_title'] );
|
316 |
+
$desc = sanitize_text_field( $form_data['settings']['form_desc'] );
|
317 |
+
$slug = sanitize_key( str_replace( ' ', '_' , $form_data['settings']['form_title'] ) );
|
318 |
+
$class = 'WPForms_Template_' . $slug;
|
319 |
+
|
320 |
+
// Format template field and settings data.
|
321 |
+
$data = $form_data;
|
322 |
+
$data['meta']['template'] = $slug;
|
323 |
+
$data['fields'] = wpforms_array_remove_empty_strings( $data['fields'] );
|
324 |
+
$data['settings'] = wpforms_array_remove_empty_strings( $data['settings'] );
|
325 |
+
|
326 |
+
unset( $data['id'] );
|
327 |
+
|
328 |
+
$data = var_export( $data, true );
|
329 |
+
$data = str_replace( ' ', "\t", $data );
|
330 |
+
$data = preg_replace( '/([\t\r\n]+?)array/', 'array', $data );
|
331 |
+
|
332 |
+
// Build the final template string.
|
333 |
+
$this->template = <<<EOT
|
334 |
+
if ( class_exists( 'WPForms_Template' ) ) :
|
335 |
+
/**
|
336 |
+
* {$name}
|
337 |
+
* Template for WPForms.
|
338 |
+
*/
|
339 |
+
class {$class} extends WPForms_Template {
|
340 |
+
|
341 |
+
/**
|
342 |
+
* Primary class constructor.
|
343 |
+
*
|
344 |
+
* @since 1.0.0
|
345 |
+
*/
|
346 |
+
public function init() {
|
347 |
+
|
348 |
+
// Template name
|
349 |
+
\$this->name = '{$name}';
|
350 |
+
|
351 |
+
// Template slug
|
352 |
+
\$this->slug = '{$slug}';
|
353 |
+
|
354 |
+
// Template description
|
355 |
+
\$this->description = '{$desc}';
|
356 |
+
|
357 |
+
// Template field and settings
|
358 |
+
\$this->data = {$data};
|
359 |
+
}
|
360 |
+
}
|
361 |
+
new {$class};
|
362 |
+
endif;
|
363 |
+
EOT;
|
364 |
+
} // End if().
|
365 |
+
}
|
366 |
+
|
367 |
+
/**
|
368 |
+
* Get system information.
|
369 |
+
*
|
370 |
+
* Based on a function from Easy Digital Downloads by Pippin Williamson.
|
371 |
+
*
|
372 |
+
* @link https://github.com/easydigitaldownloads/easy-digital-downloads/blob/master/includes/admin/tools.php#L470
|
373 |
+
* @since 1.3.9
|
374 |
+
* @return string
|
375 |
+
*/
|
376 |
+
public function get_system_info() {
|
377 |
+
|
378 |
+
global $wpdb;
|
379 |
+
|
380 |
+
// Get theme info.
|
381 |
+
$theme_data = wp_get_theme();
|
382 |
+
$theme = $theme_data->Name . ' ' . $theme_data->Version;
|
383 |
+
|
384 |
+
$return = '### Begin System Info ###' . "\n\n";
|
385 |
+
|
386 |
+
// WPForms info.
|
387 |
+
$activated = get_option( 'wpforms_activated', array() );
|
388 |
+
$return .= '-- WPForms Info' . "\n\n";
|
389 |
+
if ( ! empty( $activated['pro'] ) ) {
|
390 |
+
$date = $activated['pro'] + ( get_option( 'gmt_offset' ) * 3600 );
|
391 |
+
$return .= 'Pro: ' . date_i18n( __( 'M j, Y @ g:ia' ), $date ) . "\n";
|
392 |
+
}
|
393 |
+
if ( ! empty( $activated['lite'] ) ) {
|
394 |
+
$date = $activated['lite'] + ( get_option( 'gmt_offset' ) * 3600 );
|
395 |
+
$return .= 'Lite: ' . date_i18n( __( 'M j, Y @ g:ia' ), $date ) . "\n";
|
396 |
+
}
|
397 |
+
|
398 |
+
// Now the basics...
|
399 |
+
$return .= "\n" . '-- Site Info' . "\n\n";
|
400 |
+
$return .= 'Site URL: ' . site_url() . "\n";
|
401 |
+
$return .= 'Home URL: ' . home_url() . "\n";
|
402 |
+
$return .= 'Multisite: ' . ( is_multisite() ? 'Yes' : 'No' ) . "\n";
|
403 |
+
|
404 |
+
// WordPress configuration.
|
405 |
+
$return .= "\n" . '-- WordPress Configuration' . "\n\n";
|
406 |
+
$return .= 'Version: ' . get_bloginfo( 'version' ) . "\n";
|
407 |
+
$return .= 'Language: ' . ( defined( 'WPLANG' ) && WPLANG ? WPLANG : 'en_US' ) . "\n";
|
408 |
+
$return .= 'Permalink Structure: ' . ( get_option( 'permalink_structure' ) ? get_option( 'permalink_structure' ) : 'Default' ) . "\n";
|
409 |
+
$return .= 'Active Theme: ' . $theme . "\n";
|
410 |
+
$return .= 'Show On Front: ' . get_option( 'show_on_front' ) . "\n";
|
411 |
+
// Only show page specs if frontpage is set to 'page'.
|
412 |
+
if ( get_option( 'show_on_front' ) === 'page' ) {
|
413 |
+
$front_page_id = get_option( 'page_on_front' );
|
414 |
+
$blog_page_id = get_option( 'page_for_posts' );
|
415 |
+
$return .= 'Page On Front: ' . ( 0 != $front_page_id ? get_the_title( $front_page_id ) . ' (#' . $front_page_id . ')' : 'Unset' ) . "\n";
|
416 |
+
$return .= 'Page For Posts: ' . ( 0 != $blog_page_id ? get_the_title( $blog_page_id ) . ' (#' . $blog_page_id . ')' : 'Unset' ) . "\n";
|
417 |
+
}
|
418 |
+
$return .= 'ABSPATH: ' . ABSPATH . "\n";
|
419 |
+
$return .= 'Table Prefix: ' . 'Length: ' . strlen( $wpdb->prefix ) . ' Status: ' . ( strlen( $wpdb->prefix ) > 16 ? 'ERROR: Too long' : 'Acceptable' ) . "\n";
|
420 |
+
$return .= 'WP_DEBUG: ' . ( defined( 'WP_DEBUG' ) ? WP_DEBUG ? 'Enabled' : 'Disabled' : 'Not set' ) . "\n";
|
421 |
+
$return .= 'WPFORMS_DEBUG: ' . ( defined( 'WPFORMS_DEBUG' ) ? WPFORMS_DEBUG ? 'Enabled' : 'Disabled' : 'Not set' ) . "\n";
|
422 |
+
$return .= 'Memory Limit: ' . WP_MEMORY_LIMIT . "\n";
|
423 |
+
$return .= 'Registered Post Stati: ' . implode( ', ', get_post_stati() ) . "\n";
|
424 |
+
|
425 |
+
// @todo WPForms configuration/specific details.
|
426 |
+
$return .= "\n" . '-- WordPress Uploads/Constants' . "\n\n";
|
427 |
+
$return .= 'WP_CONTENT_DIR: ' . ( defined( 'WP_CONTENT_DIR' ) ? WP_CONTENT_DIR ? WP_CONTENT_DIR : 'Disabled' : 'Not set' ) . "\n";
|
428 |
+
$return .= 'WP_CONTENT_URL: ' . ( defined( 'WP_CONTENT_URL' ) ? WP_CONTENT_URL ? WP_CONTENT_URL : 'Disabled' : 'Not set' ) . "\n";
|
429 |
+
$return .= 'UPLOADS: ' . ( defined( 'UPLOADS' ) ? UPLOADS ? UPLOADS : 'Disabled' : 'Not set' ) . "\n";
|
430 |
+
$uploads_dir = wp_upload_dir();
|
431 |
+
$return .= 'wp_uploads_dir() path: ' . $uploads_dir['path'] . "\n";
|
432 |
+
$return .= 'wp_uploads_dir() url: ' . $uploads_dir['url'] . "\n";
|
433 |
+
$return .= 'wp_uploads_dir() basedir: ' . $uploads_dir['basedir'] . "\n";
|
434 |
+
$return .= 'wp_uploads_dir() baseurl: ' . $uploads_dir['baseurl'] . "\n";
|
435 |
+
|
436 |
+
// Get plugins that have an update.
|
437 |
+
$updates = get_plugin_updates();
|
438 |
+
|
439 |
+
// Must-use plugins.
|
440 |
+
// NOTE: MU plugins can't show updates!
|
441 |
+
$muplugins = get_mu_plugins();
|
442 |
+
if ( count( $muplugins ) > 0 && ! empty( $muplugins ) ) {
|
443 |
+
$return .= "\n" . '-- Must-Use Plugins' . "\n\n";
|
444 |
+
|
445 |
+
foreach ( $muplugins as $plugin => $plugin_data ) {
|
446 |
+
$return .= $plugin_data['Name'] . ': ' . $plugin_data['Version'] . "\n";
|
447 |
+
}
|
448 |
+
}
|
449 |
+
|
450 |
+
// WordPress active plugins.
|
451 |
+
$return .= "\n" . '-- WordPress Active Plugins' . "\n\n";
|
452 |
+
|
453 |
+
$plugins = get_plugins();
|
454 |
+
$active_plugins = get_option( 'active_plugins', array() );
|
455 |
+
|
456 |
+
foreach ( $plugins as $plugin_path => $plugin ) {
|
457 |
+
if ( ! in_array( $plugin_path, $active_plugins, true ) ) {
|
458 |
+
continue;
|
459 |
+
}
|
460 |
+
$update = ( array_key_exists( $plugin_path, $updates ) ) ? ' (needs update - ' . $updates[ $plugin_path ]->update->new_version . ')' : '';
|
461 |
+
$return .= $plugin['Name'] . ': ' . $plugin['Version'] . $update . "\n";
|
462 |
+
}
|
463 |
+
|
464 |
+
// WordPress inactive plugins.
|
465 |
+
$return .= "\n" . '-- WordPress Inactive Plugins' . "\n\n";
|
466 |
+
|
467 |
+
foreach ( $plugins as $plugin_path => $plugin ) {
|
468 |
+
if ( in_array( $plugin_path, $active_plugins ) ) {
|
469 |
+
continue;
|
470 |
+
}
|
471 |
+
$update = ( array_key_exists( $plugin_path, $updates ) ) ? ' (needs update - ' . $updates[ $plugin_path ]->update->new_version . ')' : '';
|
472 |
+
$return .= $plugin['Name'] . ': ' . $plugin['Version'] . $update . "\n";
|
473 |
+
}
|
474 |
+
|
475 |
+
if ( is_multisite() ) {
|
476 |
+
// WordPress Multisite active plugins.
|
477 |
+
$return .= "\n" . '-- Network Active Plugins' . "\n\n";
|
478 |
+
|
479 |
+
$plugins = wp_get_active_network_plugins();
|
480 |
+
$active_plugins = get_site_option( 'active_sitewide_plugins', array() );
|
481 |
+
|
482 |
+
foreach ( $plugins as $plugin_path ) {
|
483 |
+
$plugin_base = plugin_basename( $plugin_path );
|
484 |
+
if ( ! array_key_exists( $plugin_base, $active_plugins ) ) {
|
485 |
+
continue;
|
486 |
+
}
|
487 |
+
$update = ( array_key_exists( $plugin_path, $updates ) ) ? ' (needs update - ' . $updates[ $plugin_path ]->update->new_version . ')' : '';
|
488 |
+
$plugin = get_plugin_data( $plugin_path );
|
489 |
+
$return .= $plugin['Name'] . ': ' . $plugin['Version'] . $update . "\n";
|
490 |
+
}
|
491 |
+
}
|
492 |
+
|
493 |
+
// Server configuration (really just versioning).
|
494 |
+
$return .= "\n" . '-- Webserver Configuration' . "\n\n";
|
495 |
+
$return .= 'PHP Version: ' . PHP_VERSION . "\n";
|
496 |
+
$return .= 'MySQL Version: ' . $wpdb->db_version() . "\n";
|
497 |
+
$return .= 'Webserver Info: ' . $_SERVER['SERVER_SOFTWARE'] . "\n";
|
498 |
+
|
499 |
+
// PHP configs... now we're getting to the important stuff.
|
500 |
+
$return .= "\n" . '-- PHP Configuration' . "\n\n";
|
501 |
+
$return .= 'Memory Limit: ' . ini_get( 'memory_limit' ) . "\n";
|
502 |
+
$return .= 'Upload Max Size: ' . ini_get( 'upload_max_filesize' ) . "\n";
|
503 |
+
$return .= 'Post Max Size: ' . ini_get( 'post_max_size' ) . "\n";
|
504 |
+
$return .= 'Upload Max Filesize: ' . ini_get( 'upload_max_filesize' ) . "\n";
|
505 |
+
$return .= 'Time Limit: ' . ini_get( 'max_execution_time' ) . "\n";
|
506 |
+
$return .= 'Max Input Vars: ' . ini_get( 'max_input_vars' ) . "\n";
|
507 |
+
$return .= 'Display Errors: ' . ( ini_get( 'display_errors' ) ? 'On (' . ini_get( 'display_errors' ) . ')' : 'N/A' ) . "\n";
|
508 |
+
|
509 |
+
// PHP extensions and such.
|
510 |
+
$return .= "\n" . '-- PHP Extensions' . "\n\n";
|
511 |
+
$return .= 'cURL: ' . ( function_exists( 'curl_init' ) ? 'Supported' : 'Not Supported' ) . "\n";
|
512 |
+
$return .= 'fsockopen: ' . ( function_exists( 'fsockopen' ) ? 'Supported' : 'Not Supported' ) . "\n";
|
513 |
+
$return .= 'SOAP Client: ' . ( class_exists( 'SoapClient' ) ? 'Installed' : 'Not Installed' ) . "\n";
|
514 |
+
$return .= 'Suhosin: ' . ( extension_loaded( 'suhosin' ) ? 'Installed' : 'Not Installed' ) . "\n";
|
515 |
+
|
516 |
+
// Session stuff
|
517 |
+
$return .= "\n" . '-- Session Configuration' . "\n\n";
|
518 |
+
$return .= 'Session: ' . ( isset( $_SESSION ) ? 'Enabled' : 'Disabled' ) . "\n";
|
519 |
+
|
520 |
+
// The rest of this is only relevant is session is enabled.
|
521 |
+
if ( isset( $_SESSION ) ) {
|
522 |
+
$return .= 'Session Name: ' . esc_html( ini_get( 'session.name' ) ) . "\n";
|
523 |
+
$return .= 'Cookie Path: ' . esc_html( ini_get( 'session.cookie_path' ) ) . "\n";
|
524 |
+
$return .= 'Save Path: ' . esc_html( ini_get( 'session.save_path' ) ) . "\n";
|
525 |
+
$return .= 'Use Cookies: ' . ( ini_get( 'session.use_cookies' ) ? 'On' : 'Off' ) . "\n";
|
526 |
+
$return .= 'Use Only Cookies: ' . ( ini_get( 'session.use_only_cookies' ) ? 'On' : 'Off' ) . "\n";
|
527 |
+
}
|
528 |
+
|
529 |
+
$return .= "\n" . '### End System Info ###';
|
530 |
+
|
531 |
+
return $return;
|
532 |
+
}
|
533 |
+
}
|
534 |
+
new WPForms_Tools;
|
includes/admin/class-welcome.php
CHANGED
@@ -19,10 +19,9 @@ class WPForms_Welcome {
|
|
19 |
*/
|
20 |
public function __construct() {
|
21 |
|
22 |
-
add_action( 'admin_menu',
|
23 |
-
add_action( 'admin_head',
|
24 |
-
add_action( 'admin_init',
|
25 |
-
add_action( 'admin_enqueue_scripts', array( $this, 'welcome_enqueues' ) );
|
26 |
}
|
27 |
|
28 |
/**
|
@@ -33,27 +32,16 @@ class WPForms_Welcome {
|
|
33 |
*
|
34 |
* @since 1.0.0
|
35 |
*/
|
36 |
-
public function
|
37 |
|
38 |
-
// Getting started - shows after installation
|
39 |
add_dashboard_page(
|
40 |
-
__( '
|
41 |
-
__( '
|
42 |
apply_filters( 'wpforms_welcome_cap', 'manage_options' ),
|
43 |
'wpforms-getting-started',
|
44 |
-
array( $this, '
|
45 |
);
|
46 |
-
|
47 |
-
// What's New - shows after upgrade
|
48 |
-
/*
|
49 |
-
add_dashboard_page(
|
50 |
-
__( 'What is new in WPForms', 'wpforms' ),
|
51 |
-
__( 'What is new in WPForms', 'wpforms' ),
|
52 |
-
apply_filters( 'wpforms_welcome_cap', 'manage_options' ),
|
53 |
-
'wpforms-whats-new',
|
54 |
-
array( $this, 'welcome_whats_new' )
|
55 |
-
);
|
56 |
-
*/
|
57 |
}
|
58 |
|
59 |
/**
|
@@ -63,103 +51,9 @@ class WPForms_Welcome {
|
|
63 |
*
|
64 |
* @since 1.0.0
|
65 |
*/
|
66 |
-
public function
|
67 |
|
68 |
remove_submenu_page( 'index.php', 'wpforms-getting-started' );
|
69 |
-
//remove_submenu_page( 'index.php', 'wpforms-whats-new' );
|
70 |
-
}
|
71 |
-
|
72 |
-
/**
|
73 |
-
* Welcome screen header area.
|
74 |
-
*
|
75 |
-
* Consists of the plugin title, desciption, badge, and navigation tabs.
|
76 |
-
*
|
77 |
-
* @since 1.0.0
|
78 |
-
*/
|
79 |
-
public function welcome_head() {
|
80 |
-
|
81 |
-
$selected = isset( $_GET['page'] ) ? $_GET['page'] : 'wpforms-getting-started';
|
82 |
-
?>
|
83 |
-
<h1><?php _e( 'Welcome to WPForms', 'wpforms' ); ?></h1>
|
84 |
-
<div class="about-text">
|
85 |
-
<?php _e( 'Thank you for choosing WPForms - the most beginner friendly WordPress contact form plugin. Here\'s how to get started.', 'wpforms' ); ?>
|
86 |
-
</div>
|
87 |
-
<div class="wpforms-badge">
|
88 |
-
<img src="<?php echo WPFORMS_PLUGIN_URL; ?>assets/images/sullie.png" alt="Sullie WPForms mascot">
|
89 |
-
<span class="version">Version <?php echo WPFORMS_VERSION; ?></span>
|
90 |
-
</div>
|
91 |
-
<h2 class="nav-tab-wrapper">
|
92 |
-
<a class="nav-tab <?php echo $selected == 'wpforms-getting-started' ? 'nav-tab-active' : ''; ?>" href="<?php echo esc_url( admin_url( add_query_arg( array( 'page' => 'wpforms-getting-started' ), 'index.php' ) ) ); ?>">
|
93 |
-
<?php _e( 'Getting Started', 'wpforms' ); ?>
|
94 |
-
</a>
|
95 |
-
<!--<a class="nav-tab <?php echo $selected == 'wpforms-whats-new' ? 'nav-tab-active' : ''; ?>" href="<?php echo esc_url( admin_url( add_query_arg( array( 'page' => 'wpforms-whats-new' ), 'index.php' ) ) ); ?>">
|
96 |
-
<?php _e( "What's New", 'wpforms' ); ?>
|
97 |
-
</a> -->
|
98 |
-
</h2>
|
99 |
-
<?php
|
100 |
-
}
|
101 |
-
|
102 |
-
/**
|
103 |
-
* Getting Started screen. Shows after first install.
|
104 |
-
*
|
105 |
-
* @since 1.0.0
|
106 |
-
*/
|
107 |
-
public function welcome_getting_started() {
|
108 |
-
|
109 |
-
?>
|
110 |
-
<div class="wrap about-wrap">
|
111 |
-
|
112 |
-
<?php $this->welcome_head(); ?>
|
113 |
-
|
114 |
-
<p class="about-description">
|
115 |
-
<?php _e( 'Use the tips below to get started using WPForms. You will be up and running in no time.', 'wpforms' ); ?>
|
116 |
-
</p>
|
117 |
-
|
118 |
-
<div class="feature-section two-col">
|
119 |
-
<div class="col">
|
120 |
-
<h3><?php _e( 'Creating Your First Form' , 'wpforms' ); ?></h3>
|
121 |
-
<p><?php printf( __( 'WPForms makes it easy to create forms in WordPress. You can follow the video tutorial on the right or read our how to <a href="%s" target="_blank" rel="noopener">create your first form guide</a>.', 'wpforms' ), ' https://wpforms.com/docs/creating-first-form/ ' ); ?>
|
122 |
-
<p><?php printf( __( 'But in reality, the process is so intuitive that you can just start by going to <a href="%s">WPForms - > Add New</a>.', 'wpforms' ), admin_url( 'admin.php?page=wpforms-builder' ) ); ?>
|
123 |
-
</div>
|
124 |
-
<div class="col">
|
125 |
-
<div class="feature-video">
|
126 |
-
<iframe width="495" height="278" src="https://www.youtube-nocookie.com/embed/yDyvSGV7tP4?rel=0&showinfo=0" frameborder="0" allowfullscreen></iframe>
|
127 |
-
</div>
|
128 |
-
</div>
|
129 |
-
</div>
|
130 |
-
|
131 |
-
<div class="feature-section two-col">
|
132 |
-
<div class="col">
|
133 |
-
<h3><?php _e( 'See all WPForms Features', 'wpforms' ); ?></h3>
|
134 |
-
<p><?php _e( 'WPForms is both easy to use and extremely powerful. We have tons of helpful features that allows us to give you everything you need from a form builder.', 'wpforms' ); ?></p>
|
135 |
-
<p><a href="https://wpforms.com/features/" target="_blank" rel="noopener" class="wpforms-features-button button button-primary"><?php _e( 'See all Features', 'wpforms' ); ?></a></p>
|
136 |
-
</div>
|
137 |
-
<div class="col">
|
138 |
-
<img src="<?php echo WPFORMS_PLUGIN_URL; ?>assets/images/welcome-features.png">
|
139 |
-
</div>
|
140 |
-
</div>
|
141 |
-
|
142 |
-
</div>
|
143 |
-
<script type="text/javascript">
|
144 |
-
jQuery(function($){
|
145 |
-
$('.feature-video').fitVids();
|
146 |
-
});
|
147 |
-
</script>
|
148 |
-
<?php
|
149 |
-
}
|
150 |
-
|
151 |
-
/**
|
152 |
-
* What's New screen. Shows after updates.
|
153 |
-
*
|
154 |
-
* @since 1.0.0
|
155 |
-
*/
|
156 |
-
public function welcome_whats_new() {
|
157 |
-
|
158 |
-
?>
|
159 |
-
<div class="wrap about-wrap">
|
160 |
-
<?php $this->welcome_head(); ?>
|
161 |
-
</div>
|
162 |
-
<?php
|
163 |
}
|
164 |
|
165 |
/**
|
@@ -170,60 +64,236 @@ class WPForms_Welcome {
|
|
170 |
*
|
171 |
* @since 1.0.0
|
172 |
*/
|
173 |
-
public function
|
174 |
|
175 |
-
// Check if we should consider redirection
|
176 |
-
if ( !get_transient( 'wpforms_activation_redirect' ) ) {
|
177 |
return;
|
178 |
}
|
179 |
|
180 |
-
// If we are redirecting, clear the transient so it only happens once
|
181 |
delete_transient( 'wpforms_activation_redirect' );
|
182 |
|
183 |
-
// Check option to disable welcome redirect
|
184 |
if ( get_option( 'wpforms_activation_redirect', false ) ) {
|
185 |
return;
|
186 |
}
|
187 |
|
188 |
-
// Only do this for single site installs
|
189 |
if ( is_network_admin() || isset( $_GET['activate-multi'] ) ) {
|
190 |
return;
|
191 |
}
|
192 |
|
193 |
-
// Check if this is an update or first install
|
194 |
$upgrade = get_option( 'wpforms_version_upgraded_from' );
|
195 |
|
196 |
if ( ! $upgrade ) {
|
197 |
-
// Initial install
|
198 |
wp_safe_redirect( admin_url( 'index.php?page=wpforms-getting-started' ) );
|
199 |
exit;
|
200 |
}
|
201 |
}
|
202 |
|
203 |
/**
|
204 |
-
*
|
205 |
*
|
206 |
* @since 1.0.0
|
207 |
*/
|
208 |
-
public function
|
209 |
|
210 |
-
|
211 |
-
|
|
|
212 |
|
213 |
-
|
214 |
-
'wpforms-welcome',
|
215 |
-
WPFORMS_PLUGIN_URL . 'assets/css/admin-welcome.css',
|
216 |
-
null,
|
217 |
-
WPFORMS_VERSION
|
218 |
-
);
|
219 |
|
220 |
-
|
221 |
-
|
222 |
-
|
223 |
-
|
224 |
-
|
225 |
-
|
226 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
227 |
}
|
228 |
}
|
229 |
new WPForms_Welcome;
|
19 |
*/
|
20 |
public function __construct() {
|
21 |
|
22 |
+
add_action( 'admin_menu', array( $this, 'register' ) );
|
23 |
+
add_action( 'admin_head', array( $this, 'hide_menu' ) );
|
24 |
+
add_action( 'admin_init', array( $this, 'redirect' ), 9999 );
|
|
|
25 |
}
|
26 |
|
27 |
/**
|
32 |
*
|
33 |
* @since 1.0.0
|
34 |
*/
|
35 |
+
public function register() {
|
36 |
|
37 |
+
// Getting started - shows after installation.
|
38 |
add_dashboard_page(
|
39 |
+
__( 'Welcome to WPForms', 'wpforms' ),
|
40 |
+
__( 'Welcome to WPForms', 'wpforms' ),
|
41 |
apply_filters( 'wpforms_welcome_cap', 'manage_options' ),
|
42 |
'wpforms-getting-started',
|
43 |
+
array( $this, 'output' )
|
44 |
);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
45 |
}
|
46 |
|
47 |
/**
|
51 |
*
|
52 |
* @since 1.0.0
|
53 |
*/
|
54 |
+
public function hide_menu() {
|
55 |
|
56 |
remove_submenu_page( 'index.php', 'wpforms-getting-started' );
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
57 |
}
|
58 |
|
59 |
/**
|
64 |
*
|
65 |
* @since 1.0.0
|
66 |
*/
|
67 |
+
public function redirect() {
|
68 |
|
69 |
+
// Check if we should consider redirection.
|
70 |
+
if ( ! get_transient( 'wpforms_activation_redirect' ) ) {
|
71 |
return;
|
72 |
}
|
73 |
|
74 |
+
// If we are redirecting, clear the transient so it only happens once.
|
75 |
delete_transient( 'wpforms_activation_redirect' );
|
76 |
|
77 |
+
// Check option to disable welcome redirect.
|
78 |
if ( get_option( 'wpforms_activation_redirect', false ) ) {
|
79 |
return;
|
80 |
}
|
81 |
|
82 |
+
// Only do this for single site installs.
|
83 |
if ( is_network_admin() || isset( $_GET['activate-multi'] ) ) {
|
84 |
return;
|
85 |
}
|
86 |
|
87 |
+
// Check if this is an update or first install.
|
88 |
$upgrade = get_option( 'wpforms_version_upgraded_from' );
|
89 |
|
90 |
if ( ! $upgrade ) {
|
91 |
+
// Initial install.
|
92 |
wp_safe_redirect( admin_url( 'index.php?page=wpforms-getting-started' ) );
|
93 |
exit;
|
94 |
}
|
95 |
}
|
96 |
|
97 |
/**
|
98 |
+
* Getting Started screen. Shows after first install.
|
99 |
*
|
100 |
* @since 1.0.0
|
101 |
*/
|
102 |
+
public function output() {
|
103 |
|
104 |
+
$class = wpforms()->pro ? 'pro' : 'lite';
|
105 |
+
?>
|
106 |
+
<div id="wpforms-welcome" class="<?php echo $class; ?>">
|
107 |
|
108 |
+
<div class="container">
|
|
|
|
|
|
|
|
|
|
|
109 |
|
110 |
+
<div class="intro">
|
111 |
+
|
112 |
+
<div class="sullie">
|
113 |
+
<img src="<?php echo WPFORMS_PLUGIN_URL; ?>assets/images/sullie.png" alt="<?php esc_attr_e( 'Sullie the WPForms mascot' , 'wpforms' ); ?>">
|
114 |
+
</div>
|
115 |
+
|
116 |
+
<div class="block">
|
117 |
+
<h1><?php _e( 'Welcome to WPForms', 'wpforms' ); ?></h1>
|
118 |
+
<h6><?php _e( 'Thank you for choosing WPForms - the most powerful drag & drop WordPress form builder in the market.', 'wpforms' ); ?></h6>
|
119 |
+
</div>
|
120 |
+
|
121 |
+
<a href="#" class="play-video" title="<?php esc_attr_e( 'Watch how to create you first form', 'wpforms' ); ?>">
|
122 |
+
<img src="<?php echo WPFORMS_PLUGIN_URL; ?>assets/images/welcome-video.png" alt="<?php esc_attr_e( 'Watch how to create your first form', 'wpforms' ); ?>" class="video-thumbnail">
|
123 |
+
</a>
|
124 |
+
|
125 |
+
<div class="block">
|
126 |
+
|
127 |
+
<h6><?php _e( 'WPForms makes it easy to create forms in WordPress. You can watch the video tutorial or read our guide on how create your first form.', 'wpforms' ); ?></h6>
|
128 |
+
|
129 |
+
<div class="button-wrap wpforms-clear">
|
130 |
+
<div class="left">
|
131 |
+
<a href="<?php echo admin_url( 'admin.php?page=wpforms-builder' ); ?>" class="wpforms-btn wpforms-btn-block wpforms-btn-lg wpforms-btn-orange"><?php _e( 'Create Your First Form', 'wpforms' ); ?></a>
|
132 |
+
</div>
|
133 |
+
<div class="right">
|
134 |
+
<a href="https://wpforms.com/docs/creating-first-form/?utm_source=WordPress&utm_medium=link&utm_campaign=liteplugin" class="wpforms-btn wpforms-btn-block wpforms-btn-lg wpforms-btn-grey" target="_blank" rel="noopener noreferrer"><?php _e( 'Read the Full Guide', 'wpforms' ); ?></a>
|
135 |
+
</div>
|
136 |
+
</div>
|
137 |
+
|
138 |
+
</div>
|
139 |
+
|
140 |
+
</div><!-- /.intro -->
|
141 |
+
|
142 |
+
<div class="features">
|
143 |
+
|
144 |
+
<div class="block">
|
145 |
+
|
146 |
+
<h1><?php _e( 'Welcome Features & Addons', 'wpforms' ); ?></h1>
|
147 |
+
<h6><?php _e( 'WPForms is both easy to use and extremely powerful. We have tons of helpful features that allow us to give you everything you need from a form builder.', 'wpforms' ); ?></h6>
|
148 |
+
|
149 |
+
<div class="feature-list wpforms-clear">
|
150 |
+
|
151 |
+
<div class="feature-block first">
|
152 |
+
<img src="<?php echo WPFORMS_PLUGIN_URL; ?>assets/images/welcome-feature-icon-1.png">
|
153 |
+
<h5><?php _e( 'Drag & Drop Form Builder', 'wpforms' ); ?></h5>
|
154 |
+
<p><?php _e( 'Easily create an amazing form in just a few minutes without writing any code.', 'wpforms' ); ?></p>
|
155 |
+
</div>
|
156 |
+
|
157 |
+
<div class="feature-block last">
|
158 |
+
<img src="<?php echo WPFORMS_PLUGIN_URL; ?>assets/images/welcome-feature-icon-2.png">
|
159 |
+
<h5><?php _e( 'Form Templates', 'wpforms' ); ?></h5>
|
160 |
+
<p><?php _e( 'Start with pre-built form templates to save even more time.', 'wpforms' ); ?></p>
|
161 |
+
</div>
|
162 |
+
|
163 |
+
<div class="feature-block first">
|
164 |
+
<img src="<?php echo WPFORMS_PLUGIN_URL; ?>assets/images/welcome-feature-icon-3.png">
|
165 |
+
<h5><?php _e( 'Responsive Mobile Friendly', 'wpforms' ); ?></h5>
|
166 |
+
<p><?php _e( 'WPForms is 100% responsive meaning it works on mobile, tablets & desktop.', 'wpforms' ); ?></p>
|
167 |
+
</div>
|
168 |
+
|
169 |
+
<div class="feature-block last">
|
170 |
+
<img src="<?php echo WPFORMS_PLUGIN_URL; ?>assets/images/welcome-feature-icon-4.png">
|
171 |
+
<h5><?php _e( 'Smart Conditional Logic', 'wpforms' ); ?></h5>
|
172 |
+
<p><?php _e( 'Easily create high performance forms with our smart conditional logic.', 'wpforms' ); ?></p>
|
173 |
+
</div>
|
174 |
+
|
175 |
+
<div class="feature-block first">
|
176 |
+
<img src="<?php echo WPFORMS_PLUGIN_URL; ?>assets/images/welcome-feature-icon-5.png">
|
177 |
+
<h5><?php _e( 'Instant Notifications', 'wpforms' ); ?></h5>
|
178 |
+
<p><?php _e( 'Respond to leads quickly with our instant form notification feature for your team.', 'wpforms' ); ?></p>
|
179 |
+
</div>
|
180 |
+
|
181 |
+
<div class="feature-block last">
|
182 |
+
<img src="<?php echo WPFORMS_PLUGIN_URL; ?>assets/images/welcome-feature-icon-6.png">
|
183 |
+
<h5><?php _e( 'Entry Management', 'wpforms' ); ?></h5>
|
184 |
+
<p><?php _e( 'View all your leads in one place to streamline your workflow.', 'wpforms' ); ?></p>
|
185 |
+
</div>
|
186 |
+
|
187 |
+
<div class="feature-block first">
|
188 |
+
<img src="<?php echo WPFORMS_PLUGIN_URL; ?>assets/images/welcome-feature-icon-7.png">
|
189 |
+
<h5><?php _e( 'Payments Made Easy', 'wpforms' ); ?></h5>
|
190 |
+
<p><?php _e( 'Easily collect payments, donations, and online orders without hiring a developer.', 'wpforms' ); ?></p>
|
191 |
+
</div>
|
192 |
+
|
193 |
+
<div class="feature-block last">
|
194 |
+
<img src="<?php echo WPFORMS_PLUGIN_URL; ?>assets/images/welcome-feature-icon-8.png">
|
195 |
+
<h5><?php _e( 'Marketing & Subscriptions', 'wpforms' ); ?></h5>
|
196 |
+
<p><?php _e( 'Create subscription forms and connect with your email marketing service.', 'wpforms' ); ?></p>
|
197 |
+
</div>
|
198 |
+
|
199 |
+
<div class="feature-block first">
|
200 |
+
<img src="<?php echo WPFORMS_PLUGIN_URL; ?>assets/images/welcome-feature-icon-9.png">
|
201 |
+
<h5><?php _e( 'Easy to Embed', 'wpforms' ); ?></h5>
|
202 |
+
<p><?php _e( 'Easily embed your forms in blog posts, pages, sidebar widgets, footer, etc.', 'wpforms' ); ?></p>
|
203 |
+
</div>
|
204 |
+
|
205 |
+
<div class="feature-block last">
|
206 |
+
<img src="<?php echo WPFORMS_PLUGIN_URL; ?>assets/images/welcome-feature-icon-10.png">
|
207 |
+
<h5><?php _e( 'Spam Protection', 'wpforms' ); ?></h5>
|
208 |
+
<p><?php _e( 'Our smart captcha and honeypot automatically prevent spam submissions.', 'wpforms' ); ?></p>
|
209 |
+
</div>
|
210 |
+
|
211 |
+
</div>
|
212 |
+
|
213 |
+
<div class="button-wrap">
|
214 |
+
<a href="https://wpforms.com/features/?utm_source=WordPress&utm_medium=link&utm_campaign=liteplugin" class="wpforms-btn wpforms-btn-lg wpforms-btn-grey" rel="noopener noreferrer" target="_blank"><?php _e( 'See All Features', 'wpforms' ); ?></a>
|
215 |
+
</div>
|
216 |
+
|
217 |
+
</div>
|
218 |
+
|
219 |
+
</div><!-- /.features -->
|
220 |
+
|
221 |
+
<div class="upgrade">
|
222 |
+
|
223 |
+
<div class="block wpforms-clear">
|
224 |
+
|
225 |
+
<div class="left">
|
226 |
+
<h2><?php _e( 'Upgrade to PRO', 'wpforms' ); ?></h2>
|
227 |
+
<ul>
|
228 |
+
<li><span class="dashicons dashicons-yes"></span> <?php _e( 'PayPal', 'wpforms' ); ?></li>
|
229 |
+
<li><span class="dashicons dashicons-yes"></span> <?php _e( 'Post Submissions', 'wpforms' ); ?></li>
|
230 |
+
<li><span class="dashicons dashicons-yes"></span> <?php _e( 'Stripe', 'wpforms' ); ?></li>
|
231 |
+
<li><span class="dashicons dashicons-yes"></span> <?php _e( 'Signatures', 'wpforms' ); ?></li>
|
232 |
+
<li><span class="dashicons dashicons-yes"></span> <?php _e( 'User Registration', 'wpforms' ); ?></li>
|
233 |
+
<li><span class="dashicons dashicons-yes"></span> <?php _e( 'Form Abandonment', 'wpforms' ); ?></li>
|
234 |
+
<li><span class="dashicons dashicons-yes"></span> <?php _e( 'Geolocation', 'wpforms' ); ?></li>
|
235 |
+
<li><span class="dashicons dashicons-yes"></span> <?php _e( 'Unlimited Sites', 'wpforms' ); ?></li>
|
236 |
+
<li><span class="dashicons dashicons-yes"></span> <?php _e( 'Zapier', 'wpforms' ); ?></li>
|
237 |
+
<li><span class="dashicons dashicons-yes"></span> <?php _e( 'Priority Support', 'wpforms' ); ?></li>
|
238 |
+
</ul>
|
239 |
+
</div>
|
240 |
+
|
241 |
+
<div class="right">
|
242 |
+
<h2><span><?php _e( 'PRO', 'wpforms' ); ?></span></h2>
|
243 |
+
<div class="price">
|
244 |
+
<span class="amount">199</span><br>
|
245 |
+
<span class="term"><?php _e( 'per year', 'wpforms' ); ?></span>
|
246 |
+
</div>
|
247 |
+
<a href="<?php echo wpforms_admin_upgrade_link(); ?>" class="wpforms-btn wpforms-btn-block wpforms-btn-lg wpforms-btn-orange" rel="noopener noreferrer" target="_blank"><?php _e( 'Upgrade Now', 'wpforms' ); ?></a>
|
248 |
+
</div>
|
249 |
+
|
250 |
+
</div>
|
251 |
+
|
252 |
+
</div>
|
253 |
+
|
254 |
+
<div class="testimonials">
|
255 |
+
|
256 |
+
<div class="block">
|
257 |
+
|
258 |
+
<h1><?php _e( 'Testimonials', 'wpforms' ); ?></h1>
|
259 |
+
|
260 |
+
<div class="testimonial-block wpforms-clear">
|
261 |
+
<img src="<?php echo WPFORMS_PLUGIN_URL; ?>assets/images/welcome-testimonial-bill.jpg">
|
262 |
+
<p><?php _e( 'WPForms is by far the easiest form plugin to use. My clients love it – it’s one of the few plugins they can use without any training. As a developer I appreciate how fast, modern, clean and extensible it is.', 'wpforms' ); ?><p>
|
263 |
+
<p><strong>Bill Erickson</strong>, Erickson Web Consulting</p>
|
264 |
+
</div>
|
265 |
+
|
266 |
+
<div class="testimonial-block wpforms-clear">
|
267 |
+
<img src="<?php echo WPFORMS_PLUGIN_URL; ?>assets/images/welcome-testimonial-david.jpg">
|
268 |
+
<p><?php _e( 'As a business owner, time is my most valuable asset. WPForms allow me to create smart online forms with just a few clicks. With their pre-built form templates and the drag & drop builder, I can create a new form that works in less than 2 minutes without writing a single line of code. Well worth the investment.', 'wpforms' ); ?><p>
|
269 |
+
<p><strong>David Henzel</strong>, MaxCDN</p>
|
270 |
+
</div>
|
271 |
+
|
272 |
+
</div>
|
273 |
+
|
274 |
+
</div><!-- /.testimonials -->
|
275 |
+
|
276 |
+
<div class="footer">
|
277 |
+
|
278 |
+
<div class="block wpforms-clear">
|
279 |
+
|
280 |
+
<div class="button-wrap wpforms-clear">
|
281 |
+
<div class="left">
|
282 |
+
<a href="<?php echo admin_url( 'admin.php?page=wpforms-builder' ); ?>" class="wpforms-btn wpforms-btn-block wpforms-btn-lg wpforms-btn-orange"><?php _e( 'Create Your First Form', 'wpforms' ); ?></a>
|
283 |
+
</div>
|
284 |
+
<div class="right">
|
285 |
+
<a href="<?php echo wpforms_admin_upgrade_link(); ?>" class="wpforms-btn wpforms-btn-block wpforms-btn-lg wpforms-btn-trans-green" rel="noopener noreferrer" target="_blank"><span class="underline"><?php _e( 'Upgrade to WPForms Pro', 'wpforms' ); ?> <span class="dashicons dashicons-arrow-right"></span></span></a>
|
286 |
+
</div>
|
287 |
+
</div>
|
288 |
+
|
289 |
+
</div>
|
290 |
+
|
291 |
+
</div><!-- /.footer -->
|
292 |
+
|
293 |
+
</div><!-- /.container -->
|
294 |
+
|
295 |
+
</div><!-- /#wpforms-welcome -->
|
296 |
+
<?php
|
297 |
}
|
298 |
}
|
299 |
new WPForms_Welcome;
|
includes/admin/overview/class-overview-table.php
CHANGED
@@ -220,9 +220,9 @@ class WPForms_Overview_Table extends WP_List_Table {
|
|
220 |
foreach ( $ids as $id ) {
|
221 |
wpforms()->form->delete( $id );
|
222 |
}
|
223 |
-
printf( '<div class="updated"><p>%s</p></div>', _n( 'Form successfully deleted.', 'Forms successfully deleted', count( $ids ), 'wpforms' ) );
|
224 |
} else {
|
225 |
-
printf( '<div class="error"><p>%s</p></div>', __( 'Security check failed', 'wpforms' ) );
|
226 |
}
|
227 |
}
|
228 |
|
@@ -233,9 +233,9 @@ class WPForms_Overview_Table extends WP_List_Table {
|
|
233 |
foreach ( $ids as $id ) {
|
234 |
$duplicate = wpforms()->form->duplicate( $id );
|
235 |
}
|
236 |
-
printf( '<div class="updated"><p>%s</p></div>', _n( 'Form successfully duplicated.', 'Forms successfully duplicated', count( $ids ), 'wpforms' ) );
|
237 |
} else {
|
238 |
-
printf( '<div class="error"><p>%s</p></div>', __( 'Security check failed', 'wpforms' ) );
|
239 |
}
|
240 |
}
|
241 |
}
|
@@ -303,4 +303,4 @@ class WPForms_Overview_Table extends WP_List_Table {
|
|
303 |
);
|
304 |
}
|
305 |
|
306 |
-
}
|
220 |
foreach ( $ids as $id ) {
|
221 |
wpforms()->form->delete( $id );
|
222 |
}
|
223 |
+
printf( '<div class="notice updated"><p>%s</p></div>', _n( 'Form successfully deleted.', 'Forms successfully deleted', count( $ids ), 'wpforms' ) );
|
224 |
} else {
|
225 |
+
printf( '<div class="notice error"><p>%s</p></div>', __( 'Security check failed', 'wpforms' ) );
|
226 |
}
|
227 |
}
|
228 |
|
233 |
foreach ( $ids as $id ) {
|
234 |
$duplicate = wpforms()->form->duplicate( $id );
|
235 |
}
|
236 |
+
printf( '<div class="notice updated"><p>%s</p></div>', _n( 'Form successfully duplicated.', 'Forms successfully duplicated', count( $ids ), 'wpforms' ) );
|
237 |
} else {
|
238 |
+
printf( '<div class="notice error"><p>%s</p></div>', __( 'Security check failed', 'wpforms' ) );
|
239 |
}
|
240 |
}
|
241 |
}
|
303 |
);
|
304 |
}
|
305 |
|
306 |
+
}
|
includes/admin/overview/class-overview.php
CHANGED
@@ -7,7 +7,7 @@
|
|
7 |
* @since 1.0.0
|
8 |
* @license GPL-2.0+
|
9 |
* @copyright Copyright (c) 2016, WPForms LLC
|
10 |
-
*/
|
11 |
class WPForms_Overview {
|
12 |
|
13 |
/**
|
@@ -17,10 +17,10 @@ class WPForms_Overview {
|
|
17 |
*/
|
18 |
public function __construct() {
|
19 |
|
20 |
-
// Maybe load overview page
|
21 |
add_action( 'admin_init', array( $this, 'init' ) );
|
22 |
|
23 |
-
// Setup screen options
|
24 |
add_action( 'load-toplevel_page_wpforms-overview', array( $this, 'screen_options' ) );
|
25 |
add_filter( 'set-screen-option', array( $this, 'screen_options_set' ), 10, 3 );
|
26 |
}
|
@@ -31,28 +31,28 @@ class WPForms_Overview {
|
|
31 |
* @since 1.0.0
|
32 |
*/
|
33 |
public function init() {
|
34 |
-
|
35 |
-
// Check what page we are on
|
36 |
$page = isset( $_GET['page'] ) ? $_GET['page'] : '';
|
37 |
|
38 |
-
// Only load if we are actually on the overview page
|
39 |
-
if (
|
40 |
|
41 |
-
// The overview page leverages WP_List_Table so we must load it
|
42 |
if ( ! class_exists( 'WP_List_Table' ) ) {
|
43 |
require_once ABSPATH . 'wp-admin/includes/class-wp-list-table.php';
|
44 |
}
|
45 |
|
46 |
-
// Load the class that builds the overview table
|
47 |
require_once WPFORMS_PLUGIN_DIR . 'includes/admin/overview/class-overview-table.php';
|
48 |
|
49 |
-
// Preview page check
|
50 |
wpforms()->preview->form_preview_check();
|
51 |
|
52 |
add_action( 'admin_enqueue_scripts', array( $this, 'enqueues' ) );
|
53 |
add_action( 'wpforms_admin_page', array( $this, 'output' ) );
|
54 |
|
55 |
-
// Provide hook for add-ons
|
56 |
do_action( 'wpforms_overview_init' );
|
57 |
}
|
58 |
}
|
@@ -66,7 +66,7 @@ class WPForms_Overview {
|
|
66 |
|
67 |
$screen = get_current_screen();
|
68 |
|
69 |
-
if (
|
70 |
return;
|
71 |
}
|
72 |
|
@@ -105,31 +105,7 @@ class WPForms_Overview {
|
|
105 |
*/
|
106 |
public function enqueues() {
|
107 |
|
108 |
-
|
109 |
-
'wpforms-overview',
|
110 |
-
WPFORMS_PLUGIN_URL . 'assets/css/admin-overview.css',
|
111 |
-
null,
|
112 |
-
WPFORMS_VERSION
|
113 |
-
);
|
114 |
-
|
115 |
-
wp_enqueue_script(
|
116 |
-
'wpforms-overview',
|
117 |
-
WPFORMS_PLUGIN_URL . 'assets/js/admin-overview.js',
|
118 |
-
array( 'jquery' ),
|
119 |
-
WPFORMS_VERSION,
|
120 |
-
false
|
121 |
-
);
|
122 |
-
|
123 |
-
wp_localize_script(
|
124 |
-
'wpforms-overview',
|
125 |
-
'wpforms_overview',
|
126 |
-
array(
|
127 |
-
'delete_confirm' => __( 'Are you sure you want to delete this form?', 'wpforms' ),
|
128 |
-
'duplicate_confirm' => __( 'Are you sure you want to duplicate this form?', 'wpforms' ),
|
129 |
-
)
|
130 |
-
);
|
131 |
-
|
132 |
-
// Hook for add-ons
|
133 |
do_action( 'wpforms_overview_enqueue' );
|
134 |
}
|
135 |
|
@@ -141,31 +117,35 @@ class WPForms_Overview {
|
|
141 |
public function output() {
|
142 |
|
143 |
?>
|
144 |
-
<div id="wpforms-overview" class="wrap">
|
145 |
|
146 |
<h1 class="page-title">
|
147 |
<?php _e( 'Forms Overview', 'wpforms' ); ?>
|
148 |
-
<a href="<?php echo admin_url( 'admin.php?page=wpforms-builder&view=setup' ); ?>" class="add-new-h2"><?php _e( 'Add New', 'wpforms' ); ?></a>
|
149 |
</h1>
|
150 |
|
151 |
<?php
|
152 |
-
$overview_table = new WPForms_Overview_Table;
|
153 |
$overview_table->prepare_items();
|
154 |
?>
|
155 |
-
|
156 |
-
<
|
157 |
-
|
158 |
-
<
|
159 |
-
|
160 |
-
|
161 |
-
|
162 |
-
|
163 |
-
|
164 |
-
|
165 |
-
|
|
|
|
|
|
|
|
|
166 |
|
167 |
</div>
|
168 |
<?php
|
169 |
}
|
170 |
}
|
171 |
-
new WPForms_Overview;
|
7 |
* @since 1.0.0
|
8 |
* @license GPL-2.0+
|
9 |
* @copyright Copyright (c) 2016, WPForms LLC
|
10 |
+
*/
|
11 |
class WPForms_Overview {
|
12 |
|
13 |
/**
|
17 |
*/
|
18 |
public function __construct() {
|
19 |
|
20 |
+
// Maybe load overview page.
|
21 |
add_action( 'admin_init', array( $this, 'init' ) );
|
22 |
|
23 |
+
// Setup screen options.
|
24 |
add_action( 'load-toplevel_page_wpforms-overview', array( $this, 'screen_options' ) );
|
25 |
add_filter( 'set-screen-option', array( $this, 'screen_options_set' ), 10, 3 );
|
26 |
}
|
31 |
* @since 1.0.0
|
32 |
*/
|
33 |
public function init() {
|
34 |
+
|
35 |
+
// Check what page we are on.
|
36 |
$page = isset( $_GET['page'] ) ? $_GET['page'] : '';
|
37 |
|
38 |
+
// Only load if we are actually on the overview page.
|
39 |
+
if ( 'wpforms-overview' === $page ) {
|
40 |
|
41 |
+
// The overview page leverages WP_List_Table so we must load it.
|
42 |
if ( ! class_exists( 'WP_List_Table' ) ) {
|
43 |
require_once ABSPATH . 'wp-admin/includes/class-wp-list-table.php';
|
44 |
}
|
45 |
|
46 |
+
// Load the class that builds the overview table.
|
47 |
require_once WPFORMS_PLUGIN_DIR . 'includes/admin/overview/class-overview-table.php';
|
48 |
|
49 |
+
// Preview page check.
|
50 |
wpforms()->preview->form_preview_check();
|
51 |
|
52 |
add_action( 'admin_enqueue_scripts', array( $this, 'enqueues' ) );
|
53 |
add_action( 'wpforms_admin_page', array( $this, 'output' ) );
|
54 |
|
55 |
+
// Provide hook for add-ons.
|
56 |
do_action( 'wpforms_overview_init' );
|
57 |
}
|
58 |
}
|
66 |
|
67 |
$screen = get_current_screen();
|
68 |
|
69 |
+
if ( 'toplevel_page_wpforms-overview' !== $screen->id ) {
|
70 |
return;
|
71 |
}
|
72 |
|
105 |
*/
|
106 |
public function enqueues() {
|
107 |
|
108 |
+
// Hook for add-ons.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
109 |
do_action( 'wpforms_overview_enqueue' );
|
110 |
}
|
111 |
|
117 |
public function output() {
|
118 |
|
119 |
?>
|
120 |
+
<div id="wpforms-overview" class="wrap wpforms-admin-wrap">
|
121 |
|
122 |
<h1 class="page-title">
|
123 |
<?php _e( 'Forms Overview', 'wpforms' ); ?>
|
124 |
+
<a href="<?php echo admin_url( 'admin.php?page=wpforms-builder&view=setup' ); ?>" class="add-new-h2 wpforms-btn-orange"><?php _e( 'Add New', 'wpforms' ); ?></a>
|
125 |
</h1>
|
126 |
|
127 |
<?php
|
128 |
+
$overview_table = new WPForms_Overview_Table;
|
129 |
$overview_table->prepare_items();
|
130 |
?>
|
131 |
+
|
132 |
+
<div class="wpforms-admin-content">
|
133 |
+
|
134 |
+
<form id="wpforms-overview-table" method="get" action="<?php echo admin_url( 'admin.php?page=wpforms-overview' ); ?>">
|
135 |
+
|
136 |
+
<input type="hidden" name="post_type" value="wpforms" />
|
137 |
+
|
138 |
+
<input type="hidden" name="page" value="wpforms-overview" />
|
139 |
+
|
140 |
+
<?php $overview_table->views(); ?>
|
141 |
+
<?php $overview_table->display(); ?>
|
142 |
+
|
143 |
+
</form>
|
144 |
+
|
145 |
+
</div>
|
146 |
|
147 |
</div>
|
148 |
<?php
|
149 |
}
|
150 |
}
|
151 |
+
new WPForms_Overview;
|
includes/admin/settings-api.php
ADDED
@@ -0,0 +1,305 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Settings API.
|
4 |
+
*
|
5 |
+
* @package WPForms
|
6 |
+
* @author WPForms
|
7 |
+
* @since 1.3.7
|
8 |
+
* @license GPL-2.0+
|
9 |
+
* @copyright Copyright (c) 2017, WPForms LLC
|
10 |
+
*/
|
11 |
+
|
12 |
+
/**
|
13 |
+
* Settings output wrapper.
|
14 |
+
*
|
15 |
+
* @since 1.3.9
|
16 |
+
* @param array $args
|
17 |
+
* @return string
|
18 |
+
*/
|
19 |
+
function wpforms_settings_output_field( $args ) {
|
20 |
+
|
21 |
+
// Define default callback for this field type.
|
22 |
+
$callback = ! empty( $args['type'] ) && function_exists( 'wpforms_settings_' . $args['type'] . '_callback' ) ? 'wpforms_settings_' . $args['type'] . '_callback' : 'wpforms_settings_missing_callback';
|
23 |
+
|
24 |
+
// Allow custom callback to be provided via arg.
|
25 |
+
if ( ! empty( $args['callback'] ) && function_exists( $args['callback'] ) ) {
|
26 |
+
$callback = $args['callback'];
|
27 |
+
}
|
28 |
+
|
29 |
+
// Store returned markup from callback.
|
30 |
+
$field = call_user_func( $callback, $args );
|
31 |
+
|
32 |
+
// Allow arg to bypass standard field wrap for custom display.
|
33 |
+
if ( ! empty( $args['wrap'] ) ) {
|
34 |
+
return $field;
|
35 |
+
}
|
36 |
+
|
37 |
+
// Custom row classes.
|
38 |
+
$class = ! empty( $args['class'] ) ? wpforms_sanitize_classes( (array) $args['class'], true ) : '';
|
39 |
+
|
40 |
+
// Build standard field markup and return.
|
41 |
+
$output = '<div class="wpforms-setting-row wpforms-setting-row-' . sanitize_html_class( $args['type'] ) . ' wpforms-clear ' . $class . '" id="wpforms-setting-row-' . wpforms_sanitize_key( $args['id'] ) . '">';
|
42 |
+
|
43 |
+
if ( ! empty( $args['name'] ) && empty( $args['no_label'] ) ) {
|
44 |
+
$output .= '<span class="wpforms-setting-label">';
|
45 |
+
$output .= '<label for="wpforms-setting-' . wpforms_sanitize_key( $args['id'] ) . '">' . esc_html( $args['name'] ) . '</label>';
|
46 |
+
$output .= '</span>';
|
47 |
+
}
|
48 |
+
|
49 |
+
$output .= '<span class="wpforms-setting-field">';
|
50 |
+
$output .= $field;
|
51 |
+
$output .= '</span>';
|
52 |
+
|
53 |
+
$output .= '</div>';
|
54 |
+
|
55 |
+
return $output;
|
56 |
+
}
|
57 |
+
|
58 |
+
/**
|
59 |
+
* Missing Callback.
|
60 |
+
*
|
61 |
+
* If a function is missing for settings callbacks alert the user.
|
62 |
+
*
|
63 |
+
* @since 1.3.9
|
64 |
+
* @param array $args Arguments passed by the setting.
|
65 |
+
*/
|
66 |
+
function wpforms_settings_missing_callback( $args ) {
|
67 |
+
|
68 |
+
return sprintf(
|
69 |
+
__( 'The callback function used for the %s setting is missing.', 'wpforms' ),
|
70 |
+
'<strong>' . wpforms_sanitize_key( $args['id'] ) . '</strong>'
|
71 |
+
);
|
72 |
+
}
|
73 |
+
|
74 |
+
/**
|
75 |
+
* Settings content field callback.
|
76 |
+
*
|
77 |
+
* @since 1.3.9
|
78 |
+
* @param array $args
|
79 |
+
* @return string
|
80 |
+
*/
|
81 |
+
function wpforms_settings_content_callback( $args ) {
|
82 |
+
|
83 |
+
return ! empty( $args['content'] ) ? $args['content'] : '';
|
84 |
+
}
|
85 |
+
|
86 |
+
/**
|
87 |
+
* Settings license field callback.
|
88 |
+
*
|
89 |
+
* @since 1.3.9
|
90 |
+
* @param array $args
|
91 |
+
* @return string
|
92 |
+
*/
|
93 |
+
function wpforms_settings_license_callback( $args ) {
|
94 |
+
|
95 |
+
// Lite users don't need to worry about license keys.
|
96 |
+
if ( ! wpforms()->pro || ! class_exists( 'WPForms_License' ) ) {
|
97 |
+
$output = '<p>' . __( 'You\'re using WPForms Lite - no license needed. Enjoy!', 'wpforms') . ' 🙂</p>';
|
98 |
+
$output .= '<p>' . sprintf( __( 'To unlock more features consider <a href="%s" target="_blank" rel="noopener noreferrer">upgrading to Pro</a>.</p>', 'wpforms' ), wpforms_admin_upgrade_link() );
|
99 |
+
return $output;
|
100 |
+
}
|
101 |
+
|
102 |
+
$key = wpforms_setting( 'key', '', 'wpforms_license' );
|
103 |
+
$type = wpforms_setting( 'type', '', 'wpforms_license' );
|
104 |
+
|
105 |
+
$output = '<input type="password" id="wpforms-setting-license-key" value="' . esc_attr( $key ) . '" />';
|
106 |
+
$output .= '<button id="wpforms-setting-license-key-verify" class="wpforms-btn wpforms-btn-md wpforms-btn-orange">' . __( 'Verify Key', 'wpforms' ) . '</button>';
|
107 |
+
|
108 |
+
// Offer option to deactivate the key.
|
109 |
+
$class = empty( $key ) ? 'wpforms-hide' : '';
|
110 |
+
$output .= '<button id="wpforms-setting-license-key-deactivate" class="wpforms-btn wpforms-btn-md wpforms-btn-light-grey ' . $class . '">' . __( 'Deactivate Key', 'wpforms' ) . '</button>';
|
111 |
+
|
112 |
+
// If we have previously looked up the license type, display it.
|
113 |
+
$class = empty( $type ) ? 'wpforms-hide' : '';
|
114 |
+
$output .= '<p class="type ' . $class . '">' . __( 'You\'re license key type is ', 'wpforms' ) . '<strong>' . esc_html( $type ) . '</strong>.</p>';
|
115 |
+
$output .= '<p class="desc ' . $class . '">' . __( 'If your license has been upgraded or is incorrect, <a href="#" id="wpforms-setting-license-key-refresh">click here to force a refresh</a>.', 'wpforms' ) . '</p>';
|
116 |
+
|
117 |
+
return $output;
|
118 |
+
}
|
119 |
+
|
120 |
+
/**
|
121 |
+
* Settings text input field callback.
|
122 |
+
*
|
123 |
+
* @since 1.3.9
|
124 |
+
* @param array $args
|
125 |
+
* @return string
|
126 |
+
*/
|
127 |
+
function wpforms_settings_text_callback( $args ) {
|
128 |
+
|
129 |
+
$default = isset( $args['default'] ) ? esc_html( $args['default'] ) : '';
|
130 |
+
$value = wpforms_setting( $args['id'], $default );
|
131 |
+
$id = wpforms_sanitize_key( $args['id'] );
|
132 |
+
|
133 |
+
$output = '<input type="text" id="wpforms-setting-' . $id . '" name="' . $id . '" value="' . esc_attr( $value ) . '">';
|
134 |
+
|
135 |
+
if ( ! empty( $args['desc'] ) ) {
|
136 |
+
$output .= '<p class="desc">' . wp_kses_post( $args['desc'] ) . '</p>';
|
137 |
+
}
|
138 |
+
|
139 |
+
return $output;
|
140 |
+
}
|
141 |
+
|
142 |
+
/**
|
143 |
+
* Settings select field callback.
|
144 |
+
*
|
145 |
+
* @since 1.3.9
|
146 |
+
* @param array $args
|
147 |
+
* @return string
|
148 |
+
*/
|
149 |
+
function wpforms_settings_select_callback( $args ) {
|
150 |
+
|
151 |
+
$default = isset( $args['default'] ) ? esc_html( $args['default'] ) : '';
|
152 |
+
$value = wpforms_setting( $args['id'], $default );
|
153 |
+
$id = wpforms_sanitize_key( $args['id'] );
|
154 |
+
$class = ! empty( $args['choicesjs'] ) ? 'choicesjs-select' : '';
|
155 |
+
$choices = ! empty( $args['choicesjs'] ) ? true : false;
|
156 |
+
$data = '';
|
157 |
+
|
158 |
+
if ( $choices && !empty( $args['search'] ) ) {
|
159 |
+
$data = ' data-search="true"';
|
160 |
+
}
|
161 |
+
|
162 |
+
$output = $choices ? '<span class="choicesjs-select-wrap">' : '';
|
163 |
+
$output .= '<select id="wpforms-setting-' . $id . '" name="' . $id . '" class="' . $class . '"' . $data . '>';
|
164 |
+
|
165 |
+
foreach ( $args['options'] as $option => $name ) {
|
166 |
+
$selected = selected( $value, $option, false );
|
167 |
+
$output .= '<option value="' . esc_attr( $option ) . '" ' . $selected . '>' . esc_html( $name ) . '</option>';
|
168 |
+
}
|
169 |
+
|
170 |
+
$output .= '</select>';
|
171 |
+
$output .= $choices ? '</span>' : '';
|
172 |
+
|
173 |
+
if ( ! empty( $args['desc'] ) ) {
|
174 |
+
$output .= '<p class="desc">' . wp_kses_post( $args['desc'] ) . '</p>';
|
175 |
+
}
|
176 |
+
|
177 |
+
return $output;
|
178 |
+
}
|
179 |
+
|
180 |
+
/**
|
181 |
+
* Settings checkbox field callback.
|
182 |
+
*
|
183 |
+
* @since 1.3.9
|
184 |
+
* @param array $args
|
185 |
+
* @return string
|
186 |
+
*/
|
187 |
+
function wpforms_settings_checkbox_callback( $args ) {
|
188 |
+
|
189 |
+
$value = wpforms_setting( $args['id'] );
|
190 |
+
$id = wpforms_sanitize_key( $args['id'] );
|
191 |
+
$checked = ! empty( $value ) ? checked( 1, $value, false ) : '';
|
192 |
+
|
193 |
+
$output = '<input type="checkbox" id="wpforms-setting-' . $id . '" name="' . $id . '" ' . $checked . '>';
|
194 |
+
|
195 |
+
if ( ! empty( $args['desc'] ) ) {
|
196 |
+
$output .= '<p class="desc">' . wp_kses_post( $args['desc'] ) . '</p>';
|
197 |
+
}
|
198 |
+
|
199 |
+
return $output;
|
200 |
+
}
|
201 |
+
|
202 |
+
/**
|
203 |
+
* Settings radio field callback.
|
204 |
+
*
|
205 |
+
* @since 1.3.9
|
206 |
+
* @param array $args
|
207 |
+
* @return string
|
208 |
+
*/
|
209 |
+
function wpforms_settings_radio_callback( $args ) {
|
210 |
+
|
211 |
+
$default = isset( $args['default'] ) ? esc_html( $args['default'] ) : '';
|
212 |
+
$value = wpforms_setting( $args['id'], $default );
|
213 |
+
$id = wpforms_sanitize_key( $args['id'] );
|
214 |
+
$output = '';
|
215 |
+
$x = 1;
|
216 |
+
|
217 |
+
foreach ( $args['options'] as $option => $name ) {
|
218 |
+
|
219 |
+
$checked = checked( $value, $option, false );
|
220 |
+
$output .= '<label for="wpforms-setting-' . $id . '[' . $x . ']" class="option-' . sanitize_html_class( $option ) . '">';
|
221 |
+
$output .= '<input type="radio" id="wpforms-setting-' . $id . '[' . $x . ']" name="' . $id . '" value="' . esc_attr( $option ) . '" ' . $checked . '>';
|
222 |
+
$output .= esc_html( $name );
|
223 |
+
$output .= '</label>';
|
224 |
+
$x++;
|
225 |
+
}
|
226 |
+
|
227 |
+
if ( ! empty( $args['desc'] ) ) {
|
228 |
+
$output .= '<p class="desc">' . wp_kses_post( $args['desc'] ) . '</p>';
|
229 |
+
}
|
230 |
+
|
231 |
+
return $output;
|
232 |
+
}
|
233 |
+
|
234 |
+
/**
|
235 |
+
* Settings image upload field callback.
|
236 |
+
*
|
237 |
+
* @since 1.3.9
|
238 |
+
* @param array $args
|
239 |
+
* @return string
|
240 |
+
*/
|
241 |
+
function wpforms_settings_image_callback( $args ) {
|
242 |
+
|
243 |
+
$default = isset( $args['default'] ) ? esc_html( $args['default'] ) : '';
|
244 |
+
$value = wpforms_setting( $args['id'], $default );
|
245 |
+
$id = wpforms_sanitize_key( $args['id'] );
|
246 |
+
$output = '';
|
247 |
+
|
248 |
+
if ( ! empty( $value ) ) {
|
249 |
+
$output .= '<img src="' . esc_url_raw( $value ) . '">';
|
250 |
+
}
|
251 |
+
|
252 |
+
$output .= '<input type="text" id="wpforms-setting-' . $id . '" name="' . $id . '" value="' . esc_url_raw( $value ) . '">';
|
253 |
+
$output .= '<button class="wpforms-btn wpforms-btn-md wpforms-btn-light-grey">' . __( 'Upload Image', 'wpforms' ) . '</button>';
|
254 |
+
|
255 |
+
if ( ! empty( $args['desc'] ) ) {
|
256 |
+
$output .= '<p class="desc">' . wp_kses_post( $args['desc'] ) . '</p>';
|
257 |
+
}
|
258 |
+
|
259 |
+
return $output;
|
260 |
+
}
|
261 |
+
|
262 |
+
/**
|
263 |
+
* Settings color picker field callback.
|
264 |
+
*
|
265 |
+
* @since 1.3.9
|
266 |
+
* @param array $args
|
267 |
+
* @return string
|
268 |
+
*/
|
269 |
+
function wpforms_settings_color_callback( $args ) {
|
270 |
+
|
271 |
+
$default = isset( $args['default'] ) ? esc_html( $args['default'] ) : '';
|
272 |
+
$value = wpforms_setting( $args['id'], $default );
|
273 |
+
$id = wpforms_sanitize_key( $args['id'] );
|
274 |
+
|
275 |
+
$output = '<input type="text" id="wpforms-setting-' . $id . '" class="wpforms-color-picker" name="' . $id . '" value="' . esc_attr( $value ) . '">';
|
276 |
+
|
277 |
+
if ( ! empty( $args['desc'] ) ) {
|
278 |
+
$output .= '<p class="desc">' . wp_kses_post( $args['desc'] ) . '</p>';
|
279 |
+
}
|
280 |
+
|
281 |
+
return $output;
|
282 |
+
}
|
283 |
+
|
284 |
+
/**
|
285 |
+
* Settings providers field callback - this is for the Integrations tab.
|
286 |
+
*
|
287 |
+
* @since 1.3.9
|
288 |
+
* @param array $args
|
289 |
+
* @return string
|
290 |
+
*/
|
291 |
+
function wpforms_settings_providers_callback( $args ) {
|
292 |
+
|
293 |
+
$providers = get_option( 'wpforms_providers', false );
|
294 |
+
$active = apply_filters( 'wpforms_providers_available', array() );
|
295 |
+
|
296 |
+
$output = '<div id="wpforms-settings-providers">';
|
297 |
+
|
298 |
+
ob_start();
|
299 |
+
do_action( 'wpforms_settings_providers', $active, $providers );
|
300 |
+
$output .= ob_get_clean();
|
301 |
+
|
302 |
+
$output .= '</div>';
|
303 |
+
|
304 |
+
return $output;
|
305 |
+
}
|
includes/class-preview.php
CHANGED
@@ -7,7 +7,7 @@
|
|
7 |
* @since 1.1.5
|
8 |
* @license GPL-2.0+
|
9 |
* @copyright Copyright (c) 2016, WPForms LLC
|
10 |
-
*/
|
11 |
class WPForms_Preview {
|
12 |
|
13 |
/**
|
@@ -17,10 +17,10 @@ class WPForms_Preview {
|
|
17 |
*/
|
18 |
public function __construct() {
|
19 |
|
20 |
-
// Maybe load a preview page
|
21 |
add_action( 'init', array( $this, 'init' ) );
|
22 |
|
23 |
-
// Hide preview page from admin
|
24 |
add_action( 'pre_get_posts', array( $this, 'form_preview_hide' ) );
|
25 |
}
|
26 |
|
@@ -31,23 +31,23 @@ class WPForms_Preview {
|
|
31 |
*/
|
32 |
public function init() {
|
33 |
|
34 |
-
// Check for preview param with allowed values
|
35 |
-
if ( empty( $_GET['wpforms_preview'] ) || !in_array( $_GET['wpforms_preview'], array( 'print', 'form' ) ) ) {
|
36 |
return;
|
37 |
}
|
38 |
|
39 |
-
// Check for authenticated user with correct capabilities
|
40 |
-
if ( !is_user_logged_in() || !current_user_can( apply_filters( 'wpforms_manage_cap', 'manage_options' ) ) ) {
|
41 |
return;
|
42 |
}
|
43 |
|
44 |
-
// Print preview
|
45 |
-
if ( 'print'
|
46 |
$this->print_preview();
|
47 |
}
|
48 |
|
49 |
-
// Form preview
|
50 |
-
if ( 'form'
|
51 |
$this->form_preview();
|
52 |
}
|
53 |
}
|
@@ -59,21 +59,25 @@ class WPForms_Preview {
|
|
59 |
*/
|
60 |
public function print_preview() {
|
61 |
|
62 |
-
// Load entry details
|
63 |
$entry = wpforms()->entry->get( absint( $_GET['entry_id'] ) );
|
64 |
|
65 |
-
// Double check that we found a real entry
|
66 |
-
if (
|
67 |
return;
|
68 |
}
|
69 |
|
70 |
-
// Get form details
|
71 |
$form_data = wpforms()->form->get( $entry->form_id, array( 'content_only' => true ) );
|
72 |
|
73 |
-
// Double check that we found a valid entry
|
74 |
-
if (
|
75 |
return;
|
76 |
}
|
|
|
|
|
|
|
|
|
77 |
?>
|
78 |
<!doctype html>
|
79 |
<html>
|
@@ -84,20 +88,74 @@ class WPForms_Preview {
|
|
84 |
<meta name="description" content="">
|
85 |
<meta name="viewport" content="width=device-width, initial-scale=1">
|
86 |
<meta name="robots" content="noindex,nofollow,noarchive">
|
87 |
-
<link rel="stylesheet" href="<?php echo includes_url('css/buttons.min.css'); ?>" type="text/css">
|
88 |
<link rel="stylesheet" href="<?php echo WPFORMS_PLUGIN_URL; ?>assets/css/wpforms-preview.css" type="text/css">
|
89 |
-
<script type="text/javascript" src="<?php echo includes_url('js/jquery/jquery.js'); ?>"></script>
|
90 |
-
<script
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
91 |
</head>
|
92 |
<body class="wp-core-ui">
|
93 |
<div class="wpforms-preview" id="print">
|
94 |
<h1>
|
95 |
<?php echo sanitize_text_field( $form_data['settings']['form_title'] ); ?> <span> - <?php printf( __( 'Entry #%d', 'wpforms' ), absint( $entry->entry_id ) ); ?></span>
|
96 |
<div class="buttons">
|
97 |
-
<a href="" class="button button-secondary close-window"
|
98 |
-
<a href="" class="button button-primary print"
|
99 |
</div>
|
100 |
</h1>
|
|
|
|
|
|
|
|
|
|
|
101 |
<?php
|
102 |
$fields = apply_filters( 'wpforms_entry_single_data', wpforms_decode( $entry->fields ), $entry, $form_data );
|
103 |
|
@@ -110,23 +168,21 @@ class WPForms_Preview {
|
|
110 |
|
111 |
echo '<div class="fields">';
|
112 |
|
113 |
-
// Display the fields and their values
|
114 |
foreach ( $fields as $key => $field ) {
|
115 |
|
116 |
$field_value = apply_filters( 'wpforms_html_field_value', wp_strip_all_tags( $field['value'] ), $field, $form_data, 'entry-single' );
|
117 |
$field_class = sanitize_html_class( 'wpforms-field-' . $field['type'] );
|
118 |
$field_class .= empty( $field_value ) ? ' empty' : '';
|
119 |
|
120 |
-
echo '<div class="
|
121 |
|
122 |
-
|
123 |
-
|
124 |
-
echo !empty( $field['name'] ) ? wp_strip_all_tags( $field['name'] ) : sprintf( __( 'Field ID #%d', 'wpforms' ), absint( $field['id'] ) );
|
125 |
echo '</p>';
|
126 |
|
127 |
-
|
128 |
-
|
129 |
-
echo !empty( $field_value ) ? nl2br( make_clickable( $field_value ) ) : __( 'Empty', 'wpforms' );
|
130 |
echo '</p>';
|
131 |
|
132 |
echo '</div>';
|
@@ -134,8 +190,35 @@ class WPForms_Preview {
|
|
134 |
|
135 |
echo '</div>';
|
136 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
137 |
?>
|
138 |
-
|
139 |
<p class="site"><a href="<?php echo home_url(); ?>"><?php echo get_bloginfo( 'name'); ?></a></p>
|
140 |
</body>
|
141 |
<?php
|
@@ -149,8 +232,9 @@ class WPForms_Preview {
|
|
149 |
*/
|
150 |
public function form_preview_check() {
|
151 |
|
152 |
-
if ( !is_admin() )
|
153 |
return;
|
|
|
154 |
|
155 |
// Verify page exits
|
156 |
$preview = get_option( 'wpforms_preview_page' );
|
@@ -160,11 +244,11 @@ class WPForms_Preview {
|
|
160 |
$preview_page = get_post( $preview );
|
161 |
|
162 |
// Check to see if the visibility has been changed, if so correct it
|
163 |
-
if ( !empty( $preview_page ) && 'private'
|
164 |
$preview_page->post_status = 'private';
|
165 |
wp_update_post( $preview_page );
|
166 |
return;
|
167 |
-
} elseif ( !empty( $preview_page ) ) {
|
168 |
return;
|
169 |
}
|
170 |
}
|
@@ -179,7 +263,7 @@ class WPForms_Preview {
|
|
179 |
'post_title' => __( 'WPForms Preview', 'wpforms' ),
|
180 |
'post_status' => 'private',
|
181 |
'post_content' => $content,
|
182 |
-
'comment_status' => 'closed'
|
183 |
);
|
184 |
$id = wp_insert_post( $args );
|
185 |
if ( $id ) {
|
@@ -232,7 +316,7 @@ class WPForms_Preview {
|
|
232 |
public function form_preview_query( $posts, $query ) {
|
233 |
|
234 |
// One last cap check, just for fun.
|
235 |
-
if ( !is_user_logged_in() || !current_user_can( apply_filters( 'wpforms_manage_cap', 'manage_options' ) ) ) {
|
236 |
return $posts;
|
237 |
}
|
238 |
|
@@ -259,7 +343,7 @@ class WPForms_Preview {
|
|
259 |
$title = sanitize_text_field( $form['settings']['form_title'] );
|
260 |
$shortcode = '[wpforms id="' . absint( $form['id'] ) . '"]';
|
261 |
$content = __( 'This is a preview of your form. This page is not publicly accessible.', 'wpforms' );
|
262 |
-
if ( !empty( $_GET['new_window'] ) ) {
|
263 |
$content .= ' <a href="javascript:window.close();">' . __( 'Close this window', 'wpforms' ) . '.</a>';
|
264 |
}
|
265 |
$posts[0]->post_title = $title . __( ' Preview', 'wpforms' );
|
@@ -277,12 +361,12 @@ class WPForms_Preview {
|
|
277 |
*/
|
278 |
function form_preview_hide( $query ) {
|
279 |
|
280 |
-
if( $query->is_main_query() && is_admin() && isset( $query->query_vars['post_type'] ) && 'page' == $query->query_vars['post_type'] ) {
|
281 |
-
|
282 |
-
|
283 |
-
|
284 |
-
|
285 |
-
|
286 |
}
|
287 |
}
|
288 |
}
|
7 |
* @since 1.1.5
|
8 |
* @license GPL-2.0+
|
9 |
* @copyright Copyright (c) 2016, WPForms LLC
|
10 |
+
*/
|
11 |
class WPForms_Preview {
|
12 |
|
13 |
/**
|
17 |
*/
|
18 |
public function __construct() {
|
19 |
|
20 |
+
// Maybe load a preview page.
|
21 |
add_action( 'init', array( $this, 'init' ) );
|
22 |
|
23 |
+
// Hide preview page from admin.
|
24 |
add_action( 'pre_get_posts', array( $this, 'form_preview_hide' ) );
|
25 |
}
|
26 |
|
31 |
*/
|
32 |
public function init() {
|
33 |
|
34 |
+
// Check for preview param with allowed values.
|
35 |
+
if ( empty( $_GET['wpforms_preview'] ) || ! in_array( $_GET['wpforms_preview'], array( 'print', 'form' ), true ) ) {
|
36 |
return;
|
37 |
}
|
38 |
|
39 |
+
// Check for authenticated user with correct capabilities.
|
40 |
+
if ( ! is_user_logged_in() || ! current_user_can( apply_filters( 'wpforms_manage_cap', 'manage_options' ) ) ) {
|
41 |
return;
|
42 |
}
|
43 |
|
44 |
+
// Print preview.
|
45 |
+
if ( 'print' === $_GET['wpforms_preview'] && ! empty( $_GET['entry_id'] ) ) {
|
46 |
$this->print_preview();
|
47 |
}
|
48 |
|
49 |
+
// Form preview.
|
50 |
+
if ( 'form' === $_GET['wpforms_preview'] && ! empty( $_GET['form_id'] ) ) {
|
51 |
$this->form_preview();
|
52 |
}
|
53 |
}
|
59 |
*/
|
60 |
public function print_preview() {
|
61 |
|
62 |
+
// Load entry details.
|
63 |
$entry = wpforms()->entry->get( absint( $_GET['entry_id'] ) );
|
64 |
|
65 |
+
// Double check that we found a real entry.
|
66 |
+
if ( empty( $entry ) ) {
|
67 |
return;
|
68 |
}
|
69 |
|
70 |
+
// Get form details.
|
71 |
$form_data = wpforms()->form->get( $entry->form_id, array( 'content_only' => true ) );
|
72 |
|
73 |
+
// Double check that we found a valid entry.
|
74 |
+
if ( empty( $form_data ) ) {
|
75 |
return;
|
76 |
}
|
77 |
+
|
78 |
+
// Check for entry notes.
|
79 |
+
$entry->entry_notes = wpforms()->entry_meta->get_meta( array( 'entry_id' => $entry->entry_id, 'type' => 'note' ) );
|
80 |
+
|
81 |
?>
|
82 |
<!doctype html>
|
83 |
<html>
|
88 |
<meta name="description" content="">
|
89 |
<meta name="viewport" content="width=device-width, initial-scale=1">
|
90 |
<meta name="robots" content="noindex,nofollow,noarchive">
|
91 |
+
<link rel="stylesheet" href="<?php echo includes_url( 'css/buttons.min.css' ); ?>" type="text/css">
|
92 |
<link rel="stylesheet" href="<?php echo WPFORMS_PLUGIN_URL; ?>assets/css/wpforms-preview.css" type="text/css">
|
93 |
+
<script type="text/javascript" src="<?php echo includes_url( 'js/jquery/jquery.js' ); ?>"></script>
|
94 |
+
<script>
|
95 |
+
jQuery(function($){
|
96 |
+
var showEmpty = false,
|
97 |
+
showNotes = false,
|
98 |
+
showCompact = false;
|
99 |
+
// Print page.
|
100 |
+
$(document).on('click', '.print', function(e) {
|
101 |
+
e.preventDefault();
|
102 |
+
window.print();
|
103 |
+
});
|
104 |
+
// Close page.
|
105 |
+
$(document).on('click', '.close-window', function(e) {
|
106 |
+
e.preventDefault();
|
107 |
+
window.close();
|
108 |
+
});
|
109 |
+
// Toggle empty fields.
|
110 |
+
$(document).on('click', '.toggle-empty', function(e) {
|
111 |
+
e.preventDefault();
|
112 |
+
if ( ! showEmpty ) {
|
113 |
+
$(this).text('<?php _e( 'Hide empty fields', 'wpforms' ); ?>');
|
114 |
+
} else {
|
115 |
+
$(this).text('<?php _e( 'Show empty fields', 'wpforms' ); ?>');
|
116 |
+
}
|
117 |
+
$('.field.empty').toggle();
|
118 |
+
showEmpty = !showEmpty;
|
119 |
+
});
|
120 |
+
// Toggle notes.
|
121 |
+
$(document).on('click', '.toggle-notes', function(e) {
|
122 |
+
e.preventDefault();
|
123 |
+
if ( ! showNotes ) {
|
124 |
+
$(this).text('<?php _e( 'Hide notes', 'wpforms' ); ?>');
|
125 |
+
} else {
|
126 |
+
$(this).text('<?php _e( 'Show notes', 'wpforms' ); ?>');
|
127 |
+
}
|
128 |
+
$('.notes, .notes-head').toggle();
|
129 |
+
showNotes = !showNotes;
|
130 |
+
});
|
131 |
+
// Toggle compact view.
|
132 |
+
$(document).on('click', '.toggle-view', function(e) {
|
133 |
+
e.preventDefault();
|
134 |
+
if ( ! showCompact ) {
|
135 |
+
$(this).text('<?php _e( 'Normal view', 'wpforms' ); ?>');
|
136 |
+
} else {
|
137 |
+
$(this).text('<?php _e( 'Compact view', 'wpforms' ); ?>');
|
138 |
+
}
|
139 |
+
$('body').toggleClass('compact');
|
140 |
+
showCompact = !showCompact;
|
141 |
+
});
|
142 |
+
});
|
143 |
+
</script>
|
144 |
</head>
|
145 |
<body class="wp-core-ui">
|
146 |
<div class="wpforms-preview" id="print">
|
147 |
<h1>
|
148 |
<?php echo sanitize_text_field( $form_data['settings']['form_title'] ); ?> <span> - <?php printf( __( 'Entry #%d', 'wpforms' ), absint( $entry->entry_id ) ); ?></span>
|
149 |
<div class="buttons">
|
150 |
+
<a href="" class="button button-secondary close-window"><?php _e( 'Close', 'wpforms' ); ?></a>
|
151 |
+
<a href="" class="button button-primary print"><?php _e( 'Print', 'wpforms' ); ?></a>
|
152 |
</div>
|
153 |
</h1>
|
154 |
+
<div class="actions">
|
155 |
+
<a href="#" class="toggle-empty"><?php _e( 'Show empty fields', 'wpforms' ); ?></a> •
|
156 |
+
<?php echo ! empty( $entry->entry_notes ) ? '<a href="#" class="toggle-notes">' . __( 'Show note', 'wpforms' ) . '</a> •' : ''; ?>
|
157 |
+
<a href="#" class="toggle-view"><?php _e( 'Compact view', 'wpforms' ); ?></a>
|
158 |
+
</div>
|
159 |
<?php
|
160 |
$fields = apply_filters( 'wpforms_entry_single_data', wpforms_decode( $entry->fields ), $entry, $form_data );
|
161 |
|
168 |
|
169 |
echo '<div class="fields">';
|
170 |
|
171 |
+
// Display the fields and their values.
|
172 |
foreach ( $fields as $key => $field ) {
|
173 |
|
174 |
$field_value = apply_filters( 'wpforms_html_field_value', wp_strip_all_tags( $field['value'] ), $field, $form_data, 'entry-single' );
|
175 |
$field_class = sanitize_html_class( 'wpforms-field-' . $field['type'] );
|
176 |
$field_class .= empty( $field_value ) ? ' empty' : '';
|
177 |
|
178 |
+
echo '<div class="field ' . $field_class . '">';
|
179 |
|
180 |
+
echo '<p class="field-name">';
|
181 |
+
echo ! empty( $field['name'] ) ? wp_strip_all_tags( $field['name'] ) : sprintf( __( 'Field ID #%d', 'wpforms' ), absint( $field['id'] ) );
|
|
|
182 |
echo '</p>';
|
183 |
|
184 |
+
echo '<p class="field-value">';
|
185 |
+
echo ! empty( $field_value ) ? nl2br( make_clickable( $field_value ) ) : __( 'Empty', 'wpforms' );
|
|
|
186 |
echo '</p>';
|
187 |
|
188 |
echo '</div>';
|
190 |
|
191 |
echo '</div>';
|
192 |
}
|
193 |
+
|
194 |
+
if ( ! empty( $entry->entry_notes ) ) {
|
195 |
+
|
196 |
+
echo '<h2 class="notes-head">' . __( 'Notes', 'wpforms' ) . '</h2>';
|
197 |
+
|
198 |
+
echo '<div class="notes">';
|
199 |
+
|
200 |
+
foreach ( $entry->entry_notes as $note ) {
|
201 |
+
|
202 |
+
$user = get_userdata( $note->user_id );
|
203 |
+
$user_name = esc_html( ! empty( $user->display_name ) ? $user->display_name : $user->user_login );
|
204 |
+
$date_format = sprintf( '%s %s', get_option( 'date_format' ), get_option( 'time_format' ) );
|
205 |
+
$date = date( $date_format, strtotime( $note->date ) + ( get_option( 'gmt_offset' ) * 3600 ) );
|
206 |
+
|
207 |
+
echo '<div class="note">';
|
208 |
+
echo '<div class="note-byline">';
|
209 |
+
printf(
|
210 |
+
__( 'Added by %s on %s', 'wpforms' ),
|
211 |
+
$user_name,
|
212 |
+
$date
|
213 |
+
);
|
214 |
+
echo '</div>';
|
215 |
+
echo '<div class="note-text">' . wp_kses_post( $note->data ) . '</div>';
|
216 |
+
echo '</div>';
|
217 |
+
}
|
218 |
+
echo '</div>';
|
219 |
+
}
|
220 |
?>
|
221 |
+
</div>
|
222 |
<p class="site"><a href="<?php echo home_url(); ?>"><?php echo get_bloginfo( 'name'); ?></a></p>
|
223 |
</body>
|
224 |
<?php
|
232 |
*/
|
233 |
public function form_preview_check() {
|
234 |
|
235 |
+
if ( ! is_admin() ) {
|
236 |
return;
|
237 |
+
}
|
238 |
|
239 |
// Verify page exits
|
240 |
$preview = get_option( 'wpforms_preview_page' );
|
244 |
$preview_page = get_post( $preview );
|
245 |
|
246 |
// Check to see if the visibility has been changed, if so correct it
|
247 |
+
if ( ! empty( $preview_page ) && 'private' !== $preview_page->post_status ) {
|
248 |
$preview_page->post_status = 'private';
|
249 |
wp_update_post( $preview_page );
|
250 |
return;
|
251 |
+
} elseif ( ! empty( $preview_page ) ) {
|
252 |
return;
|
253 |
}
|
254 |
}
|
263 |
'post_title' => __( 'WPForms Preview', 'wpforms' ),
|
264 |
'post_status' => 'private',
|
265 |
'post_content' => $content,
|
266 |
+
'comment_status' => 'closed',
|
267 |
);
|
268 |
$id = wp_insert_post( $args );
|
269 |
if ( $id ) {
|
316 |
public function form_preview_query( $posts, $query ) {
|
317 |
|
318 |
// One last cap check, just for fun.
|
319 |
+
if ( ! is_user_logged_in() || ! current_user_can( apply_filters( 'wpforms_manage_cap', 'manage_options' ) ) ) {
|
320 |
return $posts;
|
321 |
}
|
322 |
|
343 |
$title = sanitize_text_field( $form['settings']['form_title'] );
|
344 |
$shortcode = '[wpforms id="' . absint( $form['id'] ) . '"]';
|
345 |
$content = __( 'This is a preview of your form. This page is not publicly accessible.', 'wpforms' );
|
346 |
+
if ( ! empty( $_GET['new_window'] ) ) {
|
347 |
$content .= ' <a href="javascript:window.close();">' . __( 'Close this window', 'wpforms' ) . '.</a>';
|
348 |
}
|
349 |
$posts[0]->post_title = $title . __( ' Preview', 'wpforms' );
|
361 |
*/
|
362 |
function form_preview_hide( $query ) {
|
363 |
|
364 |
+
if ( $query->is_main_query() && is_admin() && isset( $query->query_vars['post_type'] ) && 'page' == $query->query_vars['post_type'] ) {
|
365 |
+
$wpforms_preview = intval( get_option( 'wpforms_preview_page' ) );
|
366 |
+
if ( $wpforms_preview ) {
|
367 |
+
$exclude = $query->query_vars['post__not_in'];
|
368 |
+
$exclude[] = $wpforms_preview;
|
369 |
+
$query->set( 'post__not_in', $exclude );
|
370 |
}
|
371 |
}
|
372 |
}
|
includes/fields/class-base.php
CHANGED
@@ -42,14 +42,6 @@ abstract class WPForms_Field {
|
|
42 |
*/
|
43 |
public $order = 20;
|
44 |
|
45 |
-
/**
|
46 |
-
* Field version number, used to introduce new features and capabilities.
|
47 |
-
*
|
48 |
-
* @since 1.3.7
|
49 |
-
* @var integer
|
50 |
-
*/
|
51 |
-
public $version = 1;
|
52 |
-
|
53 |
/**
|
54 |
* Field group the field belongs to.
|
55 |
*
|
@@ -534,9 +526,12 @@ abstract class WPForms_Field {
|
|
534 |
// CSS classes ---------------------------------------------------//
|
535 |
|
536 |
case 'css':
|
|
|
537 |
$value = ! empty( $field['css'] ) ? esc_attr( $field['css'] ) : '';
|
538 |
$tooltip = __( 'Enter CSS class names for the form field container. Class names should be separated with spaces.', 'wpforms' );
|
539 |
-
|
|
|
|
|
540 |
// Build output
|
541 |
$output = $this->field_element( 'label', $field, array( 'slug' => 'css', 'value' => __( 'CSS Classes', 'wpforms' ), 'tooltip' => $tooltip, 'after_tooltip' => $toggle ), false );
|
542 |
$output .= $this->field_element( 'text', $field, array( 'slug' => 'css', 'value' => $value ), false );
|
42 |
*/
|
43 |
public $order = 20;
|
44 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
45 |
/**
|
46 |
* Field group the field belongs to.
|
47 |
*
|
526 |
// CSS classes ---------------------------------------------------//
|
527 |
|
528 |
case 'css':
|
529 |
+
$toggle = '';
|
530 |
$value = ! empty( $field['css'] ) ? esc_attr( $field['css'] ) : '';
|
531 |
$tooltip = __( 'Enter CSS class names for the form field container. Class names should be separated with spaces.', 'wpforms' );
|
532 |
+
if ( ! in_array( $field['type'], array( 'pagebreak' ), true ) ) {
|
533 |
+
$toggle = '<a href="#" class="toggle-layout-selector-display"><i class="fa fa-th-large"></i> <span>' . __( 'Show Layouts', 'wpforms' ) . '</span></a>';
|
534 |
+
}
|
535 |
// Build output
|
536 |
$output = $this->field_element( 'label', $field, array( 'slug' => 'css', 'value' => __( 'CSS Classes', 'wpforms' ), 'tooltip' => $tooltip, 'after_tooltip' => $toggle ), false );
|
537 |
$output .= $this->field_element( 'text', $field, array( 'slug' => 'css', 'value' => $value ), false );
|
includes/fields/class-checkbox.php
CHANGED
@@ -52,10 +52,10 @@ class WPForms_Field_Checkbox extends WPForms_Field {
|
|
52 |
//--------------------------------------------------------------------//
|
53 |
// Basic field options
|
54 |
//--------------------------------------------------------------------//
|
55 |
-
|
56 |
// Options open markup
|
57 |
$this->field_option( 'basic-options', $field, array( 'markup' => 'open' ) );
|
58 |
-
|
59 |
// Label
|
60 |
$this->field_option( 'label', $field );
|
61 |
|
@@ -70,14 +70,14 @@ class WPForms_Field_Checkbox extends WPForms_Field {
|
|
70 |
|
71 |
// Options close markup
|
72 |
$this->field_option( 'basic-options', $field, array( 'markup' => 'close' ) );
|
73 |
-
|
74 |
//--------------------------------------------------------------------//
|
75 |
// Advanced field options
|
76 |
//--------------------------------------------------------------------//
|
77 |
-
|
78 |
// Options open markup
|
79 |
$this->field_option( 'advanced-options', $field, array( 'markup' => 'open' ) );
|
80 |
-
|
81 |
// Show Values toggle option
|
82 |
$tooltip = __( 'Check this to manual set form field values.', 'wpforms' );
|
83 |
$show_values = isset( $field['show_values'] ) ? $field['show_values'] : '0';
|
@@ -120,21 +120,21 @@ class WPForms_Field_Checkbox extends WPForms_Field {
|
|
120 |
// Field checkbox elements
|
121 |
echo '<ul class="primary-input">';
|
122 |
|
123 |
-
// Check to see if this field is configured for Dynamic Choices,
|
124 |
// either auto populating from a post type or a taxonomy.
|
125 |
if ( 'post_type' == $dynamic && !empty( $field['dynamic_post_type'] ) ) {
|
126 |
-
|
127 |
// Post type dynamic populating
|
128 |
$source = $field['dynamic_post_type'];
|
129 |
$total = wp_count_posts( $source );
|
130 |
$total = $total->publish;
|
131 |
-
$args = array(
|
132 |
-
'post_type' => $source,
|
133 |
-
'posts_per_page' => 20,
|
134 |
-
'orderby' => 'title',
|
135 |
'order' => 'ASC' ,
|
136 |
);
|
137 |
-
$posts =
|
138 |
$values = array();
|
139 |
|
140 |
foreach ( $posts as $post ) {
|
@@ -146,30 +146,30 @@ class WPForms_Field_Checkbox extends WPForms_Field {
|
|
146 |
// Taxonomy dynamic populating
|
147 |
$source = $field['dynamic_taxonomy'];
|
148 |
$total = wp_count_terms( $source );
|
149 |
-
$args = array(
|
150 |
-
'taxonomy' => $source,
|
151 |
-
'hide_empty' => false,
|
152 |
'number' => 20
|
153 |
-
);
|
154 |
-
$terms =
|
155 |
$values = array();
|
156 |
|
157 |
foreach ( $terms as $term ) {
|
158 |
$values[] = array( 'label' => $term->name );
|
159 |
}
|
160 |
-
}
|
161 |
|
162 |
// Notify if currently empty
|
163 |
if ( empty( $values ) ) {
|
164 |
$values = array( 'label' => __( '(empty)', 'wpforms' ) );
|
165 |
}
|
166 |
-
|
167 |
// Individual checkbox options
|
168 |
foreach ( $values as $key => $value ) {
|
169 |
-
|
170 |
$default = isset( $value['default'] ) ? $value['default'] : '';
|
171 |
$selected = checked( '1', $default, false );
|
172 |
-
|
173 |
printf( '<li><input type="checkbox" %s disabled>%s</li>', $selected, $value['label'] );
|
174 |
}
|
175 |
|
@@ -194,14 +194,14 @@ class WPForms_Field_Checkbox extends WPForms_Field {
|
|
194 |
* @param array $form_data
|
195 |
*/
|
196 |
public function field_display( $field, $field_atts, $form_data ) {
|
197 |
-
|
198 |
// Setup and sanitize the necessary data
|
199 |
$field = apply_filters( 'wpforms_checkbox_field_display', $field, $field_atts, $form_data );
|
200 |
$field_placeholder = !empty( $field['placeholder']) ? esc_attr( $field['placeholder'] ) : '';
|
201 |
$field_required = !empty( $field['required'] ) ? ' required' : '';
|
202 |
$field_class = implode( ' ', array_map( 'sanitize_html_class', $field_atts['input_class'] ) );
|
203 |
$field_id = implode( ' ', array_map( 'sanitize_html_class', $field_atts['input_id'] ) );
|
204 |
-
$field_data = '';
|
205 |
$form_id = $form_data['id'];
|
206 |
$dynamic = !empty( $field['dynamic_choices'] ) ? $field['dynamic_choices'] : false;
|
207 |
$choices = $field['choices'];
|
@@ -212,25 +212,27 @@ class WPForms_Field_Checkbox extends WPForms_Field {
|
|
212 |
}
|
213 |
}
|
214 |
|
215 |
-
// Check to see if this field is configured for Dynamic Choices,
|
216 |
// either auto populating from a post type or a taxonomy.
|
217 |
if ( 'post_type' == $dynamic && !empty( $field['dynamic_post_type'] ) ) {
|
218 |
-
|
219 |
// Post type dynamic populating
|
220 |
$source = $field['dynamic_post_type'];
|
221 |
-
$args = array(
|
222 |
-
'post_type' => $source,
|
223 |
-
'posts_per_page' => -1,
|
224 |
-
'orderby' => 'title',
|
225 |
'order' => 'ASC' ,
|
226 |
);
|
227 |
-
|
|
|
228 |
$choices = array();
|
229 |
|
230 |
foreach ( $posts as $post ) {
|
231 |
-
$choices[] = array(
|
232 |
'value' => $post->ID,
|
233 |
-
'label' => $post->post_title
|
|
|
234 |
);
|
235 |
}
|
236 |
|
@@ -240,17 +242,18 @@ class WPForms_Field_Checkbox extends WPForms_Field {
|
|
240 |
|
241 |
// Taxonomy dynamic populating
|
242 |
$source = $field['dynamic_taxonomy'];
|
243 |
-
$args = array(
|
244 |
-
'taxonomy' => $source,
|
245 |
-
'hide_empty' => false,
|
246 |
-
);
|
247 |
-
$terms =
|
248 |
$choices = array();
|
249 |
-
|
250 |
foreach ( $terms as $term ) {
|
251 |
-
$choices[] = array(
|
252 |
'value' => $term->term_id,
|
253 |
-
'label' => $term->name
|
|
|
254 |
);
|
255 |
}
|
256 |
|
@@ -259,17 +262,18 @@ class WPForms_Field_Checkbox extends WPForms_Field {
|
|
259 |
|
260 |
// List
|
261 |
printf( '<ul id="%s" class="%s" %s>', $field_id, $field_class, $field_data );
|
262 |
-
|
263 |
-
foreach( $choices as $key=> $choice ) {
|
264 |
-
|
265 |
$selected = isset( $choice['default'] ) ? '1' : '0' ;
|
266 |
$val = isset( $field['show_values'] ) ? esc_attr( $choice['value'] ) : esc_attr( $choice['label'] );
|
267 |
-
|
268 |
-
|
269 |
-
|
|
|
270 |
// Checkbox elements
|
271 |
printf( '<input type="checkbox" id="wpforms-%d-field_%d_%d" name="wpforms[fields][%d][]" value="%s" %s %s>',
|
272 |
-
$form_id,
|
273 |
$field['id'],
|
274 |
$key,
|
275 |
$field['id'],
|
@@ -277,12 +281,12 @@ class WPForms_Field_Checkbox extends WPForms_Field {
|
|
277 |
checked( '1', $selected, false ),
|
278 |
$field_required
|
279 |
);
|
280 |
-
|
281 |
printf( '<label class="wpforms-field-label-inline" for="wpforms-%d-field_%d_%d">%s</label>', $form_id, $field['id'], $key, wp_kses_post( $choice['label'] ) );
|
282 |
-
|
283 |
echo '</li>';
|
284 |
}
|
285 |
-
|
286 |
echo '</ul>';
|
287 |
}
|
288 |
|
@@ -350,7 +354,7 @@ class WPForms_Field_Checkbox extends WPForms_Field {
|
|
350 |
}
|
351 |
|
352 |
$data['value'] = !empty( $terms ) ? implode( "\n", array_map( 'sanitize_text_field', $terms ) ) : '';
|
353 |
-
|
354 |
} else {
|
355 |
|
356 |
// Normal processing, dynamic population is off
|
@@ -358,7 +362,7 @@ class WPForms_Field_Checkbox extends WPForms_Field {
|
|
358 |
// If show_values is true, that means values posted are the raw values
|
359 |
// and not the labels. So we need to get the label values.
|
360 |
if ( !empty( $field['show_values'] ) && '1' == $field['show_values'] ) {
|
361 |
-
|
362 |
$value = array();
|
363 |
|
364 |
foreach( $field_submit as $field_submit_single ) {
|
@@ -369,7 +373,7 @@ class WPForms_Field_Checkbox extends WPForms_Field {
|
|
369 |
}
|
370 |
}
|
371 |
}
|
372 |
-
|
373 |
$data['value'] = !empty( $value ) ? implode( "\n", array_map( 'sanitize_text_field', $value ) ) : '';
|
374 |
|
375 |
} else {
|
@@ -381,4 +385,4 @@ class WPForms_Field_Checkbox extends WPForms_Field {
|
|
381 |
wpforms()->process->fields[$field_id] = $data;
|
382 |
}
|
383 |
}
|
384 |
-
new WPForms_Field_Checkbox;
|
52 |
//--------------------------------------------------------------------//
|
53 |
// Basic field options
|
54 |
//--------------------------------------------------------------------//
|
55 |
+
|
56 |
// Options open markup
|
57 |
$this->field_option( 'basic-options', $field, array( 'markup' => 'open' ) );
|
58 |
+
|
59 |
// Label
|
60 |
$this->field_option( 'label', $field );
|
61 |
|
70 |
|
71 |
// Options close markup
|
72 |
$this->field_option( 'basic-options', $field, array( 'markup' => 'close' ) );
|
73 |
+
|
74 |
//--------------------------------------------------------------------//
|
75 |
// Advanced field options
|
76 |
//--------------------------------------------------------------------//
|
77 |
+
|
78 |
// Options open markup
|
79 |
$this->field_option( 'advanced-options', $field, array( 'markup' => 'open' ) );
|
80 |
+
|
81 |
// Show Values toggle option
|
82 |
$tooltip = __( 'Check this to manual set form field values.', 'wpforms' );
|
83 |
$show_values = isset( $field['show_values'] ) ? $field['show_values'] : '0';
|
120 |
// Field checkbox elements
|
121 |
echo '<ul class="primary-input">';
|
122 |
|
123 |
+
// Check to see if this field is configured for Dynamic Choices,
|
124 |
// either auto populating from a post type or a taxonomy.
|
125 |
if ( 'post_type' == $dynamic && !empty( $field['dynamic_post_type'] ) ) {
|
126 |
+
|
127 |
// Post type dynamic populating
|
128 |
$source = $field['dynamic_post_type'];
|
129 |
$total = wp_count_posts( $source );
|
130 |
$total = $total->publish;
|
131 |
+
$args = array(
|
132 |
+
'post_type' => $source,
|
133 |
+
'posts_per_page' => 20,
|
134 |
+
'orderby' => 'title',
|
135 |
'order' => 'ASC' ,
|
136 |
);
|
137 |
+
$posts = wpforms_get_hierarchical_object( apply_filters( 'wpforms_dynamic_choice_post_type_args', $args, $field, $this->form_id ), true );
|
138 |
$values = array();
|
139 |
|
140 |
foreach ( $posts as $post ) {
|
146 |
// Taxonomy dynamic populating
|
147 |
$source = $field['dynamic_taxonomy'];
|
148 |
$total = wp_count_terms( $source );
|
149 |
+
$args = array(
|
150 |
+
'taxonomy' => $source,
|
151 |
+
'hide_empty' => false,
|
152 |
'number' => 20
|
153 |
+
);
|
154 |
+
$terms = wpforms_get_hierarchical_object( apply_filters( 'wpforms_dynamic_choice_taxonomy_args', $args, $field, $this->form_id ), true );
|
155 |
$values = array();
|
156 |
|
157 |
foreach ( $terms as $term ) {
|
158 |
$values[] = array( 'label' => $term->name );
|
159 |
}
|
160 |
+
}
|
161 |
|
162 |
// Notify if currently empty
|
163 |
if ( empty( $values ) ) {
|
164 |
$values = array( 'label' => __( '(empty)', 'wpforms' ) );
|
165 |
}
|
166 |
+
|
167 |
// Individual checkbox options
|
168 |
foreach ( $values as $key => $value ) {
|
169 |
+
|
170 |
$default = isset( $value['default'] ) ? $value['default'] : '';
|
171 |
$selected = checked( '1', $default, false );
|
172 |
+
|
173 |
printf( '<li><input type="checkbox" %s disabled>%s</li>', $selected, $value['label'] );
|
174 |
}
|
175 |
|
194 |
* @param array $form_data
|
195 |
*/
|
196 |
public function field_display( $field, $field_atts, $form_data ) {
|
197 |
+
|
198 |
// Setup and sanitize the necessary data
|
199 |
$field = apply_filters( 'wpforms_checkbox_field_display', $field, $field_atts, $form_data );
|
200 |
$field_placeholder = !empty( $field['placeholder']) ? esc_attr( $field['placeholder'] ) : '';
|
201 |
$field_required = !empty( $field['required'] ) ? ' required' : '';
|
202 |
$field_class = implode( ' ', array_map( 'sanitize_html_class', $field_atts['input_class'] ) );
|
203 |
$field_id = implode( ' ', array_map( 'sanitize_html_class', $field_atts['input_id'] ) );
|
204 |
+
$field_data = '';
|
205 |
$form_id = $form_data['id'];
|
206 |
$dynamic = !empty( $field['dynamic_choices'] ) ? $field['dynamic_choices'] : false;
|
207 |
$choices = $field['choices'];
|
212 |
}
|
213 |
}
|
214 |
|
215 |
+
// Check to see if this field is configured for Dynamic Choices,
|
216 |
// either auto populating from a post type or a taxonomy.
|
217 |
if ( 'post_type' == $dynamic && !empty( $field['dynamic_post_type'] ) ) {
|
218 |
+
|
219 |
// Post type dynamic populating
|
220 |
$source = $field['dynamic_post_type'];
|
221 |
+
$args = array(
|
222 |
+
'post_type' => $source,
|
223 |
+
'posts_per_page' => -1,
|
224 |
+
'orderby' => 'title',
|
225 |
'order' => 'ASC' ,
|
226 |
);
|
227 |
+
|
228 |
+
$posts = wpforms_get_hierarchical_object( apply_filters( 'wpforms_dynamic_choice_post_type_args', $args, $field, $form_data['id'] ), true );
|
229 |
$choices = array();
|
230 |
|
231 |
foreach ( $posts as $post ) {
|
232 |
+
$choices[] = array(
|
233 |
'value' => $post->ID,
|
234 |
+
'label' => $post->post_title,
|
235 |
+
'depth' => isset( $post->depth ) ? absint( $post->depth ) : 1,
|
236 |
);
|
237 |
}
|
238 |
|
242 |
|
243 |
// Taxonomy dynamic populating
|
244 |
$source = $field['dynamic_taxonomy'];
|
245 |
+
$args = array(
|
246 |
+
'taxonomy' => $source,
|
247 |
+
'hide_empty' => false,
|
248 |
+
);
|
249 |
+
$terms = wpforms_get_hierarchical_object( apply_filters( 'wpforms_dynamic_choice_taxonomy_args', $args, $field, $form_data['id'] ), true );
|
250 |
$choices = array();
|
251 |
+
|
252 |
foreach ( $terms as $term ) {
|
253 |
+
$choices[] = array(
|
254 |
'value' => $term->term_id,
|
255 |
+
'label' => $term->name,
|
256 |
+
'depth' => isset( $term->depth ) ? absint( $term->depth ) : 1,
|
257 |
);
|
258 |
}
|
259 |
|
262 |
|
263 |
// List
|
264 |
printf( '<ul id="%s" class="%s" %s>', $field_id, $field_class, $field_data );
|
265 |
+
|
266 |
+
foreach( $choices as $key => $choice ) {
|
267 |
+
|
268 |
$selected = isset( $choice['default'] ) ? '1' : '0' ;
|
269 |
$val = isset( $field['show_values'] ) ? esc_attr( $choice['value'] ) : esc_attr( $choice['label'] );
|
270 |
+
$depth = isset( $choice['depth'] ) ? absint( $choice['depth'] ) : 1;
|
271 |
+
|
272 |
+
printf( '<li class="choice-%d depth-%d">', $key, $depth );
|
273 |
+
|
274 |
// Checkbox elements
|
275 |
printf( '<input type="checkbox" id="wpforms-%d-field_%d_%d" name="wpforms[fields][%d][]" value="%s" %s %s>',
|
276 |
+
$form_id,
|
277 |
$field['id'],
|
278 |
$key,
|
279 |
$field['id'],
|
281 |
checked( '1', $selected, false ),
|
282 |
$field_required
|
283 |
);
|
284 |
+
|
285 |
printf( '<label class="wpforms-field-label-inline" for="wpforms-%d-field_%d_%d">%s</label>', $form_id, $field['id'], $key, wp_kses_post( $choice['label'] ) );
|
286 |
+
|
287 |
echo '</li>';
|
288 |
}
|
289 |
+
|
290 |
echo '</ul>';
|
291 |
}
|
292 |
|
354 |
}
|
355 |
|
356 |
$data['value'] = !empty( $terms ) ? implode( "\n", array_map( 'sanitize_text_field', $terms ) ) : '';
|
357 |
+
|
358 |
} else {
|
359 |
|
360 |
// Normal processing, dynamic population is off
|
362 |
// If show_values is true, that means values posted are the raw values
|
363 |
// and not the labels. So we need to get the label values.
|
364 |
if ( !empty( $field['show_values'] ) && '1' == $field['show_values'] ) {
|
365 |
+
|
366 |
$value = array();
|
367 |
|
368 |
foreach( $field_submit as $field_submit_single ) {
|
373 |
}
|
374 |
}
|
375 |
}
|
376 |
+
|
377 |
$data['value'] = !empty( $value ) ? implode( "\n", array_map( 'sanitize_text_field', $value ) ) : '';
|
378 |
|
379 |
} else {
|
385 |
wpforms()->process->fields[$field_id] = $data;
|
386 |
}
|
387 |
}
|
388 |
+
new WPForms_Field_Checkbox;
|
includes/fields/class-radio.php
CHANGED
@@ -52,13 +52,13 @@ class WPForms_Field_Radio extends WPForms_Field {
|
|
52 |
//--------------------------------------------------------------------//
|
53 |
// Basic field options
|
54 |
//--------------------------------------------------------------------//
|
55 |
-
|
56 |
// Options open markup
|
57 |
$this->field_option( 'basic-options', $field, array( 'markup' => 'open' ) );
|
58 |
-
|
59 |
// Label
|
60 |
$this->field_option( 'label', $field );
|
61 |
-
|
62 |
// Choices
|
63 |
$this->field_option( 'choices', $field );
|
64 |
|
@@ -70,11 +70,11 @@ class WPForms_Field_Radio extends WPForms_Field {
|
|
70 |
|
71 |
// Options close markup
|
72 |
$this->field_option( 'basic-options', $field, array( 'markup' => 'close' ) );
|
73 |
-
|
74 |
//--------------------------------------------------------------------//
|
75 |
// Advanced field options
|
76 |
//--------------------------------------------------------------------//
|
77 |
-
|
78 |
// Options open markup
|
79 |
$this->field_option( 'advanced-options', $field, array( 'markup' => 'open' ) );
|
80 |
|
@@ -116,25 +116,25 @@ class WPForms_Field_Radio extends WPForms_Field {
|
|
116 |
|
117 |
// Label
|
118 |
$this->field_preview_option( 'label', $field );
|
119 |
-
|
120 |
// Field radio elements
|
121 |
echo '<ul class="primary-input">';
|
122 |
|
123 |
-
// Check to see if this field is configured for Dynamic Choices,
|
124 |
// either auto populating from a post type or a taxonomy.
|
125 |
if ( 'post_type' == $dynamic && !empty( $field['dynamic_post_type'] ) ) {
|
126 |
-
|
127 |
// Post type dynamic populating
|
128 |
$source = $field['dynamic_post_type'];
|
129 |
$total = wp_count_posts( $source );
|
130 |
$total = $total->publish;
|
131 |
-
$args = array(
|
132 |
-
'post_type' => $source,
|
133 |
-
'posts_per_page' => 20,
|
134 |
-
'orderby' => 'title',
|
135 |
'order' => 'ASC' ,
|
136 |
);
|
137 |
-
$posts =
|
138 |
$values = array();
|
139 |
|
140 |
foreach ( $posts as $post ) {
|
@@ -146,12 +146,12 @@ class WPForms_Field_Radio extends WPForms_Field {
|
|
146 |
// Taxonomy dynamic populating
|
147 |
$source = $field['dynamic_taxonomy'];
|
148 |
$total = wp_count_terms( $source );
|
149 |
-
$args = array(
|
150 |
-
'taxonomy' => $source,
|
151 |
-
'hide_empty' => false,
|
152 |
'number' => 20
|
153 |
-
);
|
154 |
-
$terms =
|
155 |
$values = array();
|
156 |
|
157 |
foreach ( $terms as $term ) {
|
@@ -169,7 +169,7 @@ class WPForms_Field_Radio extends WPForms_Field {
|
|
169 |
|
170 |
$default = isset( $value['default'] ) ? $value['default'] : '';
|
171 |
$selected = checked( '1', $default, false );
|
172 |
-
|
173 |
printf( '<li><input type="radio" %s disabled>%s</li>', $selected, $value['label'] );
|
174 |
}
|
175 |
|
@@ -194,7 +194,7 @@ class WPForms_Field_Radio extends WPForms_Field {
|
|
194 |
* @param array $form_data
|
195 |
*/
|
196 |
public function field_display( $field, $field_atts, $form_data ) {
|
197 |
-
|
198 |
// Setup and sanitize the necessary data
|
199 |
$field = apply_filters( 'wpforms_radio_field_display', $field, $field_atts, $form_data );
|
200 |
$field_required = !empty( $field['required'] ) ? ' required' : '';
|
@@ -211,25 +211,26 @@ class WPForms_Field_Radio extends WPForms_Field {
|
|
211 |
}
|
212 |
}
|
213 |
|
214 |
-
// Check to see if this field is configured for Dynamic Choices,
|
215 |
// either auto populating from a post type or a taxonomy.
|
216 |
if ( 'post_type' == $dynamic && !empty( $field['dynamic_post_type'] ) ) {
|
217 |
-
|
218 |
// Post type dynamic populating
|
219 |
$source = $field['dynamic_post_type'];
|
220 |
-
$args = array(
|
221 |
-
'post_type' => $source,
|
222 |
-
'posts_per_page' => -1,
|
223 |
-
'orderby' => 'title',
|
224 |
'order' => 'ASC' ,
|
225 |
);
|
226 |
-
$posts =
|
227 |
$choices = array();
|
228 |
|
229 |
foreach ( $posts as $post ) {
|
230 |
-
$choices[] = array(
|
231 |
'value' => $post->ID,
|
232 |
-
'label' => $post->post_title
|
|
|
233 |
);
|
234 |
}
|
235 |
|
@@ -239,17 +240,18 @@ class WPForms_Field_Radio extends WPForms_Field {
|
|
239 |
|
240 |
// Taxonomy dynamic populating
|
241 |
$source = $field['dynamic_taxonomy'];
|
242 |
-
$args = array(
|
243 |
-
'taxonomy' => $source,
|
244 |
-
'hide_empty' => false,
|
245 |
-
);
|
246 |
-
$terms =
|
247 |
$choices = array();
|
248 |
-
|
249 |
foreach ( $terms as $term ) {
|
250 |
-
$choices[] = array(
|
251 |
'value' => $term->term_id,
|
252 |
-
'label' => $term->name
|
|
|
253 |
);
|
254 |
}
|
255 |
|
@@ -258,17 +260,18 @@ class WPForms_Field_Radio extends WPForms_Field {
|
|
258 |
|
259 |
// List
|
260 |
printf( '<ul id="%s" class="%s" %s>', $field_id, $field_class, $field_data );
|
261 |
-
|
262 |
foreach( $choices as $key => $choice ) {
|
263 |
-
|
264 |
$selected = isset( $choice['default'] ) ? '1' : '0';
|
265 |
$val = isset( $field['show_values'] ) ? esc_attr( $choice['value'] ) : esc_attr( $choice['label'] );
|
266 |
-
|
267 |
-
|
268 |
-
|
|
|
269 |
// Radio elements
|
270 |
printf( '<input type="radio" id="wpforms-%s-field_%d_%d" name="wpforms[fields][%d]" value="%s" %s %s>',
|
271 |
-
$form_id,
|
272 |
$field['id'],
|
273 |
$key,
|
274 |
$field['id'],
|
@@ -276,9 +279,9 @@ class WPForms_Field_Radio extends WPForms_Field {
|
|
276 |
checked( '1', $selected, false ),
|
277 |
$field_required
|
278 |
);
|
279 |
-
|
280 |
printf( '<label class="wpforms-field-label-inline" for="wpforms-%d-field_%d_%d">%s</label>', $form_id, $field['id'], $key, wp_kses_post( $choice['label'] ) );
|
281 |
-
|
282 |
echo '</li>';
|
283 |
}
|
284 |
|
@@ -332,7 +335,7 @@ class WPForms_Field_Radio extends WPForms_Field {
|
|
332 |
if ( ! is_wp_error( $term ) && !empty( $term ) ) {
|
333 |
$data['value'] = esc_html( $term->name );
|
334 |
}
|
335 |
-
|
336 |
} else {
|
337 |
|
338 |
// Normal processing, dynamic population is off
|
@@ -340,7 +343,7 @@ class WPForms_Field_Radio extends WPForms_Field {
|
|
340 |
// If show_values is true, that means values posted are the raw values
|
341 |
// and not the labels. So we need to get the label values.
|
342 |
if ( !empty( $field['show_values'] ) && '1' == $field['show_values'] ) {
|
343 |
-
|
344 |
foreach ( $field['choices'] as $choice ) {
|
345 |
if ( $choice['value'] === $field_submit ) {
|
346 |
$value = $choice['label'];
|
@@ -359,4 +362,4 @@ class WPForms_Field_Radio extends WPForms_Field {
|
|
359 |
wpforms()->process->fields[$field_id] = $data;
|
360 |
}
|
361 |
}
|
362 |
-
new WPForms_Field_Radio;
|
52 |
//--------------------------------------------------------------------//
|
53 |
// Basic field options
|
54 |
//--------------------------------------------------------------------//
|
55 |
+
|
56 |
// Options open markup
|
57 |
$this->field_option( 'basic-options', $field, array( 'markup' => 'open' ) );
|
58 |
+
|
59 |
// Label
|
60 |
$this->field_option( 'label', $field );
|
61 |
+
|
62 |
// Choices
|
63 |
$this->field_option( 'choices', $field );
|
64 |
|
70 |
|
71 |
// Options close markup
|
72 |
$this->field_option( 'basic-options', $field, array( 'markup' => 'close' ) );
|
73 |
+
|
74 |
//--------------------------------------------------------------------//
|
75 |
// Advanced field options
|
76 |
//--------------------------------------------------------------------//
|
77 |
+
|
78 |
// Options open markup
|
79 |
$this->field_option( 'advanced-options', $field, array( 'markup' => 'open' ) );
|
80 |
|
116 |
|
117 |
// Label
|
118 |
$this->field_preview_option( 'label', $field );
|
119 |
+
|
120 |
// Field radio elements
|
121 |
echo '<ul class="primary-input">';
|
122 |
|
123 |
+
// Check to see if this field is configured for Dynamic Choices,
|
124 |
// either auto populating from a post type or a taxonomy.
|
125 |
if ( 'post_type' == $dynamic && !empty( $field['dynamic_post_type'] ) ) {
|
126 |
+
|
127 |
// Post type dynamic populating
|
128 |
$source = $field['dynamic_post_type'];
|
129 |
$total = wp_count_posts( $source );
|
130 |
$total = $total->publish;
|
131 |
+
$args = array(
|
132 |
+
'post_type' => $source,
|
133 |
+
'posts_per_page' => 20,
|
134 |
+
'orderby' => 'title',
|
135 |
'order' => 'ASC' ,
|
136 |
);
|
137 |
+
$posts = wpforms_get_hierarchical_object( apply_filters( 'wpforms_dynamic_choice_post_type_args', $args, $field, $this->form_id ), true );
|
138 |
$values = array();
|
139 |
|
140 |
foreach ( $posts as $post ) {
|
146 |
// Taxonomy dynamic populating
|
147 |
$source = $field['dynamic_taxonomy'];
|
148 |
$total = wp_count_terms( $source );
|
149 |
+
$args = array(
|
150 |
+
'taxonomy' => $source,
|
151 |
+
'hide_empty' => false,
|
152 |
'number' => 20
|
153 |
+
);
|
154 |
+
$terms = wpforms_get_hierarchical_object( apply_filters( 'wpforms_dynamic_choice_taxonomy_args', $args, $field, $this->form_id ), true );
|
155 |
$values = array();
|
156 |
|
157 |
foreach ( $terms as $term ) {
|
169 |
|
170 |
$default = isset( $value['default'] ) ? $value['default'] : '';
|
171 |
$selected = checked( '1', $default, false );
|
172 |
+
|
173 |
printf( '<li><input type="radio" %s disabled>%s</li>', $selected, $value['label'] );
|
174 |
}
|
175 |
|
194 |
* @param array $form_data
|
195 |
*/
|
196 |
public function field_display( $field, $field_atts, $form_data ) {
|
197 |
+
|
198 |
// Setup and sanitize the necessary data
|
199 |
$field = apply_filters( 'wpforms_radio_field_display', $field, $field_atts, $form_data );
|
200 |
$field_required = !empty( $field['required'] ) ? ' required' : '';
|
211 |
}
|
212 |
}
|
213 |
|
214 |
+
// Check to see if this field is configured for Dynamic Choices,
|
215 |
// either auto populating from a post type or a taxonomy.
|
216 |
if ( 'post_type' == $dynamic && !empty( $field['dynamic_post_type'] ) ) {
|
217 |
+
|
218 |
// Post type dynamic populating
|
219 |
$source = $field['dynamic_post_type'];
|
220 |
+
$args = array(
|
221 |
+
'post_type' => $source,
|
222 |
+
'posts_per_page' => -1,
|
223 |
+
'orderby' => 'title',
|
224 |
'order' => 'ASC' ,
|
225 |
);
|
226 |
+
$posts = wpforms_get_hierarchical_object( apply_filters( 'wpforms_dynamic_choice_post_type_args', $args, $field, $form_data['id'] ), true );
|
227 |
$choices = array();
|
228 |
|
229 |
foreach ( $posts as $post ) {
|
230 |
+
$choices[] = array(
|
231 |
'value' => $post->ID,
|
232 |
+
'label' => $post->post_title,
|
233 |
+
'depth' => isset( $post->depth ) ? absint( $post->depth ) : 1,
|
234 |
);
|
235 |
}
|
236 |
|
240 |
|
241 |
// Taxonomy dynamic populating
|
242 |
$source = $field['dynamic_taxonomy'];
|
243 |
+
$args = array(
|
244 |
+
'taxonomy' => $source,
|
245 |
+
'hide_empty' => false,
|
246 |
+
);
|
247 |
+
$terms = wpforms_get_hierarchical_object( apply_filters( 'wpforms_dynamic_choice_taxonomy_args', $args, $field, $form_data['id'] ), true );
|
248 |
$choices = array();
|
249 |
+
|
250 |
foreach ( $terms as $term ) {
|
251 |
+
$choices[] = array(
|
252 |
'value' => $term->term_id,
|
253 |
+
'label' => $term->name,
|
254 |
+
'depth' => isset( $term->depth ) ? absint( $term->depth ) : 1,
|
255 |
);
|
256 |
}
|
257 |
|
260 |
|
261 |
// List
|
262 |
printf( '<ul id="%s" class="%s" %s>', $field_id, $field_class, $field_data );
|
263 |
+
|
264 |
foreach( $choices as $key => $choice ) {
|
265 |
+
|
266 |
$selected = isset( $choice['default'] ) ? '1' : '0';
|
267 |
$val = isset( $field['show_values'] ) ? esc_attr( $choice['value'] ) : esc_attr( $choice['label'] );
|
268 |
+
$depth = isset( $choice['depth'] ) ? absint( $choice['depth'] ) : 1;
|
269 |
+
|
270 |
+
printf( '<li class="choice-%d depth-%d">', $key, $depth );
|
271 |
+
|
272 |
// Radio elements
|
273 |
printf( '<input type="radio" id="wpforms-%s-field_%d_%d" name="wpforms[fields][%d]" value="%s" %s %s>',
|
274 |
+
$form_id,
|
275 |
$field['id'],
|
276 |
$key,
|
277 |
$field['id'],
|
279 |
checked( '1', $selected, false ),
|
280 |
$field_required
|
281 |
);
|
282 |
+
|
283 |
printf( '<label class="wpforms-field-label-inline" for="wpforms-%d-field_%d_%d">%s</label>', $form_id, $field['id'], $key, wp_kses_post( $choice['label'] ) );
|
284 |
+
|
285 |
echo '</li>';
|
286 |
}
|
287 |
|
335 |
if ( ! is_wp_error( $term ) && !empty( $term ) ) {
|
336 |
$data['value'] = esc_html( $term->name );
|
337 |
}
|
338 |
+
|
339 |
} else {
|
340 |
|
341 |
// Normal processing, dynamic population is off
|
343 |
// If show_values is true, that means values posted are the raw values
|
344 |
// and not the labels. So we need to get the label values.
|
345 |
if ( !empty( $field['show_values'] ) && '1' == $field['show_values'] ) {
|
346 |
+
|
347 |
foreach ( $field['choices'] as $choice ) {
|
348 |
if ( $choice['value'] === $field_submit ) {
|
349 |
$value = $choice['label'];
|
362 |
wpforms()->process->fields[$field_id] = $data;
|
363 |
}
|
364 |
}
|
365 |
+
new WPForms_Field_Radio;
|
includes/fields/class-select.php
CHANGED
@@ -141,7 +141,7 @@ class WPForms_Field_Select extends WPForms_Field {
|
|
141 |
'orderby' => 'title',
|
142 |
'order' => 'ASC' ,
|
143 |
);
|
144 |
-
$posts =
|
145 |
$values = array();
|
146 |
|
147 |
foreach ( $posts as $post ) {
|
@@ -157,7 +157,7 @@ class WPForms_Field_Select extends WPForms_Field {
|
|
157 |
'hide_empty' => false,
|
158 |
'number' => 1
|
159 |
);
|
160 |
-
$terms =
|
161 |
$values = array();
|
162 |
|
163 |
foreach ( $terms as $term ) {
|
@@ -245,7 +245,7 @@ class WPForms_Field_Select extends WPForms_Field {
|
|
245 |
'orderby' => 'title',
|
246 |
'order' => 'ASC' ,
|
247 |
);
|
248 |
-
$posts =
|
249 |
$choices = array();
|
250 |
|
251 |
foreach ( $posts as $post ) {
|
@@ -265,7 +265,7 @@ class WPForms_Field_Select extends WPForms_Field {
|
|
265 |
'taxonomy' => $source,
|
266 |
'hide_empty' => false,
|
267 |
);
|
268 |
-
$terms =
|
269 |
$choices = array();
|
270 |
|
271 |
foreach ( $terms as $term ) {
|
@@ -364,4 +364,4 @@ class WPForms_Field_Select extends WPForms_Field {
|
|
364 |
wpforms()->process->fields[$field_id] = $data;
|
365 |
}
|
366 |
}
|
367 |
-
new WPForms_Field_Select;
|
141 |
'orderby' => 'title',
|
142 |
'order' => 'ASC' ,
|
143 |
);
|
144 |
+
$posts = wpforms_get_hierarchical_object( apply_filters( 'wpforms_dynamic_choice_post_type_args', $args, $field, $this->form_id ), true );
|
145 |
$values = array();
|
146 |
|
147 |
foreach ( $posts as $post ) {
|
157 |
'hide_empty' => false,
|
158 |
'number' => 1
|
159 |
);
|
160 |
+
$terms = wpforms_get_hierarchical_object( apply_filters( 'wpforms_dynamic_choice_taxonomy_args', $args, $field, $this->form_id ), true );
|
161 |
$values = array();
|
162 |
|
163 |
foreach ( $terms as $term ) {
|
245 |
'orderby' => 'title',
|
246 |
'order' => 'ASC' ,
|
247 |
);
|
248 |
+
$posts = wpforms_get_hierarchical_object( apply_filters( 'wpforms_dynamic_choice_post_type_args', $args, $field, $form_data['id'] ), true );
|
249 |
$choices = array();
|
250 |
|
251 |
foreach ( $posts as $post ) {
|
265 |
'taxonomy' => $source,
|
266 |
'hide_empty' => false,
|
267 |
);
|
268 |
+
$terms = wpforms_get_hierarchical_object( apply_filters( 'wpforms_dynamic_choice_taxonomy_args', $args, $field, $form_data['id'] ), true );
|
269 |
$choices = array();
|
270 |
|
271 |
foreach ( $terms as $term ) {
|
364 |
wpforms()->process->fields[$field_id] = $data;
|
365 |
}
|
366 |
}
|
367 |
+
new WPForms_Field_Select;
|
includes/functions.php
CHANGED
@@ -106,15 +106,27 @@ function wpforms_object_to_array( $object ) {
|
|
106 |
* @since 1.0.0
|
107 |
* @return mixed
|
108 |
*/
|
109 |
-
function wpforms_setting( $key, $default = false, $option = 'wpforms_settings'
|
110 |
|
|
|
111 |
$options = get_option( $option, false );
|
112 |
-
|
113 |
-
$value = is_array( $options ) && ! empty( $options[ $key ] ) ? $options[ $key ] : $default;
|
114 |
|
115 |
return $value;
|
116 |
}
|
117 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
118 |
/**
|
119 |
* Check if form provided contains the specified field type.
|
120 |
*
|
@@ -952,7 +964,8 @@ function wpforms_get_ip() {
|
|
952 |
* @return string
|
953 |
*/
|
954 |
function wpforms_sanitize_hex_color( $color ) {
|
955 |
-
|
|
|
956 |
return '';
|
957 |
}
|
958 |
|
@@ -1007,6 +1020,185 @@ function wpforms_light_or_dark( $color, $dark = '#000000', $light = '#FFFFFF' )
|
|
1007 |
return $brightness > 155 ? $dark : $light;
|
1008 |
}
|
1009 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1010 |
/**
|
1011 |
* Debug mode bool.
|
1012 |
*
|
@@ -1119,20 +1311,6 @@ function wpforms_log( $title = '', $message = '', $args = array() ) {
|
|
1119 |
wpforms()->logs->add( $title, $message, $parent, $parent, $meta );
|
1120 |
}
|
1121 |
|
1122 |
-
/**
|
1123 |
-
* Insert element into an array at a specific point a preserve the key.
|
1124 |
-
*
|
1125 |
-
* @since 1.3.3
|
1126 |
-
* @param array $array
|
1127 |
-
* @param array $values
|
1128 |
-
* @param int $offset
|
1129 |
-
* @return array
|
1130 |
-
*/
|
1131 |
-
function wpforms_array_insert( $array, $values, $offset ) {
|
1132 |
-
|
1133 |
-
return array_slice( $array, 0, $offset, true ) + $values + array_slice( $array, $offset, NULL, true );
|
1134 |
-
}
|
1135 |
-
|
1136 |
/**
|
1137 |
* Array replace recursive, for PHP 5.2.
|
1138 |
*
|
106 |
* @since 1.0.0
|
107 |
* @return mixed
|
108 |
*/
|
109 |
+
function wpforms_setting( $key, $default = false, $option = 'wpforms_settings' ) {
|
110 |
|
111 |
+
$key = wpforms_sanitize_key( $key );
|
112 |
$options = get_option( $option, false );
|
113 |
+
$value = is_array( $options ) && ! empty( $options[ $key ] ) ? $options[ $key ] : $default;
|
|
|
114 |
|
115 |
return $value;
|
116 |
}
|
117 |
|
118 |
+
/**
|
119 |
+
* Sanitize key, primarily used for looking up options.
|
120 |
+
*
|
121 |
+
* @since 1.3.9
|
122 |
+
* @param string $key
|
123 |
+
* @return string
|
124 |
+
*/
|
125 |
+
function wpforms_sanitize_key( $key = '' ) {
|
126 |
+
|
127 |
+
return preg_replace( '/[^a-zA-Z0-9_\-\.\:\/]/', '', $key );
|
128 |
+
}
|
129 |
+
|
130 |
/**
|
131 |
* Check if form provided contains the specified field type.
|
132 |
*
|
964 |
* @return string
|
965 |
*/
|
966 |
function wpforms_sanitize_hex_color( $color ) {
|
967 |
+
|
968 |
+
if ( empty( $color ) ) {
|
969 |
return '';
|
970 |
}
|
971 |
|
1020 |
return $brightness > 155 ? $dark : $light;
|
1021 |
}
|
1022 |
|
1023 |
+
/**
|
1024 |
+
* Builds and returns either a taxonomy or post type object that is
|
1025 |
+
* nests to accomodate any hierarchy.
|
1026 |
+
*
|
1027 |
+
* @since 1.3.9
|
1028 |
+
* @param array $args
|
1029 |
+
* @param bool $flat
|
1030 |
+
* @return array
|
1031 |
+
*/
|
1032 |
+
function wpforms_get_hierarchical_object( $args = array(), $flat = false ) {
|
1033 |
+
|
1034 |
+
if ( empty( $args['taxonomy'] ) && empty( $args['post_type'] ) ) {
|
1035 |
+
return false;
|
1036 |
+
}
|
1037 |
+
|
1038 |
+
$children = array();
|
1039 |
+
$parents = array();
|
1040 |
+
|
1041 |
+
if ( ! empty( $args['post_type'] ) ) {
|
1042 |
+
|
1043 |
+
$defaults = array(
|
1044 |
+
'posts_per_page' => -1,
|
1045 |
+
'orderby' => 'title',
|
1046 |
+
'order' => 'ASC',
|
1047 |
+
);
|
1048 |
+
$args = wp_parse_args( $args, $defaults );
|
1049 |
+
$items = get_posts( $args );
|
1050 |
+
$ref_parent = 'post_parent';
|
1051 |
+
$ref_id = 'ID';
|
1052 |
+
$ref_name = 'post_title';
|
1053 |
+
|
1054 |
+
} elseif ( ! empty( $args['taxonomy'] ) ) {
|
1055 |
+
|
1056 |
+
$defaults = array(
|
1057 |
+
'hide_empty' => false,
|
1058 |
+
);
|
1059 |
+
$args = wp_parse_args( $args, $defaults );
|
1060 |
+
$items = get_terms( $args );
|
1061 |
+
$ref_parent = 'parent';
|
1062 |
+
$ref_id = 'term_id';
|
1063 |
+
$ref_name = 'name';
|
1064 |
+
}
|
1065 |
+
|
1066 |
+
if ( empty( $items ) || is_wp_error( $items ) ) {
|
1067 |
+
return false;
|
1068 |
+
}
|
1069 |
+
|
1070 |
+
foreach ( $items as $item ) {
|
1071 |
+
if ( $item->{$ref_parent} ) {
|
1072 |
+
$children[ $item->{$ref_id} ] = $item;
|
1073 |
+
$children[ $item->{$ref_id} ]->ID = (int) $item->{$ref_id};
|
1074 |
+
} else {
|
1075 |
+
$parents[ $item->{$ref_id} ] = $item;
|
1076 |
+
$parents[ $item->{$ref_id} ]->ID = (int) $item->{$ref_id};
|
1077 |
+
}
|
1078 |
+
}
|
1079 |
+
|
1080 |
+
while ( count ( $children ) >= 1 ) {
|
1081 |
+
foreach ( $children as $child ) {
|
1082 |
+
_wpforms_get_hierarchical_object_search( $child, $parents, $children, $ref_parent );
|
1083 |
+
}
|
1084 |
+
}
|
1085 |
+
|
1086 |
+
if ( $flat ) {
|
1087 |
+
$parents_flat = array();
|
1088 |
+
_wpforms_get_hierarchical_object_flatten( $parents, $parents_flat, $ref_name );
|
1089 |
+
return $parents_flat;
|
1090 |
+
}
|
1091 |
+
|
1092 |
+
return $parents;
|
1093 |
+
}
|
1094 |
+
|
1095 |
+
/**
|
1096 |
+
* Searches a given array and finds the parent of the provided object.
|
1097 |
+
*
|
1098 |
+
* @since 1.3.9
|
1099 |
+
* @param array $child
|
1100 |
+
* @param array $parents
|
1101 |
+
* @param array $children
|
1102 |
+
* @param string $ref_parent
|
1103 |
+
*/
|
1104 |
+
function _wpforms_get_hierarchical_object_search( $child, &$parents, &$children, $ref_parent ) {
|
1105 |
+
|
1106 |
+
foreach ( $parents as $id => $parent ) {
|
1107 |
+
|
1108 |
+
if ( $parent->ID === $child->{$ref_parent} ) {
|
1109 |
+
|
1110 |
+
if ( empty( $parent->children ) ) {
|
1111 |
+
$parents[ $id ]->children = array( $child->ID => $child );
|
1112 |
+
} else {
|
1113 |
+
$parents[ $id ]->children[ $child->ID ] = $child;
|
1114 |
+
}
|
1115 |
+
|
1116 |
+
unset( $children[ $child->ID ] );
|
1117 |
+
|
1118 |
+
} else if ( ! empty( $parent->children ) && is_array( $parent->children ) ) {
|
1119 |
+
|
1120 |
+
_wpforms_get_hierarchical_object_search( $child, $parent->children, $children, $ref_parent );
|
1121 |
+
}
|
1122 |
+
}
|
1123 |
+
}
|
1124 |
+
|
1125 |
+
/**
|
1126 |
+
* Flattens a heirarchical object.
|
1127 |
+
*
|
1128 |
+
* @since 1.3.9
|
1129 |
+
* @param array $array
|
1130 |
+
* @param array $output
|
1131 |
+
* @param string $ref_name
|
1132 |
+
* @param int $level
|
1133 |
+
*/
|
1134 |
+
function _wpforms_get_hierarchical_object_flatten( $array, &$output, $ref_name = 'name', $level = 0 ) {
|
1135 |
+
|
1136 |
+
foreach ( $array as $key => $item ) {
|
1137 |
+
|
1138 |
+
$indicator = apply_filters( 'wpforms_hierarchical_object_indicator', '—' );
|
1139 |
+
$item->{$ref_name} = str_repeat( $indicator, $level ) . ' ' . $item->{$ref_name};
|
1140 |
+
$item->depth = $level + 1;
|
1141 |
+
$output[ $item->ID ] = $item;
|
1142 |
+
|
1143 |
+
if ( ! empty( $item->children ) ) {
|
1144 |
+
|
1145 |
+
_wpforms_get_hierarchical_object_flatten( $item->children, $output, $ref_name, $level + 1);
|
1146 |
+
unset( $output[ $item->ID ]->children );
|
1147 |
+
}
|
1148 |
+
}
|
1149 |
+
}
|
1150 |
+
|
1151 |
+
/**
|
1152 |
+
* Insert an array into another array before/after a certain key.
|
1153 |
+
*
|
1154 |
+
* @since 1.3.9
|
1155 |
+
* @link https://gist.github.com/scribu/588429
|
1156 |
+
* @param array $array The initial array
|
1157 |
+
* @param array $pairs The array to insert
|
1158 |
+
* @param string $key The certain key
|
1159 |
+
* @param string $position Wether to insert the array before or after the key
|
1160 |
+
* @return array
|
1161 |
+
*/
|
1162 |
+
function wpforms_array_insert( $array, $pairs, $key, $position = 'after' ) {
|
1163 |
+
|
1164 |
+
$key_pos = array_search( $key, array_keys( $array ) );
|
1165 |
+
if ( 'after' == $position ) {
|
1166 |
+
$key_pos++;
|
1167 |
+
}
|
1168 |
+
|
1169 |
+
if ( false !== $key_pos ) {
|
1170 |
+
$result = array_slice( $array, 0, $key_pos );
|
1171 |
+
$result = array_merge( $result, $pairs );
|
1172 |
+
$result = array_merge( $result, array_slice( $array, $key_pos ) );
|
1173 |
+
} else {
|
1174 |
+
$result = array_merge( $array, $pairs );
|
1175 |
+
}
|
1176 |
+
|
1177 |
+
return $result;
|
1178 |
+
}
|
1179 |
+
|
1180 |
+
/**
|
1181 |
+
* Recursively remove empty strings from an array.
|
1182 |
+
*
|
1183 |
+
* @since 1.3.9.1
|
1184 |
+
* @param array $data
|
1185 |
+
* @return array
|
1186 |
+
*/
|
1187 |
+
function wpforms_array_remove_empty_strings( $data ) {
|
1188 |
+
|
1189 |
+
foreach ( $data as $key => $value ) {
|
1190 |
+
if ( is_array( $value ) ) {
|
1191 |
+
$data[ $key ] = wpforms_array_remove_empty_strings( $data[ $key ] );
|
1192 |
+
}
|
1193 |
+
|
1194 |
+
if ( '' === $data[ $key ] ) {
|
1195 |
+
unset( $data[ $key ] );
|
1196 |
+
}
|
1197 |
+
}
|
1198 |
+
|
1199 |
+
return $data;
|
1200 |
+
}
|
1201 |
+
|
1202 |
/**
|
1203 |
* Debug mode bool.
|
1204 |
*
|
1311 |
wpforms()->logs->add( $title, $message, $parent, $parent, $meta );
|
1312 |
}
|
1313 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1314 |
/**
|
1315 |
* Array replace recursive, for PHP 5.2.
|
1316 |
*
|
includes/providers/class-base.php
CHANGED
@@ -959,7 +959,7 @@ abstract class WPForms_Provider {
|
|
959 |
public function integrations_tab_disconnect() {
|
960 |
|
961 |
// Run a security check
|
962 |
-
check_ajax_referer( 'wpforms-
|
963 |
|
964 |
// Check for permissions
|
965 |
if ( !current_user_can( apply_filters( 'wpforms_manage_cap', 'manage_options' ) ) ) {
|
@@ -994,7 +994,7 @@ abstract class WPForms_Provider {
|
|
994 |
return;
|
995 |
|
996 |
// Run a security check
|
997 |
-
check_ajax_referer( 'wpforms-
|
998 |
|
999 |
// Check for permissions
|
1000 |
if ( !current_user_can( apply_filters( 'wpforms_manage_cap', 'manage_options' ) ) ) {
|
@@ -1079,10 +1079,10 @@ abstract class WPForms_Provider {
|
|
1079 |
<?php
|
1080 |
if ( !empty( $accounts ) ) {
|
1081 |
foreach ( $accounts as $key => $account ) {
|
1082 |
-
echo '<li>';
|
1083 |
echo '<span class="label">' . esc_html( $account['label'] ) . '</span>';
|
1084 |
-
echo '<span class="date">' . __( 'Connected on: ', 'wpforms' ) . date( get_option( 'date_format', $account['date'] )
|
1085 |
-
echo '<a href="#" data-provider="' . $slug . '" data-key="' . $key . '">' . __( 'Disconnect ', 'wpforms' ) . '</a>';
|
1086 |
echo '</li>';
|
1087 |
}
|
1088 |
}
|
@@ -1091,7 +1091,7 @@ abstract class WPForms_Provider {
|
|
1091 |
</div>
|
1092 |
|
1093 |
<p class="wpforms-settings-provider-accounts-toggle">
|
1094 |
-
<a class="
|
1095 |
</p>
|
1096 |
|
1097 |
<div class="wpforms-settings-provider-accounts-connect">
|
@@ -1103,7 +1103,7 @@ abstract class WPForms_Provider {
|
|
1103 |
<?php $this->integrations_tab_new_form(); ?>
|
1104 |
</p>
|
1105 |
|
1106 |
-
<
|
1107 |
</form>
|
1108 |
</div>
|
1109 |
|
959 |
public function integrations_tab_disconnect() {
|
960 |
|
961 |
// Run a security check
|
962 |
+
check_ajax_referer( 'wpforms-admin', 'nonce' );
|
963 |
|
964 |
// Check for permissions
|
965 |
if ( !current_user_can( apply_filters( 'wpforms_manage_cap', 'manage_options' ) ) ) {
|
994 |
return;
|
995 |
|
996 |
// Run a security check
|
997 |
+
check_ajax_referer( 'wpforms-admin', 'nonce' );
|
998 |
|
999 |
// Check for permissions
|
1000 |
if ( !current_user_can( apply_filters( 'wpforms_manage_cap', 'manage_options' ) ) ) {
|
1079 |
<?php
|
1080 |
if ( !empty( $accounts ) ) {
|
1081 |
foreach ( $accounts as $key => $account ) {
|
1082 |
+
echo '<li class="wpforms-clear">';
|
1083 |
echo '<span class="label">' . esc_html( $account['label'] ) . '</span>';
|
1084 |
+
echo '<span class="date">' . __( 'Connected on: ', 'wpforms' ) . date( get_option( 'date_format' ), $account['date'] ) . '</span>';
|
1085 |
+
echo '<span class="remove"><a href="#" data-provider="' . $slug . '" data-key="' . $key . '">' . __( 'Disconnect ', 'wpforms' ) . '</a><span>';
|
1086 |
echo '</li>';
|
1087 |
}
|
1088 |
}
|
1091 |
</div>
|
1092 |
|
1093 |
<p class="wpforms-settings-provider-accounts-toggle">
|
1094 |
+
<a class="wpforms-btn wpforms-btn-md wpforms-btn-light-grey" href="#" data-provider="<?php echo $slug; ?>"><i class="fa fa-plus"></i> <?php _e( 'Add New Account', 'wpforms' ); ?></a>
|
1095 |
</p>
|
1096 |
|
1097 |
<div class="wpforms-settings-provider-accounts-connect">
|
1103 |
<?php $this->integrations_tab_new_form(); ?>
|
1104 |
</p>
|
1105 |
|
1106 |
+
<button type="submit" class="wpforms-btn wpforms-btn-md wpforms-btn-orange wpforms-settings-provider-connect" data-provider="<?php echo $slug; ?>" title="Connect to <?php echo $name; ?>"><?php _e( 'Connect to', 'wpforms' ); ?> <?php echo $name; ?></button>
|
1107 |
</form>
|
1108 |
</div>
|
1109 |
|
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.3.
|
6 |
"Report-Msgid-Bugs-To: https://wordpress.org/support/plugin/wpforms\n"
|
7 |
-
"POT-Creation-Date: 2017-
|
8 |
"MIME-Version: 1.0\n"
|
9 |
"Content-Type: text/plain; charset=UTF-8\n"
|
10 |
"Content-Transfer-Encoding: 8bit\n"
|
@@ -12,8 +12,109 @@ msgstr ""
|
|
12 |
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
13 |
"Language-Team: LANGUAGE <LL@li.org>\n"
|
14 |
|
15 |
-
#: includes/admin/
|
16 |
-
msgid "
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
17 |
msgstr ""
|
18 |
|
19 |
#: includes/admin/ajax-actions.php:28
|
@@ -40,11 +141,11 @@ msgstr ""
|
|
40 |
msgid "Error updating form template"
|
41 |
msgstr ""
|
42 |
|
43 |
-
#: includes/admin/ajax-actions.php:243 includes/fields/class-base.php:
|
44 |
msgid "post type"
|
45 |
msgstr ""
|
46 |
|
47 |
-
#: includes/admin/ajax-actions.php:262 includes/fields/class-base.php:
|
48 |
msgid "taxonomy"
|
49 |
msgstr ""
|
50 |
|
@@ -58,7 +159,7 @@ msgid "Add New Choices"
|
|
58 |
msgstr ""
|
59 |
|
60 |
#: includes/admin/builder/class-builder.php:276
|
61 |
-
#: includes/fields/class-base.php:
|
62 |
msgid "Bulk Add"
|
63 |
msgstr ""
|
64 |
|
@@ -109,21 +210,6 @@ msgid ""
|
|
109 |
"field difficult for your vistors to use and/or cause the form to be slow."
|
110 |
msgstr ""
|
111 |
|
112 |
-
#: includes/admin/builder/class-builder.php:286
|
113 |
-
#: includes/admin/class-editor.php:96
|
114 |
-
#: pro/includes/admin/entries/class-entries.php:994
|
115 |
-
msgid "Cancel"
|
116 |
-
msgstr ""
|
117 |
-
|
118 |
-
#: includes/admin/builder/class-builder.php:287
|
119 |
-
msgid "OK"
|
120 |
-
msgstr ""
|
121 |
-
|
122 |
-
#: includes/admin/builder/class-builder.php:288
|
123 |
-
#: includes/admin/class-editor.php:70
|
124 |
-
msgid "Close"
|
125 |
-
msgstr ""
|
126 |
-
|
127 |
#: includes/admin/builder/class-builder.php:289
|
128 |
msgid ""
|
129 |
"Due to form changes, conditional logic rules have been removed or updated:"
|
@@ -136,7 +222,7 @@ msgid ""
|
|
136 |
msgstr ""
|
137 |
|
138 |
#: includes/admin/builder/class-builder.php:291
|
139 |
-
#: pro/includes/admin/entries/class-entries-table.php:176
|
140 |
msgid "Field"
|
141 |
msgstr ""
|
142 |
|
@@ -156,10 +242,6 @@ msgstr ""
|
|
156 |
msgid "No fields available"
|
157 |
msgstr ""
|
158 |
|
159 |
-
#: includes/admin/builder/class-builder.php:296
|
160 |
-
msgid "Heads up!"
|
161 |
-
msgstr ""
|
162 |
-
|
163 |
#: includes/admin/builder/class-builder.php:298
|
164 |
msgid "No email fields"
|
165 |
msgstr ""
|
@@ -187,8 +269,6 @@ msgid ""
|
|
187 |
msgstr ""
|
188 |
|
189 |
#: includes/admin/builder/class-builder.php:304
|
190 |
-
#: lite/includes/admin/class-settings.php:149
|
191 |
-
#: pro/includes/admin/class-settings.php:160
|
192 |
msgid "Saving ..."
|
193 |
msgstr ""
|
194 |
|
@@ -201,7 +281,7 @@ msgid "Save and Exit"
|
|
201 |
msgstr ""
|
202 |
|
203 |
#: includes/admin/builder/class-builder.php:307
|
204 |
-
#: includes/fields/class-base.php:
|
205 |
msgid "Show Layouts"
|
206 |
msgstr ""
|
207 |
|
@@ -272,14 +352,14 @@ msgid "This item must contain at least one choice."
|
|
272 |
msgstr ""
|
273 |
|
274 |
#: includes/admin/builder/class-builder.php:329
|
275 |
-
#: includes/fields/class-base.php:
|
276 |
-
#: lite/wpforms-lite.php:
|
277 |
msgid "Off"
|
278 |
msgstr ""
|
279 |
|
280 |
#: includes/admin/builder/class-builder.php:330
|
281 |
-
#: includes/fields/class-base.php:
|
282 |
-
#: pro/wpforms-pro.php:
|
283 |
msgid "On"
|
284 |
msgstr ""
|
285 |
|
@@ -359,7 +439,7 @@ msgid "Delete rule"
|
|
359 |
msgstr ""
|
360 |
|
361 |
#: includes/admin/builder/class-builder.php:348
|
362 |
-
#: includes/admin/builder/functions.php:249 includes/fields/class-base.php:
|
363 |
msgid "Show Smart Tags"
|
364 |
msgstr ""
|
365 |
|
@@ -406,7 +486,7 @@ msgid "Now editing"
|
|
406 |
msgstr ""
|
407 |
|
408 |
#: includes/admin/builder/class-builder.php:460
|
409 |
-
#: pro/includes/admin/entries/class-entries.php:
|
410 |
msgid "Preview Form"
|
411 |
msgstr ""
|
412 |
|
@@ -428,7 +508,6 @@ msgid "Save Form"
|
|
428 |
msgstr ""
|
429 |
|
430 |
#: includes/admin/builder/class-builder.php:472
|
431 |
-
#: pro/includes/admin/class-settings.php:604
|
432 |
msgid "Save"
|
433 |
msgstr ""
|
434 |
|
@@ -480,17 +559,17 @@ msgid "You don't have any fields yet. Add some!"
|
|
480 |
msgstr ""
|
481 |
|
482 |
#: includes/admin/builder/panels/class-fields.php:252
|
483 |
-
#: includes/fields/class-base.php:
|
484 |
msgid "Duplicate Field"
|
485 |
msgstr ""
|
486 |
|
487 |
#: includes/admin/builder/panels/class-fields.php:254
|
488 |
-
#: includes/fields/class-base.php:
|
489 |
msgid "Delete Field"
|
490 |
msgstr ""
|
491 |
|
492 |
#: includes/admin/builder/panels/class-fields.php:256
|
493 |
-
#: includes/fields/class-base.php:
|
494 |
msgid "Click to edit. Drag to reorder."
|
495 |
msgstr ""
|
496 |
|
@@ -553,20 +632,18 @@ msgid ""
|
|
553 |
msgstr ""
|
554 |
|
555 |
#: includes/admin/builder/panels/class-settings.php:21
|
556 |
-
#: includes/admin/class-menu.php:
|
557 |
-
#: pro/includes/admin/class-settings.php:963
|
558 |
msgid "Settings"
|
559 |
msgstr ""
|
560 |
|
561 |
#: includes/admin/builder/panels/class-settings.php:57
|
562 |
#: includes/admin/builder/panels/class-settings.php:87
|
563 |
-
#:
|
564 |
-
#: pro/includes/admin/class-settings.php:181
|
565 |
msgid "General"
|
566 |
msgstr ""
|
567 |
|
568 |
-
#: includes/admin/builder/panels/class-settings.php:58 lite/wpforms-lite.php:
|
569 |
-
#: lite/wpforms-lite.php:
|
570 |
msgid "Notifications"
|
571 |
msgstr ""
|
572 |
|
@@ -644,8 +721,8 @@ msgid "Confirmation Type"
|
|
644 |
msgstr ""
|
645 |
|
646 |
#: includes/admin/builder/panels/class-settings.php:188
|
647 |
-
#: includes/templates/class-suggestion.php:74 lite/wpforms-lite.php:
|
648 |
-
#: pro/wpforms-pro.php:
|
649 |
msgid "Message"
|
650 |
msgstr ""
|
651 |
|
@@ -736,119 +813,665 @@ msgstr ""
|
|
736 |
|
737 |
#: includes/admin/class-editor.php:88
|
738 |
#: includes/admin/overview/class-overview-table.php:250
|
739 |
-
#: pro/includes/admin/entries/class-entries.php:
|
740 |
msgid ""
|
741 |
"Whoops, you haven't created a form yet. Want to <a href=\"%s\">give it a go</"
|
742 |
"a>?"
|
743 |
msgstr ""
|
744 |
|
745 |
-
#. #-#-#-#-# wpforms.pot (WPForms 1.3.
|
746 |
#. Plugin Name of the plugin/theme
|
747 |
-
#. #-#-#-#-# wpforms.pot (WPForms 1.3.
|
748 |
#. Author of the plugin/theme
|
749 |
-
#: includes/admin/class-menu.php:
|
750 |
-
#: includes/admin/class-menu.php:
|
751 |
#: includes/integrations.php:34
|
752 |
msgid "WPForms"
|
753 |
msgstr ""
|
754 |
|
755 |
-
#: includes/admin/class-menu.php:
|
756 |
msgid "All Forms"
|
757 |
msgstr ""
|
758 |
|
759 |
-
#: includes/admin/class-menu.php:
|
760 |
msgid "WPForms Builder"
|
761 |
msgstr ""
|
762 |
|
763 |
-
#: includes/admin/class-menu.php:
|
764 |
-
#: includes/admin/overview/class-overview.php:
|
765 |
#: includes/providers/class-base.php:903
|
766 |
msgid "Add New"
|
767 |
msgstr ""
|
768 |
|
769 |
-
#: includes/admin/class-menu.php:
|
770 |
msgid "Form Entries"
|
771 |
msgstr ""
|
772 |
|
773 |
-
#: includes/admin/class-menu.php:
|
774 |
#: includes/admin/overview/class-overview-table.php:152
|
775 |
-
#: pro/includes/admin/entries/class-entries
|
|
|
776 |
msgid "Entries"
|
777 |
msgstr ""
|
778 |
|
779 |
-
#: includes/admin/class-menu.php:
|
780 |
msgid "WPForms Settings"
|
781 |
msgstr ""
|
782 |
|
783 |
-
#: includes/admin/class-menu.php:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
784 |
msgid "Info"
|
785 |
msgstr ""
|
786 |
|
787 |
-
#: includes/admin/class-menu.php:
|
788 |
msgid "WPForms Addons"
|
789 |
msgstr ""
|
790 |
|
791 |
-
#: includes/admin/class-menu.php:
|
792 |
msgid "Addons"
|
793 |
msgstr ""
|
794 |
|
795 |
-
#: includes/admin/class-
|
796 |
-
msgid "
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
797 |
msgstr ""
|
798 |
|
799 |
-
#: includes/admin/class-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
800 |
msgid "Welcome to WPForms"
|
801 |
msgstr ""
|
802 |
|
803 |
-
#: includes/admin/class-welcome.php:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
804 |
msgid ""
|
805 |
-
"
|
806 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
807 |
msgstr ""
|
808 |
|
809 |
-
#: includes/admin/class-welcome.php:
|
810 |
-
msgid "
|
811 |
msgstr ""
|
812 |
|
813 |
-
#: includes/admin/class-welcome.php:
|
814 |
-
msgid "
|
815 |
msgstr ""
|
816 |
|
817 |
-
#: includes/admin/class-welcome.php:
|
818 |
-
msgid ""
|
819 |
-
"Use the tips below to get started using WPForms. You will be up and running "
|
820 |
-
"in no time."
|
821 |
msgstr ""
|
822 |
|
823 |
-
#: includes/admin/class-welcome.php:
|
824 |
-
msgid "
|
825 |
msgstr ""
|
826 |
|
827 |
-
#: includes/admin/class-welcome.php:
|
828 |
-
msgid ""
|
829 |
-
"WPForms makes it easy to create forms in WordPress. You can follow the video "
|
830 |
-
"tutorial on the right or read our how to <a href=\"%s\" target=\"_blank\" "
|
831 |
-
"rel=\"noopener\">create your first form guide</a>."
|
832 |
msgstr ""
|
833 |
|
834 |
-
#: includes/admin/class-welcome.php:
|
835 |
-
msgid ""
|
836 |
-
"But in reality, the process is so intuitive that you can just start by going "
|
837 |
-
"to <a href=\"%s\">WPForms - > Add New</a>."
|
838 |
msgstr ""
|
839 |
|
840 |
-
#: includes/admin/class-welcome.php:
|
841 |
-
msgid "
|
|
|
|
|
|
|
842 |
msgstr ""
|
843 |
|
844 |
-
#: includes/admin/class-welcome.php:
|
845 |
msgid ""
|
846 |
-
"
|
847 |
-
"
|
|
|
|
|
|
|
848 |
msgstr ""
|
849 |
|
850 |
-
#: includes/admin/class-welcome.php:
|
851 |
-
msgid "
|
852 |
msgstr ""
|
853 |
|
854 |
#: includes/admin/overview/class-overview-table.php:53
|
@@ -901,9 +1524,9 @@ msgstr ""
|
|
901 |
|
902 |
#: includes/admin/overview/class-overview-table.php:173
|
903 |
#: includes/admin/overview/class-overview-table.php:191
|
904 |
-
#: pro/includes/admin/entries/class-entries-table.php:341
|
905 |
-
#: pro/includes/admin/entries/class-entries-table.php:362
|
906 |
-
#: pro/includes/admin/entries/class-entries.php:
|
907 |
msgid "Delete"
|
908 |
msgstr ""
|
909 |
|
@@ -928,16 +1551,44 @@ msgstr[1] ""
|
|
928 |
msgid "Number of forms per page:"
|
929 |
msgstr ""
|
930 |
|
931 |
-
#: includes/admin/overview/class-overview.php:
|
932 |
-
msgid "
|
933 |
msgstr ""
|
934 |
|
935 |
-
#: includes/admin/
|
936 |
-
msgid "
|
937 |
msgstr ""
|
938 |
|
939 |
-
#: includes/admin/
|
940 |
-
msgid "
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
941 |
msgstr ""
|
942 |
|
943 |
#: includes/class-conditional-logic-core.php:158
|
@@ -969,57 +1620,30 @@ msgstr ""
|
|
969 |
msgid "Add rule group"
|
970 |
msgstr ""
|
971 |
|
972 |
-
#: includes/class-frontend.php:
|
973 |
-
#: pro/includes/admin/class-settings.php:448
|
974 |
-
msgid "This field is required."
|
975 |
-
msgstr ""
|
976 |
-
|
977 |
-
#: includes/class-frontend.php:970 lite/includes/admin/class-settings.php:381
|
978 |
-
#: pro/includes/admin/class-settings.php:456
|
979 |
-
msgid "Please enter a valid URL."
|
980 |
-
msgstr ""
|
981 |
-
|
982 |
-
#: includes/class-frontend.php:971 lite/includes/admin/class-settings.php:389
|
983 |
-
#: pro/includes/admin/class-settings.php:464
|
984 |
-
msgid "Please enter a valid email address."
|
985 |
-
msgstr ""
|
986 |
-
|
987 |
-
#: includes/class-frontend.php:972 includes/fields/class-number.php:157
|
988 |
-
#: lite/includes/admin/class-settings.php:397
|
989 |
-
#: pro/includes/admin/class-settings.php:472
|
990 |
-
msgid "Please enter a valid number."
|
991 |
-
msgstr ""
|
992 |
-
|
993 |
-
#: includes/class-frontend.php:973 lite/includes/admin/class-settings.php:405
|
994 |
-
#: pro/includes/admin/class-settings.php:480
|
995 |
-
#: pro/includes/fields/class-password.php:394
|
996 |
-
msgid "Field values do not match."
|
997 |
-
msgstr ""
|
998 |
-
|
999 |
-
#: includes/class-frontend.php:974 pro/includes/admin/class-settings.php:488
|
1000 |
#: pro/includes/fields/class-file-upload.php:367
|
1001 |
#: pro/includes/fields/class-file-upload.php:383
|
1002 |
-
#: pro/includes/fields/class-file-upload.php:400
|
1003 |
msgid "File type is not allowed."
|
1004 |
msgstr ""
|
1005 |
|
1006 |
-
#: includes/class-frontend.php:975 pro/
|
1007 |
msgid "File exceeds max size allowed."
|
1008 |
msgstr ""
|
1009 |
|
1010 |
-
#: includes/class-frontend.php:976 pro/
|
1011 |
msgid "Please enter time in 12-hour AM/PM format (eg 8:45 AM)."
|
1012 |
msgstr ""
|
1013 |
|
1014 |
-
#: includes/class-frontend.php:977 pro/
|
1015 |
msgid "Please enter time in 24-hour format (eg 22:45)."
|
1016 |
msgstr ""
|
1017 |
|
1018 |
-
#: includes/class-frontend.php:978 pro/
|
1019 |
msgid "Payment is required."
|
1020 |
msgstr ""
|
1021 |
|
1022 |
-
#: includes/class-frontend.php:979 pro/
|
1023 |
msgid "Please enter a valid credit card number."
|
1024 |
msgstr ""
|
1025 |
|
@@ -1031,50 +1655,92 @@ msgstr ""
|
|
1031 |
msgid "Logs"
|
1032 |
msgstr ""
|
1033 |
|
1034 |
-
#: includes/class-preview.php:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1035 |
msgid "Entry #%d"
|
1036 |
msgstr ""
|
1037 |
|
1038 |
-
#: includes/class-preview.php:
|
1039 |
-
#: pro/includes/admin/entries/class-entries.php:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1040 |
msgid "This entry does not have any fields"
|
1041 |
msgstr ""
|
1042 |
|
1043 |
-
#: includes/class-preview.php:
|
1044 |
-
#: pro/includes/admin/entries/class-entries.php:
|
1045 |
msgid "Field ID #%d"
|
1046 |
msgstr ""
|
1047 |
|
1048 |
-
#: includes/class-preview.php:
|
1049 |
-
#: pro/includes/admin/entries/class-entries.php:
|
1050 |
msgid "Empty"
|
1051 |
msgstr ""
|
1052 |
|
1053 |
-
#: includes/class-preview.php:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1054 |
msgid ""
|
1055 |
"This is the WPForms preview page. All your form previews will be handled on "
|
1056 |
"this page."
|
1057 |
msgstr ""
|
1058 |
|
1059 |
-
#: includes/class-preview.php:
|
1060 |
msgid ""
|
1061 |
"The page is set to private, so it is not publicly accessible. Please do not "
|
1062 |
"delete this page :) ."
|
1063 |
msgstr ""
|
1064 |
|
1065 |
-
#: includes/class-preview.php:
|
1066 |
msgid "WPForms Preview"
|
1067 |
msgstr ""
|
1068 |
|
1069 |
-
#: includes/class-preview.php:
|
1070 |
msgid "This is a preview of your form. This page is not publicly accessible."
|
1071 |
msgstr ""
|
1072 |
|
1073 |
-
#: includes/class-preview.php:
|
1074 |
msgid "Close this window"
|
1075 |
msgstr ""
|
1076 |
|
1077 |
-
#: includes/class-preview.php:
|
1078 |
msgid " Preview"
|
1079 |
msgstr ""
|
1080 |
|
@@ -1098,8 +1764,8 @@ msgstr ""
|
|
1098 |
msgid "WPForms honeypot field triggered."
|
1099 |
msgstr ""
|
1100 |
|
1101 |
-
#: includes/class-process.php:354 lite/wpforms-lite.php:
|
1102 |
-
#: pro/wpforms-pro.php:
|
1103 |
msgid "New %s Entry"
|
1104 |
msgstr ""
|
1105 |
|
@@ -1129,7 +1795,7 @@ msgstr ""
|
|
1129 |
|
1130 |
#: includes/class-smart-tags.php:40
|
1131 |
#: pro/includes/admin/entries/class-entries-export.php:178
|
1132 |
-
#: pro/includes/admin/entries/class-entries-table.php:136
|
1133 |
#: pro/includes/fields/class-date-time.php:69
|
1134 |
#: pro/includes/fields/class-date-time.php:117
|
1135 |
#: pro/includes/fields/class-date-time.php:244
|
@@ -1190,7 +1856,7 @@ msgstr ""
|
|
1190 |
msgid "Lost Password URL"
|
1191 |
msgstr ""
|
1192 |
|
1193 |
-
#: includes/class-widget.php:127
|
1194 |
msgid "No forms"
|
1195 |
msgstr ""
|
1196 |
|
@@ -1222,67 +1888,61 @@ msgstr ""
|
|
1222 |
msgid "Sent from <a href=\"%s\" style=\"color:#bbbbbb;\">%s</a>"
|
1223 |
msgstr ""
|
1224 |
|
1225 |
-
#: includes/fields/class-base.php:
|
1226 |
msgid ""
|
1227 |
"Enter text for the form field label. Field labels are recommended and can be "
|
1228 |
"hidden in the Advanced Settings."
|
1229 |
msgstr ""
|
1230 |
|
1231 |
-
#: includes/fields/class-base.php:
|
1232 |
msgid "Label"
|
1233 |
msgstr ""
|
1234 |
|
1235 |
-
#: includes/fields/class-base.php:
|
1236 |
msgid "Enter text for the form field description."
|
1237 |
msgstr ""
|
1238 |
|
1239 |
-
#: includes/fields/class-base.php:
|
1240 |
msgid "Description"
|
1241 |
msgstr ""
|
1242 |
|
1243 |
-
#: includes/fields/class-base.php:
|
1244 |
msgid ""
|
1245 |
"Check this option to mark the field required. A form will not submit unless "
|
1246 |
"all required fields are provided."
|
1247 |
msgstr ""
|
1248 |
|
1249 |
-
#: includes/fields/class-base.php:
|
1250 |
-
#: lite/includes/admin/class-settings.php:370
|
1251 |
-
#: pro/includes/admin/class-settings.php:445
|
1252 |
-
msgid "Required"
|
1253 |
-
msgstr ""
|
1254 |
-
|
1255 |
-
#: includes/fields/class-base.php:351
|
1256 |
msgid "Enter code for the form field."
|
1257 |
msgstr ""
|
1258 |
|
1259 |
-
#: includes/fields/class-base.php:
|
1260 |
msgid "Code"
|
1261 |
msgstr ""
|
1262 |
|
1263 |
-
#: includes/fields/class-base.php:
|
1264 |
msgid "Add choices for the form field."
|
1265 |
msgstr ""
|
1266 |
|
1267 |
-
#: includes/fields/class-base.php:
|
1268 |
msgid "Choices"
|
1269 |
msgstr ""
|
1270 |
|
1271 |
-
#: includes/fields/class-base.php:
|
1272 |
msgid ""
|
1273 |
"Choices are dynamically populated from the <span class=\"dynamic-name\">%s</"
|
1274 |
"span> <span class=\"dynamic-type\">%s</span>"
|
1275 |
msgstr ""
|
1276 |
|
1277 |
-
#: includes/fields/class-base.php:
|
1278 |
msgid "Items"
|
1279 |
msgstr ""
|
1280 |
|
1281 |
-
#: includes/fields/class-base.php:
|
1282 |
msgid "Enter text for the default form field value."
|
1283 |
msgstr ""
|
1284 |
|
1285 |
-
#: includes/fields/class-base.php:
|
1286 |
#: includes/fields/class-name.php:298 includes/fields/class-name.php:313
|
1287 |
#: includes/fields/class-name.php:328 pro/includes/fields/class-address.php:117
|
1288 |
#: pro/includes/fields/class-address.php:133
|
@@ -1293,117 +1953,121 @@ msgstr ""
|
|
1293 |
msgid "Default Value"
|
1294 |
msgstr ""
|
1295 |
|
1296 |
-
#: includes/fields/class-base.php:
|
1297 |
msgid "Select the default form field size."
|
1298 |
msgstr ""
|
1299 |
|
1300 |
-
#: includes/fields/class-base.php:
|
1301 |
msgid "Small"
|
1302 |
msgstr ""
|
1303 |
|
1304 |
-
#: includes/fields/class-base.php:
|
1305 |
msgid "Medium"
|
1306 |
msgstr ""
|
1307 |
|
1308 |
-
#: includes/fields/class-base.php:
|
1309 |
msgid "Large"
|
1310 |
msgstr ""
|
1311 |
|
1312 |
-
#: includes/fields/class-base.php:
|
1313 |
msgid "Field Size"
|
1314 |
msgstr ""
|
1315 |
|
1316 |
-
#: includes/fields/class-base.php:
|
1317 |
msgid "Advanced Options"
|
1318 |
msgstr ""
|
1319 |
|
1320 |
-
#: includes/fields/class-base.php:
|
1321 |
msgid "Enter text for the form field placeholder."
|
1322 |
msgstr ""
|
1323 |
|
1324 |
-
#: includes/fields/class-base.php:
|
1325 |
msgid "Placeholder Text"
|
1326 |
msgstr ""
|
1327 |
|
1328 |
-
#: includes/fields/class-base.php:
|
1329 |
msgid ""
|
1330 |
"Enter CSS class names for the form field container. Class names should be "
|
1331 |
"separated with spaces."
|
1332 |
msgstr ""
|
1333 |
|
1334 |
-
#: includes/fields/class-base.php:
|
1335 |
msgid "CSS Classes"
|
1336 |
msgstr ""
|
1337 |
|
1338 |
-
#: includes/fields/class-base.php:
|
1339 |
msgid "Check this option to hide the form field label."
|
1340 |
msgstr ""
|
1341 |
|
1342 |
-
#: includes/fields/class-base.php:
|
1343 |
msgid "Hide Label"
|
1344 |
msgstr ""
|
1345 |
|
1346 |
-
#: includes/fields/class-base.php:
|
1347 |
msgid "Check this option to hide the form field sub-label."
|
1348 |
msgstr ""
|
1349 |
|
1350 |
-
#: includes/fields/class-base.php:
|
1351 |
msgid "Hide Sub-Labels"
|
1352 |
msgstr ""
|
1353 |
|
1354 |
-
#: includes/fields/class-base.php:
|
1355 |
msgid "Select the layout for displaying field choices."
|
1356 |
msgstr ""
|
1357 |
|
1358 |
-
#: includes/fields/class-base.php:
|
1359 |
msgid "One Column"
|
1360 |
msgstr ""
|
1361 |
|
1362 |
-
#: includes/fields/class-base.php:
|
1363 |
msgid "Two Columns"
|
1364 |
msgstr ""
|
1365 |
|
1366 |
-
#: includes/fields/class-base.php:
|
1367 |
msgid "Three Columns"
|
1368 |
msgstr ""
|
1369 |
|
1370 |
-
#: includes/fields/class-base.php:
|
1371 |
msgid "Choice Layout"
|
1372 |
msgstr ""
|
1373 |
|
1374 |
-
#: includes/fields/class-base.php:
|
1375 |
msgid "Select auto-populate method to use."
|
1376 |
msgstr ""
|
1377 |
|
1378 |
-
#: includes/fields/class-base.php:
|
1379 |
msgid "Post Type"
|
1380 |
msgstr ""
|
1381 |
|
1382 |
-
#: includes/fields/class-base.php:
|
1383 |
msgid "Taxonomy"
|
1384 |
msgstr ""
|
1385 |
|
1386 |
-
#: includes/fields/class-base.php:
|
1387 |
msgid "Dynamic Choices"
|
1388 |
msgstr ""
|
1389 |
|
1390 |
-
#: includes/fields/class-base.php:
|
1391 |
msgid "Select %s to use for auto-populating field choices."
|
1392 |
msgstr ""
|
1393 |
|
1394 |
-
#: includes/fields/class-base.php:
|
1395 |
msgid "Dynamic %s Source"
|
1396 |
msgstr ""
|
1397 |
|
1398 |
-
#: includes/fields/class-base.php:
|
|
|
|
|
|
|
|
|
1399 |
msgid "No form ID found"
|
1400 |
msgstr ""
|
1401 |
|
1402 |
-
#: includes/fields/class-base.php:
|
1403 |
msgid "No field type found"
|
1404 |
msgstr ""
|
1405 |
|
1406 |
-
#: includes/fields/class-base.php:
|
1407 |
#: includes/fields/class-number.php:152
|
1408 |
#: pro/includes/fields/class-address.php:624
|
1409 |
#: pro/includes/fields/class-date-time.php:532
|
@@ -1450,30 +2114,15 @@ msgid ""
|
|
1450 |
"viewing the form."
|
1451 |
msgstr ""
|
1452 |
|
1453 |
-
#: includes/fields/class-email.php:21 includes/fields/class-email.php:68
|
1454 |
-
#: includes/fields/class-email.php:306
|
1455 |
-
#: includes/templates/class-subscribe.php:42
|
1456 |
-
#: lite/includes/admin/class-settings.php:263
|
1457 |
-
#: lite/includes/admin/class-settings.php:386
|
1458 |
-
#: pro/includes/admin/class-settings.php:338
|
1459 |
-
#: pro/includes/admin/class-settings.php:461
|
1460 |
-
#: pro/includes/templates/class-donation.php:42
|
1461 |
-
#: pro/includes/templates/class-order.php:42
|
1462 |
-
#: pro/includes/templates/class-request-quote.php:46
|
1463 |
-
msgid "Email"
|
1464 |
-
msgstr ""
|
1465 |
-
|
1466 |
#: includes/fields/class-email.php:91 includes/fields/class-email.php:311
|
1467 |
msgid "Confirm Email"
|
1468 |
msgstr ""
|
1469 |
|
1470 |
#: includes/fields/class-email.php:207
|
1471 |
-
#: pro/includes/fields/class-password.php:188
|
1472 |
msgid "Enable Email Confirmation"
|
1473 |
msgstr ""
|
1474 |
|
1475 |
#: includes/fields/class-email.php:208
|
1476 |
-
#: pro/includes/fields/class-password.php:189
|
1477 |
msgid "Check this option ask the user to provide their email address twice."
|
1478 |
msgstr ""
|
1479 |
|
@@ -2018,384 +2667,112 @@ msgid "Comment or Message"
|
|
2018 |
msgstr ""
|
2019 |
|
2020 |
#: includes/templates/class-subscribe.php:20
|
2021 |
-
msgid "Newsletter Signup Form"
|
2022 |
-
msgstr ""
|
2023 |
-
|
2024 |
-
#: includes/templates/class-subscribe.php:22
|
2025 |
-
msgid ""
|
2026 |
-
"Add subscribers and grow your email list with this newsletter signup form. "
|
2027 |
-
"You can add and remove fields as needed."
|
2028 |
-
msgstr ""
|
2029 |
-
|
2030 |
-
#: includes/templates/class-subscribe.php:26
|
2031 |
-
#: pro/includes/templates/class-donation.php:26
|
2032 |
-
#: pro/includes/templates/class-order.php:26
|
2033 |
-
msgid "Don't Forget"
|
2034 |
-
msgstr ""
|
2035 |
-
|
2036 |
-
#: includes/templates/class-subscribe.php:27
|
2037 |
-
msgid "Click the marketing tab to configure your newsletter service provider"
|
2038 |
-
msgstr ""
|
2039 |
-
|
2040 |
-
#: includes/templates/class-suggestion.php:20
|
2041 |
-
msgid "Suggestion Form"
|
2042 |
-
msgstr ""
|
2043 |
-
|
2044 |
-
#: includes/templates/class-suggestion.php:22
|
2045 |
-
msgid ""
|
2046 |
-
"Ask your users for suggestions with this simple form template. You can add "
|
2047 |
-
"and remove fields as needed."
|
2048 |
-
msgstr ""
|
2049 |
-
|
2050 |
-
#: includes/templates/class-suggestion.php:40
|
2051 |
-
msgid "Please enter your email, so we can follow up with you."
|
2052 |
-
msgstr ""
|
2053 |
-
|
2054 |
-
#: includes/templates/class-suggestion.php:47
|
2055 |
-
msgid "Which department do you have a suggestion for?"
|
2056 |
-
msgstr ""
|
2057 |
-
|
2058 |
-
#: includes/templates/class-suggestion.php:50
|
2059 |
-
msgid "Sales"
|
2060 |
-
msgstr ""
|
2061 |
-
|
2062 |
-
#: includes/templates/class-suggestion.php:53
|
2063 |
-
msgid "Customer Support"
|
2064 |
-
msgstr ""
|
2065 |
-
|
2066 |
-
#: includes/templates/class-suggestion.php:56
|
2067 |
-
msgid "Product Development"
|
2068 |
-
msgstr ""
|
2069 |
-
|
2070 |
-
#: includes/templates/class-suggestion.php:67
|
2071 |
-
msgid "Subject"
|
2072 |
-
msgstr ""
|
2073 |
-
|
2074 |
-
#: lite/includes/admin/class-review.php:83
|
2075 |
-
msgid ""
|
2076 |
-
"Hey, I noticed you created a contact form with WPForms - that’s awesome! "
|
2077 |
-
"Could you please do me a BIG favor and give it a 5-star rating on WordPress "
|
2078 |
-
"to help us spread the word and boost our motivation?"
|
2079 |
-
msgstr ""
|
2080 |
-
|
2081 |
-
#: lite/includes/admin/class-review.php:84
|
2082 |
-
#: pro/includes/admin/class-review.php:78
|
2083 |
-
msgid "~ Syed Balkhi<br>Co-Founder of WPForms"
|
2084 |
-
msgstr ""
|
2085 |
-
|
2086 |
-
#: lite/includes/admin/class-review.php:86
|
2087 |
-
#: pro/includes/admin/class-review.php:80
|
2088 |
-
msgid "Ok, you deserve it"
|
2089 |
-
msgstr ""
|
2090 |
-
|
2091 |
-
#: lite/includes/admin/class-review.php:87
|
2092 |
-
#: pro/includes/admin/class-review.php:81
|
2093 |
-
msgid "Nope, maybe later"
|
2094 |
-
msgstr ""
|
2095 |
-
|
2096 |
-
#: lite/includes/admin/class-review.php:88
|
2097 |
-
#: pro/includes/admin/class-review.php:82
|
2098 |
-
msgid "I already did"
|
2099 |
-
msgstr ""
|
2100 |
-
|
2101 |
-
#: lite/includes/admin/class-review.php:136
|
2102 |
-
#: pro/includes/admin/class-review.php:130
|
2103 |
-
msgid ""
|
2104 |
-
"Please rate <strong>WPForms</strong> <a href=\"%s\" target=\"_blank\" rel="
|
2105 |
-
"\"noopener\">★★★★★</a> on <a href=\"%s\" "
|
2106 |
-
"target=\"_blank\">WordPress.org</a> to help us spread the word. Thank you "
|
2107 |
-
"from the WPForms team!"
|
2108 |
-
msgstr ""
|
2109 |
-
|
2110 |
-
#: lite/includes/admin/class-settings.php:150
|
2111 |
-
#: pro/includes/admin/class-settings.php:161
|
2112 |
-
msgid "Are you sure you want to disconnect this account?"
|
2113 |
-
msgstr ""
|
2114 |
-
|
2115 |
-
#: lite/includes/admin/class-settings.php:151
|
2116 |
-
#: pro/includes/admin/class-settings.php:162
|
2117 |
-
msgid "Upload or Choose Your Image"
|
2118 |
-
msgstr ""
|
2119 |
-
|
2120 |
-
#: lite/includes/admin/class-settings.php:152
|
2121 |
-
#: pro/includes/admin/class-settings.php:163
|
2122 |
-
msgid "Use Image"
|
2123 |
-
msgstr ""
|
2124 |
-
|
2125 |
-
#: lite/includes/admin/class-settings.php:171
|
2126 |
-
#: pro/includes/admin/class-settings.php:183
|
2127 |
-
msgid "Integrations"
|
2128 |
-
msgstr ""
|
2129 |
-
|
2130 |
-
#: lite/includes/admin/class-settings.php:172
|
2131 |
-
#: pro/includes/admin/class-settings.php:185
|
2132 |
-
msgid "System Info"
|
2133 |
-
msgstr ""
|
2134 |
-
|
2135 |
-
#: lite/includes/admin/class-settings.php:195
|
2136 |
-
#: pro/includes/admin/class-settings.php:208
|
2137 |
-
#: pro/includes/admin/class-settings.php:556
|
2138 |
-
msgid "Settings check failed."
|
2139 |
-
msgstr ""
|
2140 |
-
|
2141 |
-
#: lite/includes/admin/class-settings.php:223
|
2142 |
-
#: pro/includes/admin/class-settings.php:242
|
2143 |
-
msgid "General settings updated."
|
2144 |
-
msgstr ""
|
2145 |
-
|
2146 |
-
#: lite/includes/admin/class-settings.php:240
|
2147 |
-
#: pro/includes/admin/class-settings.php:315
|
2148 |
-
msgid "Include Form Styling"
|
2149 |
-
msgstr ""
|
2150 |
-
|
2151 |
-
#: lite/includes/admin/class-settings.php:244
|
2152 |
-
#: pro/includes/admin/class-settings.php:319
|
2153 |
-
msgid "Base and form theme styling"
|
2154 |
-
msgstr ""
|
2155 |
-
|
2156 |
-
#: lite/includes/admin/class-settings.php:245
|
2157 |
-
#: pro/includes/admin/class-settings.php:320
|
2158 |
-
msgid "Base styling only"
|
2159 |
-
msgstr ""
|
2160 |
-
|
2161 |
-
#: lite/includes/admin/class-settings.php:246
|
2162 |
-
#: pro/includes/admin/class-settings.php:321
|
2163 |
-
#: pro/includes/fields/class-page-break.php:274
|
2164 |
-
msgid "None"
|
2165 |
-
msgstr ""
|
2166 |
-
|
2167 |
-
#: lite/includes/admin/class-settings.php:248
|
2168 |
-
#: pro/includes/admin/class-settings.php:323
|
2169 |
-
msgid "Determines which CSS files to load for the site."
|
2170 |
-
msgstr ""
|
2171 |
-
|
2172 |
-
#: lite/includes/admin/class-settings.php:253
|
2173 |
-
#: pro/includes/admin/class-settings.php:328
|
2174 |
-
msgid "Load Assets Globally"
|
2175 |
-
msgstr ""
|
2176 |
-
|
2177 |
-
#: lite/includes/admin/class-settings.php:257
|
2178 |
-
#: pro/includes/admin/class-settings.php:332
|
2179 |
-
msgid ""
|
2180 |
-
"Check this if you would like to load WPForms assets site-wide. Only check if "
|
2181 |
-
"your site is having compatibility issues or instructed to by support."
|
2182 |
-
msgstr ""
|
2183 |
-
|
2184 |
-
#: lite/includes/admin/class-settings.php:268
|
2185 |
-
#: pro/includes/admin/class-settings.php:343
|
2186 |
-
msgid "Email Template"
|
2187 |
-
msgstr ""
|
2188 |
-
|
2189 |
-
#: lite/includes/admin/class-settings.php:272
|
2190 |
-
#: pro/includes/admin/class-settings.php:347
|
2191 |
-
msgid "Default HTML template"
|
2192 |
-
msgstr ""
|
2193 |
-
|
2194 |
-
#: lite/includes/admin/class-settings.php:273
|
2195 |
-
#: pro/includes/admin/class-settings.php:348
|
2196 |
-
msgid "Plain Text"
|
2197 |
-
msgstr ""
|
2198 |
-
|
2199 |
-
#: lite/includes/admin/class-settings.php:275
|
2200 |
-
#: pro/includes/admin/class-settings.php:350
|
2201 |
-
msgid "Determines how email notifications will be formatted."
|
2202 |
-
msgstr ""
|
2203 |
-
|
2204 |
-
#: lite/includes/admin/class-settings.php:280
|
2205 |
-
#: pro/includes/admin/class-settings.php:355
|
2206 |
-
msgid "Email Header Image "
|
2207 |
-
msgstr ""
|
2208 |
-
|
2209 |
-
#: lite/includes/admin/class-settings.php:292
|
2210 |
-
#: pro/includes/admin/class-settings.php:367
|
2211 |
-
msgid "Upload Image"
|
2212 |
-
msgstr ""
|
2213 |
-
|
2214 |
-
#: lite/includes/admin/class-settings.php:294
|
2215 |
-
#: pro/includes/admin/class-settings.php:369
|
2216 |
-
msgid ""
|
2217 |
-
"Upload or choose a logo to be displayed at the top of email notifications."
|
2218 |
-
msgstr ""
|
2219 |
-
|
2220 |
-
#: lite/includes/admin/class-settings.php:295
|
2221 |
-
#: pro/includes/admin/class-settings.php:370
|
2222 |
-
msgid "Recommended size is 300x100 or smaller for best support on all devices."
|
2223 |
-
msgstr ""
|
2224 |
-
|
2225 |
-
#: lite/includes/admin/class-settings.php:301
|
2226 |
-
#: pro/includes/admin/class-settings.php:376
|
2227 |
-
msgid "Email Background Color"
|
2228 |
-
msgstr ""
|
2229 |
-
|
2230 |
-
#: lite/includes/admin/class-settings.php:305
|
2231 |
-
#: pro/includes/admin/class-settings.php:380
|
2232 |
-
msgid "Customize the background color of the HTML email template."
|
2233 |
-
msgstr ""
|
2234 |
-
|
2235 |
-
#: lite/includes/admin/class-settings.php:310
|
2236 |
-
#: pro/includes/admin/class-settings.php:385
|
2237 |
-
msgid "Email Carbon Copy"
|
2238 |
-
msgstr ""
|
2239 |
-
|
2240 |
-
#: lite/includes/admin/class-settings.php:314
|
2241 |
-
#: pro/includes/admin/class-settings.php:389
|
2242 |
-
msgid ""
|
2243 |
-
"Check this if you would like to enable the ability to CC: email addresses in "
|
2244 |
-
"the form notification settings."
|
2245 |
-
msgstr ""
|
2246 |
-
|
2247 |
-
#: lite/includes/admin/class-settings.php:320
|
2248 |
-
#: pro/includes/admin/class-settings.php:395
|
2249 |
-
msgid "reCAPTCHA"
|
2250 |
-
msgstr ""
|
2251 |
-
|
2252 |
-
#: lite/includes/admin/class-settings.php:321
|
2253 |
-
#: pro/includes/admin/class-settings.php:396
|
2254 |
-
msgid ""
|
2255 |
-
"reCAPTCHA is a free anti-spam service from Google which helps to protect "
|
2256 |
-
"your website from spam and abuse while letting real people pass through with "
|
2257 |
-
"ease."
|
2258 |
-
msgstr ""
|
2259 |
-
|
2260 |
-
#: lite/includes/admin/class-settings.php:322
|
2261 |
-
#: pro/includes/admin/class-settings.php:397
|
2262 |
-
msgid ""
|
2263 |
-
"Google's original <a href=\"https://www.google.com/recaptcha/intro/\" rel="
|
2264 |
-
"\"noopener noreferrer\">v2 reCAPTCHA</a> prompts users to check a box to "
|
2265 |
-
"prove they're human, whereas <a href=\"https://www.google.com/recaptcha/"
|
2266 |
-
"intro/invisible.html\" rel=\"noopener noreferrer\">Invisible reCAPTCHA</a> "
|
2267 |
-
"uses advanced technology to detect real users without requiring any input."
|
2268 |
-
msgstr ""
|
2269 |
-
|
2270 |
-
#: lite/includes/admin/class-settings.php:323
|
2271 |
-
#: pro/includes/admin/class-settings.php:398
|
2272 |
-
msgid ""
|
2273 |
-
"Sites already using v2 reCAPTCHA will need to create new site keys before "
|
2274 |
-
"switching to the Invisible reCAPTCHA."
|
2275 |
msgstr ""
|
2276 |
|
2277 |
-
#:
|
2278 |
-
#: pro/includes/admin/class-settings.php:399
|
2279 |
msgid ""
|
2280 |
-
"
|
2281 |
-
"
|
2282 |
-
"directions."
|
2283 |
msgstr ""
|
2284 |
|
2285 |
-
#:
|
2286 |
-
#: pro/includes/
|
2287 |
-
|
|
|
2288 |
msgstr ""
|
2289 |
|
2290 |
-
#:
|
2291 |
-
|
2292 |
-
msgid "reCAPTCHA Site key"
|
2293 |
msgstr ""
|
2294 |
|
2295 |
-
#:
|
2296 |
-
|
2297 |
-
msgid "reCAPTCHA Secret key"
|
2298 |
msgstr ""
|
2299 |
|
2300 |
-
#:
|
2301 |
-
|
2302 |
-
|
|
|
2303 |
msgstr ""
|
2304 |
|
2305 |
-
#:
|
2306 |
-
|
2307 |
-
msgid "Website URL"
|
2308 |
msgstr ""
|
2309 |
|
2310 |
-
#:
|
2311 |
-
|
2312 |
-
msgid "Number"
|
2313 |
msgstr ""
|
2314 |
|
2315 |
-
#:
|
2316 |
-
|
2317 |
-
msgid "Confirm Value"
|
2318 |
msgstr ""
|
2319 |
|
2320 |
-
#:
|
2321 |
-
|
2322 |
-
msgid "Save General Settings"
|
2323 |
msgstr ""
|
2324 |
|
2325 |
-
#:
|
2326 |
-
|
2327 |
-
msgid ""
|
2328 |
-
"You do not have any marketing add-ons activated. You can head over to the <a "
|
2329 |
-
"href=\"%s\">Add-Ons page</a> to install and activate the add-on for your "
|
2330 |
-
"provider."
|
2331 |
msgstr ""
|
2332 |
|
2333 |
-
#:
|
2334 |
-
|
2335 |
-
#: pro/includes/admin/class-settings.php:995
|
2336 |
-
#: pro/includes/admin/class-settings.php:999
|
2337 |
-
#: pro/includes/admin/entries/class-entries.php:1105
|
2338 |
-
#: pro/includes/admin/entries/class-entries.php:1427
|
2339 |
-
msgid "M j, Y @ g:ia"
|
2340 |
msgstr ""
|
2341 |
|
2342 |
-
#: lite/wpforms-lite.php:
|
2343 |
msgid "Default Notification"
|
2344 |
msgstr ""
|
2345 |
|
2346 |
-
#: lite/wpforms-lite.php:
|
2347 |
msgid "Send To Email Address"
|
2348 |
msgstr ""
|
2349 |
|
2350 |
-
#: lite/wpforms-lite.php:
|
2351 |
msgid ""
|
2352 |
"Enter the email address to receive form entry notifications. For multiple "
|
2353 |
"notifications, separate email addresses with a comma."
|
2354 |
msgstr ""
|
2355 |
|
2356 |
-
#: lite/wpforms-lite.php:
|
2357 |
msgid "CC"
|
2358 |
msgstr ""
|
2359 |
|
2360 |
-
#: lite/wpforms-lite.php:
|
2361 |
msgid "Email Subject"
|
2362 |
msgstr ""
|
2363 |
|
2364 |
-
#: lite/wpforms-lite.php:
|
2365 |
msgid "New Entry: "
|
2366 |
msgstr ""
|
2367 |
|
2368 |
-
#: lite/wpforms-lite.php:
|
2369 |
msgid "From Name"
|
2370 |
msgstr ""
|
2371 |
|
2372 |
-
#: lite/wpforms-lite.php:
|
2373 |
msgid "From Email"
|
2374 |
msgstr ""
|
2375 |
|
2376 |
-
#: lite/wpforms-lite.php:
|
2377 |
msgid "Reply-To"
|
2378 |
msgstr ""
|
2379 |
|
2380 |
-
#: lite/wpforms-lite.php:
|
2381 |
msgid ""
|
2382 |
"To display all form fields, use the <code>{all_fields}</code> Smart Tag."
|
2383 |
msgstr ""
|
2384 |
|
2385 |
-
#: lite/wpforms-lite.php:
|
2386 |
msgid "is a PRO Feature"
|
2387 |
msgstr ""
|
2388 |
|
2389 |
-
#: lite/wpforms-lite.php:
|
2390 |
msgid ""
|
2391 |
"We're sorry, %name% is not available on your plan.<br><br>Please upgrade to "
|
2392 |
"the PRO plan to unlock all these awesome features."
|
2393 |
msgstr ""
|
2394 |
|
2395 |
-
#: lite/wpforms-lite.php:441
|
2396 |
-
msgid "Upgrade to PRO"
|
2397 |
-
msgstr ""
|
2398 |
-
|
2399 |
#: pro/includes/admin/ajax-actions.php:24
|
2400 |
msgid "Addon deactivated."
|
2401 |
msgstr ""
|
@@ -2425,8 +2802,13 @@ msgstr ""
|
|
2425 |
msgid "Addon installed."
|
2426 |
msgstr ""
|
2427 |
|
|
|
|
|
|
|
|
|
|
|
2428 |
#: pro/includes/admin/builder/panels/class-payments.php:21
|
2429 |
-
#: pro/
|
2430 |
msgid "Payments"
|
2431 |
msgstr ""
|
2432 |
|
@@ -2452,265 +2834,120 @@ msgid ""
|
|
2452 |
"best to get it added as fast as possible"
|
2453 |
msgstr ""
|
2454 |
|
2455 |
-
#: pro/includes/admin/class-addons.php:
|
2456 |
-
#: pro/includes/admin/class-addons.php:239
|
2457 |
-
msgid "Install Addon"
|
2458 |
-
msgstr ""
|
2459 |
-
|
2460 |
-
#: pro/includes/admin/class-addons.php:86
|
2461 |
-
#: pro/includes/admin/class-addons.php:235
|
2462 |
-
msgid "Deactivate"
|
2463 |
-
msgstr ""
|
2464 |
-
|
2465 |
-
#: pro/includes/admin/class-addons.php:87
|
2466 |
-
#: pro/includes/admin/class-addons.php:237
|
2467 |
-
msgid "Activate"
|
2468 |
-
msgstr ""
|
2469 |
-
|
2470 |
-
#: pro/includes/admin/class-addons.php:108
|
2471 |
msgid "Refresh Addons"
|
2472 |
msgstr ""
|
2473 |
|
2474 |
-
#: pro/includes/admin/class-addons.php:
|
2475 |
msgid ""
|
2476 |
"There was an issue retrieving the addons for this site. Please click on the "
|
2477 |
"button above the refresh the addons data."
|
2478 |
msgstr ""
|
2479 |
|
2480 |
-
#: pro/includes/admin/class-addons.php:
|
2481 |
msgid ""
|
2482 |
"In order to get access to Addons, you need to resolve your license key "
|
2483 |
"errors."
|
2484 |
msgstr ""
|
2485 |
|
2486 |
-
#: pro/includes/admin/class-addons.php:
|
2487 |
msgid ""
|
2488 |
"In order to get access to Addons, you need to verify your license key for "
|
2489 |
"WPForms."
|
2490 |
msgstr ""
|
2491 |
|
2492 |
-
#: pro/includes/admin/class-addons.php:
|
|
|
|
|
|
|
|
|
2493 |
msgid ""
|
2494 |
"Improve your forms with our premium addons. Missing an addon that you think "
|
2495 |
-
"you should be able to see? Click the Refresh Addons
|
|
|
2496 |
msgstr ""
|
2497 |
|
2498 |
-
#: pro/includes/admin/class-addons.php:
|
2499 |
-
msgid "Addons
|
2500 |
msgstr ""
|
2501 |
|
2502 |
-
#: pro/includes/admin/class-addons.php:
|
2503 |
msgid "Unlock More Features..."
|
2504 |
msgstr ""
|
2505 |
|
2506 |
-
#: pro/includes/admin/class-addons.php:
|
2507 |
msgid ""
|
2508 |
-
"Want to get even more features?
|
|
|
2509 |
"following extensions."
|
2510 |
msgstr ""
|
2511 |
|
2512 |
-
#: pro/includes/admin/class-addons.php:
|
2513 |
-
msgid "
|
|
|
|
|
|
|
|
|
|
|
2514 |
msgstr ""
|
2515 |
|
2516 |
#: pro/includes/admin/class-license.php:93
|
2517 |
-
#: pro/includes/admin/class-license.php:
|
2518 |
-
#: pro/includes/admin/class-license.php:
|
2519 |
msgid ""
|
2520 |
"There was an error connecting to the remote key API. Please try again later."
|
2521 |
msgstr ""
|
2522 |
|
2523 |
-
#: pro/includes/admin/class-license.php:
|
2524 |
msgid "Congratulations! This site is now receiving automatic updates."
|
2525 |
msgstr ""
|
2526 |
|
2527 |
-
#: pro/includes/admin/class-license.php:
|
2528 |
-
msgid "Your key has been refreshed successfully."
|
2529 |
-
msgstr ""
|
2530 |
-
|
2531 |
-
#: pro/includes/admin/class-license.php:240
|
2532 |
-
msgid "You have deactivated the key from this site successfully."
|
2533 |
-
msgstr ""
|
2534 |
-
|
2535 |
-
#: pro/includes/admin/class-license.php:272
|
2536 |
-
msgid ""
|
2537 |
-
"Please <a href=\"%s\">enter and activate</a> your license key for WPForms to "
|
2538 |
-
"enable automatic updates."
|
2539 |
-
msgstr ""
|
2540 |
-
|
2541 |
-
#: pro/includes/admin/class-license.php:281
|
2542 |
-
msgid ""
|
2543 |
-
"Your license key for WPForms has expired. <a href=\"%s\" target=\"_blank\" "
|
2544 |
-
"rel=\"noopener\">Please click here to renew your license key and continue "
|
2545 |
-
"receiving automatic updates.</a>"
|
2546 |
-
msgstr ""
|
2547 |
-
|
2548 |
-
#: pro/includes/admin/class-license.php:290
|
2549 |
-
msgid ""
|
2550 |
-
"Your license key for WPForms has been disabled. Please use a different key "
|
2551 |
-
"to continue receiving automatic updates."
|
2552 |
-
msgstr ""
|
2553 |
-
|
2554 |
-
#: pro/includes/admin/class-license.php:299
|
2555 |
msgid ""
|
2556 |
-
"
|
2557 |
"user associated with the key has been deleted. Please use a different key to "
|
2558 |
"continue receiving automatic updates."
|
2559 |
msgstr ""
|
2560 |
|
2561 |
-
#: pro/includes/admin/class-
|
2562 |
-
msgid ""
|
2563 |
-
"Hey, I noticed you collected over 50 entries from WPForms - that’s awesome! "
|
2564 |
-
"Could you please do me a BIG favor and give it a 5-star rating on WordPress "
|
2565 |
-
"to help us spread the word and boost our motivation?"
|
2566 |
-
msgstr ""
|
2567 |
-
|
2568 |
-
#: pro/includes/admin/class-settings.php:184
|
2569 |
-
msgid "Import/Export"
|
2570 |
-
msgstr ""
|
2571 |
-
|
2572 |
-
#: pro/includes/admin/class-settings.php:249
|
2573 |
-
msgid "Please enter a license key to verify."
|
2574 |
-
msgstr ""
|
2575 |
-
|
2576 |
-
#: pro/includes/admin/class-settings.php:278
|
2577 |
-
msgid "License"
|
2578 |
-
msgstr ""
|
2579 |
-
|
2580 |
-
#: pro/includes/admin/class-settings.php:279
|
2581 |
-
msgid "Your license key provides access to updates and Add-ons. "
|
2582 |
-
msgstr ""
|
2583 |
-
|
2584 |
-
#: pro/includes/admin/class-settings.php:284
|
2585 |
-
msgid "License Key"
|
2586 |
-
msgstr ""
|
2587 |
-
|
2588 |
-
#: pro/includes/admin/class-settings.php:288
|
2589 |
-
msgid "Verify Key"
|
2590 |
-
msgstr ""
|
2591 |
-
|
2592 |
-
#: pro/includes/admin/class-settings.php:290
|
2593 |
-
msgid "Deactivate Key"
|
2594 |
-
msgstr ""
|
2595 |
-
|
2596 |
-
#: pro/includes/admin/class-settings.php:298
|
2597 |
-
msgid "License Key Type"
|
2598 |
-
msgstr ""
|
2599 |
-
|
2600 |
-
#: pro/includes/admin/class-settings.php:301
|
2601 |
-
msgid "Your license key type for this site is <strong>%s.</strong>"
|
2602 |
-
msgstr ""
|
2603 |
-
|
2604 |
-
#: pro/includes/admin/class-settings.php:302
|
2605 |
-
msgid "Refresh Key"
|
2606 |
-
msgstr ""
|
2607 |
-
|
2608 |
-
#: pro/includes/admin/class-settings.php:303
|
2609 |
msgid ""
|
2610 |
-
"
|
2611 |
-
|
2612 |
-
|
2613 |
-
#: pro/includes/admin/class-settings.php:485
|
2614 |
-
msgid "File Extension"
|
2615 |
-
msgstr ""
|
2616 |
-
|
2617 |
-
#: pro/includes/admin/class-settings.php:493
|
2618 |
-
msgid "File Size"
|
2619 |
-
msgstr ""
|
2620 |
-
|
2621 |
-
#: pro/includes/admin/class-settings.php:501
|
2622 |
-
msgid "Time (12 hour)"
|
2623 |
-
msgstr ""
|
2624 |
-
|
2625 |
-
#: pro/includes/admin/class-settings.php:509
|
2626 |
-
msgid "Time (24 hour)"
|
2627 |
-
msgstr ""
|
2628 |
-
|
2629 |
-
#: pro/includes/admin/class-settings.php:517
|
2630 |
-
msgid "Payment Required"
|
2631 |
-
msgstr ""
|
2632 |
-
|
2633 |
-
#: pro/includes/admin/class-settings.php:525
|
2634 |
-
#: pro/includes/fields/class-payment-credit-card.php:21
|
2635 |
-
msgid "Credit Card"
|
2636 |
-
msgstr ""
|
2637 |
-
|
2638 |
-
#: pro/includes/admin/class-settings.php:567
|
2639 |
-
msgid "Settings updated."
|
2640 |
-
msgstr ""
|
2641 |
-
|
2642 |
-
#: pro/includes/admin/class-settings.php:581
|
2643 |
-
msgid "Currency"
|
2644 |
-
msgstr ""
|
2645 |
-
|
2646 |
-
#: pro/includes/admin/class-settings.php:593
|
2647 |
-
msgid "Determines which currency to use for payments."
|
2648 |
-
msgstr ""
|
2649 |
-
|
2650 |
-
#: pro/includes/admin/class-settings.php:643
|
2651 |
-
msgid "Form(s) imported"
|
2652 |
-
msgstr ""
|
2653 |
-
|
2654 |
-
#: pro/includes/admin/class-settings.php:652
|
2655 |
-
msgid "Form Import"
|
2656 |
-
msgstr ""
|
2657 |
-
|
2658 |
-
#: pro/includes/admin/class-settings.php:657
|
2659 |
-
msgid "Select an export file."
|
2660 |
-
msgstr ""
|
2661 |
-
|
2662 |
-
#: pro/includes/admin/class-settings.php:663
|
2663 |
-
msgid "Import"
|
2664 |
msgstr ""
|
2665 |
|
2666 |
-
#: pro/includes/admin/class-
|
2667 |
-
|
2668 |
-
msgstr ""
|
2669 |
-
|
2670 |
-
#: pro/includes/admin/class-settings.php:675
|
2671 |
msgid ""
|
2672 |
-
"
|
2673 |
-
"
|
2674 |
msgstr ""
|
2675 |
|
2676 |
-
#: pro/includes/admin/class-
|
2677 |
-
msgid "
|
2678 |
msgstr ""
|
2679 |
|
2680 |
-
#: pro/includes/admin/class-
|
2681 |
-
msgid "
|
2682 |
msgstr ""
|
2683 |
|
2684 |
-
#: pro/includes/admin/class-
|
2685 |
msgid ""
|
2686 |
-
"
|
2687 |
-
"
|
2688 |
-
"it within an external file."
|
2689 |
msgstr ""
|
2690 |
|
2691 |
-
#: pro/includes/admin/class-
|
2692 |
msgid ""
|
2693 |
-
"
|
2694 |
-
"
|
|
|
2695 |
msgstr ""
|
2696 |
|
2697 |
-
#: pro/includes/admin/class-
|
2698 |
msgid ""
|
2699 |
-
"
|
2700 |
-
"
|
2701 |
-
|
2702 |
-
|
2703 |
-
#: pro/includes/admin/class-settings.php:724
|
2704 |
-
msgid "Generate template code"
|
2705 |
-
msgstr ""
|
2706 |
-
|
2707 |
-
#: pro/includes/admin/class-settings.php:789
|
2708 |
-
msgid "Please upload a valid .json form export file."
|
2709 |
-
msgstr ""
|
2710 |
-
|
2711 |
-
#: pro/includes/admin/class-settings.php:789
|
2712 |
-
#: pro/includes/admin/entries/class-entries-export.php:305
|
2713 |
-
msgid "Error"
|
2714 |
msgstr ""
|
2715 |
|
2716 |
#: pro/includes/admin/entries/class-entries-export.php:179
|
@@ -2721,352 +2958,301 @@ msgstr ""
|
|
2721 |
msgid "ID"
|
2722 |
msgstr ""
|
2723 |
|
2724 |
-
#: pro/includes/admin/entries/class-entries-export.php:
|
2725 |
msgid "You do not have permission to export entries."
|
2726 |
msgstr ""
|
2727 |
|
2728 |
-
#: pro/includes/admin/entries/class-entries-table.php:101
|
2729 |
msgid "All"
|
2730 |
msgstr ""
|
2731 |
|
2732 |
-
#: pro/includes/admin/entries/class-entries-table.php:102
|
2733 |
msgid "Unread"
|
2734 |
msgstr ""
|
2735 |
|
2736 |
-
#: pro/includes/admin/entries/class-entries-table.php:103
|
2737 |
msgid "Starred"
|
2738 |
msgstr ""
|
2739 |
|
2740 |
-
#: pro/includes/admin/entries/class-entries-table.php:127
|
2741 |
#: pro/includes/fields/class-payment-total.php:21
|
2742 |
msgid "Total"
|
2743 |
msgstr ""
|
2744 |
|
2745 |
-
#: pro/includes/admin/entries/class-entries-table.php:
|
2746 |
-
|
2747 |
-
msgstr ""
|
2748 |
-
|
2749 |
-
#: pro/includes/admin/entries/class-entries-table.php:137
|
2750 |
-
#: pro/includes/admin/entries/class-entries.php:1363
|
2751 |
msgid "Actions"
|
2752 |
msgstr ""
|
2753 |
|
2754 |
-
#: pro/includes/admin/entries/class-entries-table.php:264
|
2755 |
-
#: pro/includes/admin/entries/class-entries.php:
|
2756 |
msgid "Unknown"
|
2757 |
msgstr ""
|
2758 |
|
2759 |
-
#: pro/includes/admin/entries/class-entries-table.php:271
|
2760 |
-
#: pro/includes/admin/entries/class-entries.php:
|
2761 |
msgid "Completed"
|
2762 |
msgstr ""
|
2763 |
|
2764 |
-
#: pro/includes/admin/entries/class-entries-table.php:
|
2765 |
-
#: pro/includes/admin/entries/class-entries.php:244
|
2766 |
-
msgid "Unstar entry"
|
2767 |
-
msgstr ""
|
2768 |
-
|
2769 |
-
#: pro/includes/admin/entries/class-entries-table.php:308
|
2770 |
-
#: pro/includes/admin/entries/class-entries.php:245
|
2771 |
-
msgid "Star entry"
|
2772 |
-
msgstr ""
|
2773 |
-
|
2774 |
-
#: pro/includes/admin/entries/class-entries-table.php:313
|
2775 |
-
#: pro/includes/admin/entries/class-entries.php:247
|
2776 |
-
msgid "Mark entry unread"
|
2777 |
-
msgstr ""
|
2778 |
-
|
2779 |
-
#: pro/includes/admin/entries/class-entries-table.php:313
|
2780 |
-
#: pro/includes/admin/entries/class-entries.php:246
|
2781 |
-
msgid "Mark entry read"
|
2782 |
-
msgstr ""
|
2783 |
-
|
2784 |
-
#: pro/includes/admin/entries/class-entries-table.php:333
|
2785 |
msgid "View Form Entry"
|
2786 |
msgstr ""
|
2787 |
|
2788 |
-
#: pro/includes/admin/entries/class-entries-table.php:334
|
2789 |
msgid "View"
|
2790 |
msgstr ""
|
2791 |
|
2792 |
-
#: pro/includes/admin/entries/class-entries-table.php:340
|
2793 |
msgid "Delete Form Entry"
|
2794 |
msgstr ""
|
2795 |
|
2796 |
-
#: pro/includes/admin/entries/class-entries-table.php:356
|
2797 |
msgid "Mark Read"
|
2798 |
msgstr ""
|
2799 |
|
2800 |
-
#: pro/includes/admin/entries/class-entries-table.php:357
|
2801 |
-
#: pro/includes/admin/entries/class-entries.php:
|
2802 |
msgid "Mark Unread"
|
2803 |
msgstr ""
|
2804 |
|
2805 |
-
#: pro/includes/admin/entries/class-entries-table.php:358
|
2806 |
-
#: pro/includes/admin/entries/class-entries.php:
|
2807 |
msgid "Star"
|
2808 |
msgstr ""
|
2809 |
|
2810 |
-
#: pro/includes/admin/entries/class-entries-table.php:359
|
2811 |
-
#: pro/includes/admin/entries/class-entries.php:
|
2812 |
msgid "Unstar"
|
2813 |
msgstr ""
|
2814 |
|
2815 |
-
#: pro/includes/admin/entries/class-entries-table.php:361
|
2816 |
msgid "----------"
|
2817 |
msgstr ""
|
2818 |
|
2819 |
-
#: pro/includes/admin/entries/class-entries-table.php:405
|
2820 |
msgid "Entry marked as read."
|
2821 |
msgid_plural "Entries marked as read."
|
2822 |
msgstr[0] ""
|
2823 |
msgstr[1] ""
|
2824 |
|
2825 |
-
#: pro/includes/admin/entries/class-entries-table.php:414
|
2826 |
msgid "Entry marked as unread."
|
2827 |
msgid_plural "Entries marked as unread."
|
2828 |
msgstr[0] ""
|
2829 |
msgstr[1] ""
|
2830 |
|
2831 |
-
#: pro/includes/admin/entries/class-entries-table.php:423
|
2832 |
msgid "Entry starred."
|
2833 |
msgid_plural "Entries starred."
|
2834 |
msgstr[0] ""
|
2835 |
msgstr[1] ""
|
2836 |
|
2837 |
-
#: pro/includes/admin/entries/class-entries-table.php:432
|
2838 |
msgid "Entry unstarred."
|
2839 |
msgid_plural "Entries unstarred."
|
2840 |
msgstr[0] ""
|
2841 |
msgstr[1] ""
|
2842 |
|
2843 |
-
#: pro/includes/admin/entries/class-entries-table.php:441
|
2844 |
msgid "Entry successfully deleted."
|
2845 |
msgid_plural "Entries successfully deleted."
|
2846 |
msgstr[0] ""
|
2847 |
msgstr[1] ""
|
2848 |
|
2849 |
-
#: pro/includes/admin/entries/class-entries-table.php:452
|
2850 |
msgid "Whoops, it appears you do not have any form entries yet."
|
2851 |
msgstr ""
|
2852 |
|
2853 |
-
#: pro/includes/admin/entries/class-entries.php:
|
2854 |
msgid "Number of entries per page:"
|
2855 |
msgstr ""
|
2856 |
|
2857 |
-
#: pro/includes/admin/entries/class-entries.php:
|
2858 |
-
|
2859 |
-
msgid "Are you sure you want to delete this entry?"
|
2860 |
-
msgstr ""
|
2861 |
-
|
2862 |
-
#: pro/includes/admin/entries/class-entries.php:269
|
2863 |
-
#: pro/includes/admin/entries/class-entries.php:904
|
2864 |
-
msgid "Hide Empty Fields"
|
2865 |
-
msgstr ""
|
2866 |
-
|
2867 |
-
#: pro/includes/admin/entries/class-entries.php:270
|
2868 |
-
#: pro/includes/admin/entries/class-entries.php:904
|
2869 |
-
msgid "Show Empty Fields"
|
2870 |
msgstr ""
|
2871 |
|
2872 |
-
#: pro/includes/admin/entries/class-entries.php:
|
2873 |
-
msgid "
|
2874 |
msgstr ""
|
2875 |
|
2876 |
-
#: pro/includes/admin/entries/class-entries.php:
|
2877 |
-
msgid "
|
2878 |
msgstr ""
|
2879 |
|
2880 |
-
#: pro/includes/admin/entries/class-entries.php:
|
2881 |
msgid "Edit This Form"
|
2882 |
msgstr ""
|
2883 |
|
2884 |
-
#: pro/includes/admin/entries/class-entries.php:
|
2885 |
msgid "Download Export (CSV)"
|
2886 |
msgstr ""
|
2887 |
|
2888 |
-
#: pro/includes/admin/entries/class-entries.php:
|
2889 |
msgid "Mark All Read"
|
2890 |
msgstr ""
|
2891 |
|
2892 |
-
#: pro/includes/admin/entries/class-entries.php:
|
2893 |
-
msgid "Select a different form"
|
2894 |
-
msgstr ""
|
2895 |
-
|
2896 |
-
#: pro/includes/admin/entries/class-entries.php:606
|
2897 |
msgid "This entry has been starred."
|
2898 |
msgstr ""
|
2899 |
|
2900 |
-
#: pro/includes/admin/entries/class-entries.php:
|
2901 |
msgid "This entry has been unstarred."
|
2902 |
msgstr ""
|
2903 |
|
2904 |
-
#: pro/includes/admin/entries/class-entries.php:
|
2905 |
msgid "This entry has been marked unread."
|
2906 |
msgstr ""
|
2907 |
|
2908 |
-
#: pro/includes/admin/entries/class-entries.php:
|
2909 |
msgid "Note deleted."
|
2910 |
msgstr ""
|
2911 |
|
2912 |
-
#: pro/includes/admin/entries/class-entries.php:
|
2913 |
msgid "Note added."
|
2914 |
msgstr ""
|
2915 |
|
2916 |
-
#: pro/includes/admin/entries/class-entries.php:
|
|
|
|
|
|
|
|
|
2917 |
msgid "Invalid entry ID."
|
2918 |
msgstr ""
|
2919 |
|
2920 |
-
#: pro/includes/admin/entries/class-entries.php:
|
2921 |
msgid "Entry not found."
|
2922 |
msgstr ""
|
2923 |
|
2924 |
-
#: pro/includes/admin/entries/class-entries.php:
|
2925 |
msgid "Form not found."
|
2926 |
msgstr ""
|
2927 |
|
2928 |
-
#: pro/includes/admin/entries/class-entries.php:
|
2929 |
-
msgid "Notifications sent!"
|
2930 |
-
msgstr ""
|
2931 |
-
|
2932 |
-
#: pro/includes/admin/entries/class-entries.php:845
|
2933 |
msgid "View Entry"
|
2934 |
msgstr ""
|
2935 |
|
2936 |
-
#: pro/includes/admin/entries/class-entries.php:
|
2937 |
msgid "Back to All Entries"
|
2938 |
msgstr ""
|
2939 |
|
2940 |
-
#: pro/includes/admin/entries/class-entries.php:
|
2941 |
msgid "Entry %s of %s"
|
2942 |
msgstr ""
|
2943 |
|
2944 |
-
#: pro/includes/admin/entries/class-entries.php:
|
2945 |
msgid "Previous form entry"
|
2946 |
msgstr ""
|
2947 |
|
2948 |
-
#: pro/includes/admin/entries/class-entries.php:
|
2949 |
msgid "Current form entry"
|
2950 |
msgstr ""
|
2951 |
|
2952 |
-
#: pro/includes/admin/entries/class-entries.php:
|
2953 |
msgid "Next form entry"
|
2954 |
msgstr ""
|
2955 |
|
2956 |
-
#: pro/includes/admin/entries/class-entries.php:
|
2957 |
-
|
2958 |
-
msgstr ""
|
2959 |
-
|
2960 |
-
#: pro/includes/admin/entries/class-entries.php:978
|
2961 |
-
#: pro/includes/admin/entries/class-entries.php:993
|
2962 |
msgid "Add Note"
|
2963 |
msgstr ""
|
2964 |
|
2965 |
-
#: pro/includes/admin/entries/class-entries.php:
|
2966 |
msgid "No notes."
|
2967 |
msgstr ""
|
2968 |
|
2969 |
-
#: pro/includes/admin/entries/class-entries.php:
|
2970 |
msgid "Added by"
|
2971 |
msgstr ""
|
2972 |
|
2973 |
-
#: pro/includes/admin/entries/class-entries.php:
|
2974 |
msgid "on"
|
2975 |
msgstr ""
|
2976 |
|
2977 |
-
#: pro/includes/admin/entries/class-entries.php:
|
2978 |
msgid "Debug Information"
|
2979 |
msgstr ""
|
2980 |
|
2981 |
-
#: pro/includes/admin/entries/class-entries.php:
|
2982 |
msgid "Entry Details"
|
2983 |
msgstr ""
|
2984 |
|
2985 |
-
#: pro/includes/admin/entries/class-entries.php:
|
2986 |
msgid "Entry ID:"
|
2987 |
msgstr ""
|
2988 |
|
2989 |
-
#: pro/includes/admin/entries/class-entries.php:
|
2990 |
msgid "Submitted:"
|
2991 |
msgstr ""
|
2992 |
|
2993 |
-
#: pro/includes/admin/entries/class-entries.php:
|
2994 |
msgid "Modified :"
|
2995 |
msgstr ""
|
2996 |
|
2997 |
-
#: pro/includes/admin/entries/class-entries.php:
|
2998 |
msgid "M j, Y @ H:i"
|
2999 |
msgstr ""
|
3000 |
|
3001 |
-
#: pro/includes/admin/entries/class-entries.php:
|
3002 |
msgid "User:"
|
3003 |
msgstr ""
|
3004 |
|
3005 |
-
#: pro/includes/admin/entries/class-entries.php:
|
3006 |
msgid "User IP:"
|
3007 |
msgstr ""
|
3008 |
|
3009 |
-
#: pro/includes/admin/entries/class-entries.php:
|
3010 |
msgid "Status:"
|
3011 |
msgstr ""
|
3012 |
|
3013 |
-
#: pro/includes/admin/entries/class-entries.php:
|
3014 |
-
msgid "Stripe"
|
3015 |
-
msgstr ""
|
3016 |
-
|
3017 |
-
#: pro/includes/admin/entries/class-entries.php:1197
|
3018 |
msgid "PayPal Standard"
|
3019 |
msgstr ""
|
3020 |
|
3021 |
-
#: pro/includes/admin/entries/class-entries.php:
|
3022 |
msgid "Payment Details"
|
3023 |
msgstr ""
|
3024 |
|
3025 |
-
#: pro/includes/admin/entries/class-entries.php:
|
3026 |
msgid " Status:"
|
3027 |
msgstr ""
|
3028 |
|
3029 |
-
#: pro/includes/admin/entries/class-entries.php:
|
3030 |
msgid " Total:"
|
3031 |
msgstr ""
|
3032 |
|
3033 |
-
#: pro/includes/admin/entries/class-entries.php:
|
3034 |
msgid " Gateway:"
|
3035 |
msgstr ""
|
3036 |
|
3037 |
-
#: pro/includes/admin/entries/class-entries.php:
|
3038 |
msgid "Test"
|
3039 |
msgstr ""
|
3040 |
|
3041 |
-
#: pro/includes/admin/entries/class-entries.php:
|
3042 |
msgid "Transaction ID:"
|
3043 |
msgstr ""
|
3044 |
|
3045 |
-
#: pro/includes/admin/entries/class-entries.php:
|
3046 |
msgid "Note:"
|
3047 |
msgstr ""
|
3048 |
|
3049 |
-
#: pro/includes/admin/entries/class-entries.php:
|
3050 |
-
msgid "Print"
|
3051 |
-
msgstr ""
|
3052 |
-
|
3053 |
-
#: pro/includes/admin/entries/class-entries.php:1337
|
3054 |
msgid "Export (CSV)"
|
3055 |
msgstr ""
|
3056 |
|
3057 |
-
#: pro/includes/admin/entries/class-entries.php:
|
3058 |
msgid "Resend Notifications"
|
3059 |
msgstr ""
|
3060 |
|
3061 |
-
#: pro/includes/admin/entries/class-entries.php:
|
3062 |
msgid "Related Entries"
|
3063 |
msgstr ""
|
3064 |
|
3065 |
-
#: pro/includes/admin/entries/class-entries.php:
|
3066 |
msgid "The user who created this entry also submitted the entries below."
|
3067 |
msgstr ""
|
3068 |
|
3069 |
-
#: pro/includes/admin/entries/class-entries.php:
|
3070 |
msgid "(Abandoned)"
|
3071 |
msgstr ""
|
3072 |
|
@@ -3178,10 +3364,6 @@ msgstr ""
|
|
3178 |
msgid "Date Dropdown"
|
3179 |
msgstr ""
|
3180 |
|
3181 |
-
#: pro/includes/fields/class-date-time.php:139
|
3182 |
-
msgid "Type"
|
3183 |
-
msgstr ""
|
3184 |
-
|
3185 |
#: pro/includes/fields/class-date-time.php:152
|
3186 |
msgid "15 minutes"
|
3187 |
msgstr ""
|
@@ -3325,6 +3507,10 @@ msgstr ""
|
|
3325 |
msgid "Connector"
|
3326 |
msgstr ""
|
3327 |
|
|
|
|
|
|
|
|
|
3328 |
#: pro/includes/fields/class-page-break.php:281
|
3329 |
msgid "Progress Indicator"
|
3330 |
msgstr ""
|
@@ -3418,6 +3604,18 @@ msgstr ""
|
|
3418 |
msgid "Confirm Password"
|
3419 |
msgstr ""
|
3420 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
3421 |
#: pro/includes/fields/class-payment-credit-card.php:73
|
3422 |
#: pro/includes/fields/class-payment-credit-card.php:277
|
3423 |
msgid "Card Number"
|
@@ -3712,37 +3910,61 @@ msgstr ""
|
|
3712 |
msgid "Request"
|
3713 |
msgstr ""
|
3714 |
|
3715 |
-
#: pro/wpforms-pro.php:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
3716 |
msgid "Disable storing entry information in WordPress"
|
3717 |
msgstr ""
|
3718 |
|
3719 |
-
#: pro/wpforms-pro.php:
|
3720 |
msgid "Add New Notification"
|
3721 |
msgstr ""
|
3722 |
|
3723 |
-
#: pro/wpforms-pro.php:
|
3724 |
msgid "Send"
|
3725 |
msgstr ""
|
3726 |
|
3727 |
-
#: pro/wpforms-pro.php:
|
3728 |
msgid "Don't send"
|
3729 |
msgstr ""
|
3730 |
|
3731 |
-
#: pro/wpforms-pro.php:
|
3732 |
msgid "this notification if"
|
3733 |
msgstr ""
|
3734 |
|
3735 |
-
#: pro/wpforms-pro.php:
|
3736 |
msgid "Email notifications"
|
3737 |
msgstr ""
|
3738 |
|
3739 |
-
#: pro/wpforms-pro.php:
|
3740 |
msgid ""
|
3741 |
"Install the <a href=\"%s\">Conditional Logic add-on</a> to enable "
|
3742 |
"conditional logic for Email Notifications."
|
3743 |
msgstr ""
|
3744 |
|
3745 |
-
#: pro/wpforms-pro.php:
|
3746 |
msgid ""
|
3747 |
"Conditional logic functionality is now included in the core WPForms plugin! "
|
3748 |
"The WPForms Conditional Logic addon can be removed without affecting your "
|
@@ -3750,13 +3972,13 @@ msgid ""
|
|
3750 |
"noreferrer\">read our annoucement</a>."
|
3751 |
msgstr ""
|
3752 |
|
3753 |
-
#: wpforms.php:
|
3754 |
msgid "Please deactivate WPForms Lite before activating WPForms"
|
3755 |
msgstr ""
|
3756 |
|
3757 |
-
#. #-#-#-#-# wpforms.pot (WPForms 1.3.
|
3758 |
#. Plugin URI of the plugin/theme
|
3759 |
-
#. #-#-#-#-# wpforms.pot (WPForms 1.3.
|
3760 |
#. Author URI of the plugin/theme
|
3761 |
msgid "https://wpforms.com"
|
3762 |
msgstr ""
|
2 |
# This file is distributed under the same license as the WPForms package.
|
3 |
msgid ""
|
4 |
msgstr ""
|
5 |
+
"Project-Id-Version: WPForms 1.3.9.1\n"
|
6 |
"Report-Msgid-Bugs-To: https://wordpress.org/support/plugin/wpforms\n"
|
7 |
+
"POT-Creation-Date: 2017-08-02 14:29:50+00:00\n"
|
8 |
"MIME-Version: 1.0\n"
|
9 |
"Content-Type: text/plain; charset=UTF-8\n"
|
10 |
"Content-Transfer-Encoding: 8bit\n"
|
12 |
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
13 |
"Language-Team: LANGUAGE <LL@li.org>\n"
|
14 |
|
15 |
+
#: includes/admin/admin.php:126 pro/includes/admin/class-addons.php:241
|
16 |
+
msgid "Activate"
|
17 |
+
msgstr ""
|
18 |
+
|
19 |
+
#: includes/admin/admin.php:127 pro/includes/admin/class-addons.php:198
|
20 |
+
msgid "Active"
|
21 |
+
msgstr ""
|
22 |
+
|
23 |
+
#: includes/admin/admin.php:128 pro/includes/admin/class-addons.php:236
|
24 |
+
msgid "Deactivate"
|
25 |
+
msgstr ""
|
26 |
+
|
27 |
+
#: includes/admin/admin.php:129 pro/includes/admin/class-addons.php:204
|
28 |
+
msgid "Inactive"
|
29 |
+
msgstr ""
|
30 |
+
|
31 |
+
#: includes/admin/admin.php:130 pro/includes/admin/class-addons.php:246
|
32 |
+
msgid "Install Addon"
|
33 |
+
msgstr ""
|
34 |
+
|
35 |
+
#: includes/admin/admin.php:132 includes/admin/builder/class-builder.php:286
|
36 |
+
#: includes/admin/class-editor.php:96
|
37 |
+
#: pro/includes/admin/entries/class-entries-single.php:560
|
38 |
+
msgid "Cancel"
|
39 |
+
msgstr ""
|
40 |
+
|
41 |
+
#: includes/admin/admin.php:133 includes/admin/builder/class-builder.php:288
|
42 |
+
#: includes/admin/class-editor.php:70 includes/class-preview.php:150
|
43 |
+
msgid "Close"
|
44 |
+
msgstr ""
|
45 |
+
|
46 |
+
#: includes/admin/admin.php:134
|
47 |
+
msgid "Are you sure you want to delete this entry?"
|
48 |
+
msgstr ""
|
49 |
+
|
50 |
+
#: includes/admin/admin.php:135
|
51 |
+
#: pro/includes/admin/entries/class-entries-single.php:470
|
52 |
+
msgid "Hide Empty Fields"
|
53 |
+
msgstr ""
|
54 |
+
|
55 |
+
#: includes/admin/admin.php:136
|
56 |
+
#: pro/includes/admin/entries/class-entries-single.php:470
|
57 |
+
msgid "Show Empty Fields"
|
58 |
+
msgstr ""
|
59 |
+
|
60 |
+
#: includes/admin/admin.php:137
|
61 |
+
msgid "Are you sure you want to delete this note?"
|
62 |
+
msgstr ""
|
63 |
+
|
64 |
+
#: includes/admin/admin.php:138
|
65 |
+
#: pro/includes/admin/entries/class-entries-list-table.php:308
|
66 |
+
msgid "Unstar entry"
|
67 |
+
msgstr ""
|
68 |
+
|
69 |
+
#: includes/admin/admin.php:139
|
70 |
+
#: pro/includes/admin/entries/class-entries-list-table.php:308
|
71 |
+
msgid "Star entry"
|
72 |
+
msgstr ""
|
73 |
+
|
74 |
+
#: includes/admin/admin.php:140
|
75 |
+
#: pro/includes/admin/entries/class-entries-list-table.php:313
|
76 |
+
msgid "Mark entry read"
|
77 |
+
msgstr ""
|
78 |
+
|
79 |
+
#: includes/admin/admin.php:141
|
80 |
+
#: pro/includes/admin/entries/class-entries-list-table.php:313
|
81 |
+
msgid "Mark entry unread"
|
82 |
+
msgstr ""
|
83 |
+
|
84 |
+
#: includes/admin/admin.php:142
|
85 |
+
msgid "Are you sure you want to delete this form?"
|
86 |
+
msgstr ""
|
87 |
+
|
88 |
+
#: includes/admin/admin.php:143
|
89 |
+
msgid "Are you sure you want to duplicate this form?"
|
90 |
+
msgstr ""
|
91 |
+
|
92 |
+
#: includes/admin/admin.php:144 includes/admin/builder/class-builder.php:296
|
93 |
+
msgid "Heads up!"
|
94 |
+
msgstr ""
|
95 |
+
|
96 |
+
#: includes/admin/admin.php:146 includes/admin/builder/class-builder.php:287
|
97 |
+
msgid "OK"
|
98 |
+
msgstr ""
|
99 |
+
|
100 |
+
#: includes/admin/admin.php:147
|
101 |
+
msgid "Are you sure you want to disconnect this account?"
|
102 |
+
msgstr ""
|
103 |
+
|
104 |
+
#: includes/admin/admin.php:148
|
105 |
+
msgid "Could not authenticate with the provider."
|
106 |
+
msgstr ""
|
107 |
+
|
108 |
+
#: includes/admin/admin.php:149
|
109 |
+
msgid "Upload or Choose Your Image"
|
110 |
+
msgstr ""
|
111 |
+
|
112 |
+
#: includes/admin/admin.php:150
|
113 |
+
msgid "Use Image"
|
114 |
+
msgstr ""
|
115 |
+
|
116 |
+
#: includes/admin/ajax-actions.php:24
|
117 |
+
msgid "You do not have permission."
|
118 |
msgstr ""
|
119 |
|
120 |
#: includes/admin/ajax-actions.php:28
|
141 |
msgid "Error updating form template"
|
142 |
msgstr ""
|
143 |
|
144 |
+
#: includes/admin/ajax-actions.php:243 includes/fields/class-base.php:395
|
145 |
msgid "post type"
|
146 |
msgstr ""
|
147 |
|
148 |
+
#: includes/admin/ajax-actions.php:262 includes/fields/class-base.php:402
|
149 |
msgid "taxonomy"
|
150 |
msgstr ""
|
151 |
|
159 |
msgstr ""
|
160 |
|
161 |
#: includes/admin/builder/class-builder.php:276
|
162 |
+
#: includes/fields/class-base.php:354
|
163 |
msgid "Bulk Add"
|
164 |
msgstr ""
|
165 |
|
210 |
"field difficult for your vistors to use and/or cause the form to be slow."
|
211 |
msgstr ""
|
212 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
213 |
#: includes/admin/builder/class-builder.php:289
|
214 |
msgid ""
|
215 |
"Due to form changes, conditional logic rules have been removed or updated:"
|
222 |
msgstr ""
|
223 |
|
224 |
#: includes/admin/builder/class-builder.php:291
|
225 |
+
#: pro/includes/admin/entries/class-entries-list-table.php:176
|
226 |
msgid "Field"
|
227 |
msgstr ""
|
228 |
|
242 |
msgid "No fields available"
|
243 |
msgstr ""
|
244 |
|
|
|
|
|
|
|
|
|
245 |
#: includes/admin/builder/class-builder.php:298
|
246 |
msgid "No email fields"
|
247 |
msgstr ""
|
269 |
msgstr ""
|
270 |
|
271 |
#: includes/admin/builder/class-builder.php:304
|
|
|
|
|
272 |
msgid "Saving ..."
|
273 |
msgstr ""
|
274 |
|
281 |
msgstr ""
|
282 |
|
283 |
#: includes/admin/builder/class-builder.php:307
|
284 |
+
#: includes/fields/class-base.php:533
|
285 |
msgid "Show Layouts"
|
286 |
msgstr ""
|
287 |
|
352 |
msgstr ""
|
353 |
|
354 |
#: includes/admin/builder/class-builder.php:329
|
355 |
+
#: includes/fields/class-base.php:245 includes/fields/class-base.php:582
|
356 |
+
#: lite/wpforms-lite.php:76 pro/wpforms-pro.php:367
|
357 |
msgid "Off"
|
358 |
msgstr ""
|
359 |
|
360 |
#: includes/admin/builder/class-builder.php:330
|
361 |
+
#: includes/fields/class-base.php:245 lite/wpforms-lite.php:75
|
362 |
+
#: pro/wpforms-pro.php:366
|
363 |
msgid "On"
|
364 |
msgstr ""
|
365 |
|
439 |
msgstr ""
|
440 |
|
441 |
#: includes/admin/builder/class-builder.php:348
|
442 |
+
#: includes/admin/builder/functions.php:249 includes/fields/class-base.php:479
|
443 |
msgid "Show Smart Tags"
|
444 |
msgstr ""
|
445 |
|
486 |
msgstr ""
|
487 |
|
488 |
#: includes/admin/builder/class-builder.php:460
|
489 |
+
#: pro/includes/admin/entries/class-entries-list.php:383
|
490 |
msgid "Preview Form"
|
491 |
msgstr ""
|
492 |
|
508 |
msgstr ""
|
509 |
|
510 |
#: includes/admin/builder/class-builder.php:472
|
|
|
511 |
msgid "Save"
|
512 |
msgstr ""
|
513 |
|
559 |
msgstr ""
|
560 |
|
561 |
#: includes/admin/builder/panels/class-fields.php:252
|
562 |
+
#: includes/fields/class-base.php:765
|
563 |
msgid "Duplicate Field"
|
564 |
msgstr ""
|
565 |
|
566 |
#: includes/admin/builder/panels/class-fields.php:254
|
567 |
+
#: includes/fields/class-base.php:766
|
568 |
msgid "Delete Field"
|
569 |
msgstr ""
|
570 |
|
571 |
#: includes/admin/builder/panels/class-fields.php:256
|
572 |
+
#: includes/fields/class-base.php:767
|
573 |
msgid "Click to edit. Drag to reorder."
|
574 |
msgstr ""
|
575 |
|
632 |
msgstr ""
|
633 |
|
634 |
#: includes/admin/builder/panels/class-settings.php:21
|
635 |
+
#: includes/admin/class-menu.php:84 includes/admin/class-menu.php:195
|
|
|
636 |
msgid "Settings"
|
637 |
msgstr ""
|
638 |
|
639 |
#: includes/admin/builder/panels/class-settings.php:57
|
640 |
#: includes/admin/builder/panels/class-settings.php:87
|
641 |
+
#: includes/admin/class-settings.php:166 includes/admin/class-settings.php:247
|
|
|
642 |
msgid "General"
|
643 |
msgstr ""
|
644 |
|
645 |
+
#: includes/admin/builder/panels/class-settings.php:58 lite/wpforms-lite.php:61
|
646 |
+
#: lite/wpforms-lite.php:71 pro/wpforms-pro.php:353 pro/wpforms-pro.php:362
|
647 |
msgid "Notifications"
|
648 |
msgstr ""
|
649 |
|
721 |
msgstr ""
|
722 |
|
723 |
#: includes/admin/builder/panels/class-settings.php:188
|
724 |
+
#: includes/templates/class-suggestion.php:74 lite/wpforms-lite.php:189
|
725 |
+
#: pro/wpforms-pro.php:486
|
726 |
msgid "Message"
|
727 |
msgstr ""
|
728 |
|
813 |
|
814 |
#: includes/admin/class-editor.php:88
|
815 |
#: includes/admin/overview/class-overview-table.php:250
|
816 |
+
#: pro/includes/admin/entries/class-entries-list.php:236
|
817 |
msgid ""
|
818 |
"Whoops, you haven't created a form yet. Want to <a href=\"%s\">give it a go</"
|
819 |
"a>?"
|
820 |
msgstr ""
|
821 |
|
822 |
+
#. #-#-#-#-# wpforms.pot (WPForms 1.3.9.1) #-#-#-#-#
|
823 |
#. Plugin Name of the plugin/theme
|
824 |
+
#. #-#-#-#-# wpforms.pot (WPForms 1.3.9.1) #-#-#-#-#
|
825 |
#. Author of the plugin/theme
|
826 |
+
#: includes/admin/class-menu.php:39 includes/admin/class-menu.php:40
|
827 |
+
#: includes/admin/class-menu.php:51 includes/admin/class-menu.php:103
|
828 |
#: includes/integrations.php:34
|
829 |
msgid "WPForms"
|
830 |
msgstr ""
|
831 |
|
832 |
+
#: includes/admin/class-menu.php:52
|
833 |
msgid "All Forms"
|
834 |
msgstr ""
|
835 |
|
836 |
+
#: includes/admin/class-menu.php:61
|
837 |
msgid "WPForms Builder"
|
838 |
msgstr ""
|
839 |
|
840 |
+
#: includes/admin/class-menu.php:62
|
841 |
+
#: includes/admin/overview/class-overview.php:124
|
842 |
#: includes/providers/class-base.php:903
|
843 |
msgid "Add New"
|
844 |
msgstr ""
|
845 |
|
846 |
+
#: includes/admin/class-menu.php:71
|
847 |
msgid "Form Entries"
|
848 |
msgstr ""
|
849 |
|
850 |
+
#: includes/admin/class-menu.php:72
|
851 |
#: includes/admin/overview/class-overview-table.php:152
|
852 |
+
#: pro/includes/admin/entries/class-entries-list.php:257
|
853 |
+
#: pro/wpforms-pro.php:306
|
854 |
msgid "Entries"
|
855 |
msgstr ""
|
856 |
|
857 |
+
#: includes/admin/class-menu.php:83
|
858 |
msgid "WPForms Settings"
|
859 |
msgstr ""
|
860 |
|
861 |
+
#: includes/admin/class-menu.php:93
|
862 |
+
msgid "WPForms Tools"
|
863 |
+
msgstr ""
|
864 |
+
|
865 |
+
#: includes/admin/class-menu.php:94
|
866 |
+
msgid "Tools"
|
867 |
+
msgstr ""
|
868 |
+
|
869 |
+
#: includes/admin/class-menu.php:104
|
870 |
msgid "Info"
|
871 |
msgstr ""
|
872 |
|
873 |
+
#: includes/admin/class-menu.php:113 pro/includes/admin/class-addons.php:83
|
874 |
msgid "WPForms Addons"
|
875 |
msgstr ""
|
876 |
|
877 |
+
#: includes/admin/class-menu.php:114
|
878 |
msgid "Addons"
|
879 |
msgstr ""
|
880 |
|
881 |
+
#: includes/admin/class-review.php:92
|
882 |
+
msgid ""
|
883 |
+
"Hey, I noticed you collected over 50 entries from WPForms - that’s awesome! "
|
884 |
+
"Could you please do me a BIG favor and give it a 5-star rating on WordPress "
|
885 |
+
"to help us spread the word and boost our motivation?"
|
886 |
+
msgstr ""
|
887 |
+
|
888 |
+
#: includes/admin/class-review.php:93 includes/admin/class-review.php:141
|
889 |
+
msgid "~ Syed Balkhi<br>Co-Founder of WPForms"
|
890 |
+
msgstr ""
|
891 |
+
|
892 |
+
#: includes/admin/class-review.php:95 includes/admin/class-review.php:143
|
893 |
+
msgid "Ok, you deserve it"
|
894 |
+
msgstr ""
|
895 |
+
|
896 |
+
#: includes/admin/class-review.php:96 includes/admin/class-review.php:144
|
897 |
+
msgid "Nope, maybe later"
|
898 |
+
msgstr ""
|
899 |
+
|
900 |
+
#: includes/admin/class-review.php:97 includes/admin/class-review.php:145
|
901 |
+
msgid "I already did"
|
902 |
+
msgstr ""
|
903 |
+
|
904 |
+
#: includes/admin/class-review.php:140
|
905 |
+
msgid ""
|
906 |
+
"Hey, I noticed you created a contact form with WPForms - that’s awesome! "
|
907 |
+
"Could you please do me a BIG favor and give it a 5-star rating on WordPress "
|
908 |
+
"to help us spread the word and boost our motivation?"
|
909 |
+
msgstr ""
|
910 |
+
|
911 |
+
#: includes/admin/class-review.php:193
|
912 |
+
msgid ""
|
913 |
+
"Please rate <strong>WPForms</strong> <a href=\"%s\" target=\"_blank\" rel="
|
914 |
+
"\"noopener\">★★★★★</a> on <a href=\"%s\" "
|
915 |
+
"target=\"_blank\">WordPress.org</a> to help us spread the word. Thank you "
|
916 |
+
"from the WPForms team!"
|
917 |
+
msgstr ""
|
918 |
+
|
919 |
+
#: includes/admin/class-settings.php:142
|
920 |
+
msgid "Settings saved."
|
921 |
+
msgstr ""
|
922 |
+
|
923 |
+
#: includes/admin/class-settings.php:168 includes/admin/class-settings.php:173
|
924 |
+
#: includes/admin/class-settings.php:178 includes/admin/class-settings.php:183
|
925 |
+
#: pro/wpforms-pro.php:151
|
926 |
+
msgid "Save Settings"
|
927 |
+
msgstr ""
|
928 |
+
|
929 |
+
#: includes/admin/class-settings.php:171 includes/admin/class-settings.php:276
|
930 |
+
#: includes/admin/class-settings.php:365 includes/fields/class-email.php:21
|
931 |
+
#: includes/fields/class-email.php:68 includes/fields/class-email.php:306
|
932 |
+
#: includes/templates/class-subscribe.php:42
|
933 |
+
#: pro/includes/templates/class-donation.php:42
|
934 |
+
#: pro/includes/templates/class-order.php:42
|
935 |
+
#: pro/includes/templates/class-request-quote.php:46
|
936 |
+
msgid "Email"
|
937 |
+
msgstr ""
|
938 |
+
|
939 |
+
#: includes/admin/class-settings.php:176 includes/admin/class-settings.php:316
|
940 |
+
msgid "reCAPTCHA"
|
941 |
+
msgstr ""
|
942 |
+
|
943 |
+
#: includes/admin/class-settings.php:181
|
944 |
+
msgid "Validation"
|
945 |
+
msgstr ""
|
946 |
+
|
947 |
+
#: includes/admin/class-settings.php:186 includes/admin/class-settings.php:386
|
948 |
+
#: includes/admin/class-settings.php:393
|
949 |
+
msgid "Integrations"
|
950 |
+
msgstr ""
|
951 |
+
|
952 |
+
#: includes/admin/class-settings.php:225
|
953 |
+
msgid ""
|
954 |
+
"reCAPTCHA is a free anti-spam service from Google which helps to protect "
|
955 |
+
"your website from spam and abuse while letting real people pass through with "
|
956 |
+
"ease."
|
957 |
+
msgstr ""
|
958 |
+
|
959 |
+
#: includes/admin/class-settings.php:226
|
960 |
+
msgid ""
|
961 |
+
"Google's original <a href=\"https://www.google.com/recaptcha/intro/\" target="
|
962 |
+
"\"_blank\" rel=\"noopener noreferrer\">v2 reCAPTCHA</a> prompts users to "
|
963 |
+
"check a box to prove they're human, whereas <a href=\"https://www.google.com/"
|
964 |
+
"recaptcha/intro/invisible.html\" target=\"_blank\" rel=\"noopener noreferrer"
|
965 |
+
"\">Invisible reCAPTCHA</a> uses advanced technology to detect real users "
|
966 |
+
"without requiring any input."
|
967 |
+
msgstr ""
|
968 |
+
|
969 |
+
#: includes/admin/class-settings.php:227
|
970 |
+
msgid ""
|
971 |
+
"Sites already using v2 reCAPTCHA will need to create new site keys before "
|
972 |
+
"switching to the Invisible reCAPTCHA."
|
973 |
+
msgstr ""
|
974 |
+
|
975 |
+
#: includes/admin/class-settings.php:228
|
976 |
+
msgid ""
|
977 |
+
"<a href=\"https://wpforms.com/docs/setup-captcha-wpforms/\" rel=\"noopener "
|
978 |
+
"noreferrer\" target=\"_blank\">Read our walk through</a> to learn more and "
|
979 |
+
"for step-by-step directions."
|
980 |
+
msgstr ""
|
981 |
+
|
982 |
+
#: includes/admin/class-settings.php:235
|
983 |
+
msgid "License"
|
984 |
+
msgstr ""
|
985 |
+
|
986 |
+
#: includes/admin/class-settings.php:235
|
987 |
+
msgid "Your license key provides access to updates and Add-ons"
|
988 |
+
msgstr ""
|
989 |
+
|
990 |
+
#: includes/admin/class-settings.php:242
|
991 |
+
msgid "License Key"
|
992 |
+
msgstr ""
|
993 |
+
|
994 |
+
#: includes/admin/class-settings.php:254
|
995 |
+
msgid "Include Form Styling"
|
996 |
+
msgstr ""
|
997 |
+
|
998 |
+
#: includes/admin/class-settings.php:255
|
999 |
+
msgid "Determines which CSS files to load for the site."
|
1000 |
+
msgstr ""
|
1001 |
+
|
1002 |
+
#: includes/admin/class-settings.php:260
|
1003 |
+
msgid "Base and form theme styling"
|
1004 |
+
msgstr ""
|
1005 |
+
|
1006 |
+
#: includes/admin/class-settings.php:261
|
1007 |
+
msgid "Base styling only"
|
1008 |
+
msgstr ""
|
1009 |
+
|
1010 |
+
#: includes/admin/class-settings.php:262
|
1011 |
+
msgid "No styling"
|
1012 |
+
msgstr ""
|
1013 |
+
|
1014 |
+
#: includes/admin/class-settings.php:267
|
1015 |
+
msgid "Load Assets Globally"
|
1016 |
+
msgstr ""
|
1017 |
+
|
1018 |
+
#: includes/admin/class-settings.php:268
|
1019 |
+
msgid ""
|
1020 |
+
"Check this if you would like to load WPForms assets site-wide. Only check if "
|
1021 |
+
"your site is having compatibility issues or instructed to by support."
|
1022 |
+
msgstr ""
|
1023 |
+
|
1024 |
+
#: includes/admin/class-settings.php:283
|
1025 |
+
msgid "Template"
|
1026 |
+
msgstr ""
|
1027 |
+
|
1028 |
+
#: includes/admin/class-settings.php:284
|
1029 |
+
msgid ""
|
1030 |
+
"Determines how email notifications will be formatted. HTML Templates are the "
|
1031 |
+
"default."
|
1032 |
+
msgstr ""
|
1033 |
+
|
1034 |
+
#: includes/admin/class-settings.php:288
|
1035 |
+
msgid "HTML Template"
|
1036 |
+
msgstr ""
|
1037 |
+
|
1038 |
+
#: includes/admin/class-settings.php:289
|
1039 |
+
msgid "Plain text"
|
1040 |
+
msgstr ""
|
1041 |
+
|
1042 |
+
#: includes/admin/class-settings.php:294
|
1043 |
+
msgid "Header Image"
|
1044 |
+
msgstr ""
|
1045 |
+
|
1046 |
+
#: includes/admin/class-settings.php:295
|
1047 |
+
msgid ""
|
1048 |
+
"Upload or choose a logo to be displayed at the top of email notifications."
|
1049 |
+
"<br>Recommended size is 300x100 or smaller for best support on all devices."
|
1050 |
+
msgstr ""
|
1051 |
+
|
1052 |
+
#: includes/admin/class-settings.php:300
|
1053 |
+
msgid "Background Color"
|
1054 |
+
msgstr ""
|
1055 |
+
|
1056 |
+
#: includes/admin/class-settings.php:301
|
1057 |
+
msgid "Customize the background color of the HTML email template."
|
1058 |
+
msgstr ""
|
1059 |
+
|
1060 |
+
#: includes/admin/class-settings.php:307
|
1061 |
+
msgid "Carbon Copy"
|
1062 |
+
msgstr ""
|
1063 |
+
|
1064 |
+
#: includes/admin/class-settings.php:308
|
1065 |
+
msgid ""
|
1066 |
+
"Check this if you would like to enable the ability to CC: email addresses in "
|
1067 |
+
"the form notification settings."
|
1068 |
+
msgstr ""
|
1069 |
+
|
1070 |
+
#: includes/admin/class-settings.php:323
|
1071 |
+
#: pro/includes/fields/class-date-time.php:139
|
1072 |
+
msgid "Type"
|
1073 |
+
msgstr ""
|
1074 |
+
|
1075 |
+
#: includes/admin/class-settings.php:327
|
1076 |
+
msgid "v2 reCAPTCHA"
|
1077 |
+
msgstr ""
|
1078 |
+
|
1079 |
+
#: includes/admin/class-settings.php:328
|
1080 |
+
msgid "Invisible reCAPTCHA"
|
1081 |
+
msgstr ""
|
1082 |
+
|
1083 |
+
#: includes/admin/class-settings.php:333
|
1084 |
+
msgid "Site Key"
|
1085 |
+
msgstr ""
|
1086 |
+
|
1087 |
+
#: includes/admin/class-settings.php:338
|
1088 |
+
msgid "Secret Key"
|
1089 |
+
msgstr ""
|
1090 |
+
|
1091 |
+
#: includes/admin/class-settings.php:346
|
1092 |
+
msgid "Validation Messages"
|
1093 |
+
msgstr ""
|
1094 |
+
|
1095 |
+
#: includes/admin/class-settings.php:346
|
1096 |
+
msgid ""
|
1097 |
+
"These messages are displayed to the user as they fill out a form in real-"
|
1098 |
+
"time."
|
1099 |
+
msgstr ""
|
1100 |
+
|
1101 |
+
#: includes/admin/class-settings.php:353 includes/fields/class-base.php:327
|
1102 |
+
msgid "Required"
|
1103 |
+
msgstr ""
|
1104 |
+
|
1105 |
+
#: includes/admin/class-settings.php:355 includes/class-frontend.php:969
|
1106 |
+
msgid "This field is required."
|
1107 |
+
msgstr ""
|
1108 |
+
|
1109 |
+
#: includes/admin/class-settings.php:359
|
1110 |
+
msgid "Website URL"
|
1111 |
+
msgstr ""
|
1112 |
+
|
1113 |
+
#: includes/admin/class-settings.php:361 includes/class-frontend.php:970
|
1114 |
+
msgid "Please enter a valid URL."
|
1115 |
+
msgstr ""
|
1116 |
+
|
1117 |
+
#: includes/admin/class-settings.php:367 includes/class-frontend.php:971
|
1118 |
+
msgid "Please enter a valid email address."
|
1119 |
+
msgstr ""
|
1120 |
+
|
1121 |
+
#: includes/admin/class-settings.php:371
|
1122 |
+
msgid "Number"
|
1123 |
+
msgstr ""
|
1124 |
+
|
1125 |
+
#: includes/admin/class-settings.php:373 includes/class-frontend.php:972
|
1126 |
+
#: includes/fields/class-number.php:157
|
1127 |
+
msgid "Please enter a valid number."
|
1128 |
+
msgstr ""
|
1129 |
+
|
1130 |
+
#: includes/admin/class-settings.php:377
|
1131 |
+
msgid "Confirm Value"
|
1132 |
+
msgstr ""
|
1133 |
+
|
1134 |
+
#: includes/admin/class-settings.php:379 includes/class-frontend.php:973
|
1135 |
+
#: pro/includes/fields/class-password.php:394
|
1136 |
+
msgid "Field values do not match."
|
1137 |
+
msgstr ""
|
1138 |
+
|
1139 |
+
#: includes/admin/class-settings.php:386 includes/admin/class-settings.php:393
|
1140 |
+
msgid ""
|
1141 |
+
"Manage integrations with popular providers such as Constant Contact, "
|
1142 |
+
"MailChimp, Zapier, and more."
|
1143 |
+
msgstr ""
|
1144 |
+
|
1145 |
+
#: includes/admin/class-settings.php:495
|
1146 |
+
msgid "Want to better protect your contact forms from spam?"
|
1147 |
+
msgstr ""
|
1148 |
+
|
1149 |
+
#: includes/admin/class-settings.php:497
|
1150 |
+
msgid ""
|
1151 |
+
"WPForms custom captcha addon allows you to add custom questions captcha or "
|
1152 |
+
"math questions captcha to your WordPress forms. Since we know spam is a huge "
|
1153 |
+
"problem for contact forms, WPForms goes above and beyond to help you protect "
|
1154 |
+
"your forms."
|
1155 |
msgstr ""
|
1156 |
|
1157 |
+
#: includes/admin/class-settings.php:499
|
1158 |
+
msgid "Click here to Upgrade"
|
1159 |
+
msgstr ""
|
1160 |
+
|
1161 |
+
#: includes/admin/class-tools.php:89
|
1162 |
+
msgid "Import/Export"
|
1163 |
+
msgstr ""
|
1164 |
+
|
1165 |
+
#: includes/admin/class-tools.php:90
|
1166 |
+
msgid "System Info"
|
1167 |
+
msgstr ""
|
1168 |
+
|
1169 |
+
#: includes/admin/class-tools.php:97
|
1170 |
+
msgid "Form(s) imported"
|
1171 |
+
msgstr ""
|
1172 |
+
|
1173 |
+
#: includes/admin/class-tools.php:126
|
1174 |
+
msgid "Form Import"
|
1175 |
+
msgstr ""
|
1176 |
+
|
1177 |
+
#: includes/admin/class-tools.php:127
|
1178 |
+
msgid "Select an export file."
|
1179 |
+
msgstr ""
|
1180 |
+
|
1181 |
+
#: includes/admin/class-tools.php:132
|
1182 |
+
msgid "No file chosen"
|
1183 |
+
msgstr ""
|
1184 |
+
|
1185 |
+
#: includes/admin/class-tools.php:134
|
1186 |
+
msgid "Choose a file…"
|
1187 |
+
msgstr ""
|
1188 |
+
|
1189 |
+
#: includes/admin/class-tools.php:140
|
1190 |
+
msgid "Import"
|
1191 |
+
msgstr ""
|
1192 |
+
|
1193 |
+
#: includes/admin/class-tools.php:146
|
1194 |
+
msgid "Form Export"
|
1195 |
+
msgstr ""
|
1196 |
+
|
1197 |
+
#: includes/admin/class-tools.php:147
|
1198 |
+
msgid ""
|
1199 |
+
"Form exports files can be used to create a backup of your forms or to "
|
1200 |
+
"imported forms into another site."
|
1201 |
+
msgstr ""
|
1202 |
+
|
1203 |
+
#: includes/admin/class-tools.php:152
|
1204 |
+
msgid "Select form(s)"
|
1205 |
+
msgstr ""
|
1206 |
+
|
1207 |
+
#: includes/admin/class-tools.php:165
|
1208 |
+
msgid "Export"
|
1209 |
+
msgstr ""
|
1210 |
+
|
1211 |
+
#: includes/admin/class-tools.php:170
|
1212 |
+
msgid "Form Template Export"
|
1213 |
+
msgstr ""
|
1214 |
+
|
1215 |
+
#: includes/admin/class-tools.php:173
|
1216 |
+
msgid ""
|
1217 |
+
"The following code can be used to register your custom form template. Copy "
|
1218 |
+
"and paste the following code to your theme's functions.php file or include "
|
1219 |
+
"it within an external file."
|
1220 |
+
msgstr ""
|
1221 |
+
|
1222 |
+
#: includes/admin/class-tools.php:174
|
1223 |
+
msgid ""
|
1224 |
+
"For more information <a href=\"%s\" target=\"blank\" rel=\"noopener "
|
1225 |
+
"noreferrer\">see our documentation</a>."
|
1226 |
+
msgstr ""
|
1227 |
+
|
1228 |
+
#: includes/admin/class-tools.php:178
|
1229 |
+
msgid ""
|
1230 |
+
"Select a form to generate PHP code that can be used to register a custom "
|
1231 |
+
"form template."
|
1232 |
+
msgstr ""
|
1233 |
+
|
1234 |
+
#: includes/admin/class-tools.php:196
|
1235 |
+
msgid "Export Template"
|
1236 |
+
msgstr ""
|
1237 |
+
|
1238 |
+
#: includes/admin/class-tools.php:211
|
1239 |
+
msgid "System Information"
|
1240 |
+
msgstr ""
|
1241 |
+
|
1242 |
+
#: includes/admin/class-tools.php:271
|
1243 |
+
msgid "Please upload a valid .json form export file."
|
1244 |
+
msgstr ""
|
1245 |
+
|
1246 |
+
#: includes/admin/class-tools.php:271
|
1247 |
+
#: pro/includes/admin/entries/class-entries-export.php:307
|
1248 |
+
msgid "Error"
|
1249 |
+
msgstr ""
|
1250 |
+
|
1251 |
+
#: includes/admin/class-tools.php:391 includes/admin/class-tools.php:395
|
1252 |
+
#: pro/includes/admin/entries/class-entries-single.php:671
|
1253 |
+
#: pro/includes/admin/entries/class-entries-single.php:993
|
1254 |
+
msgid "M j, Y @ g:ia"
|
1255 |
+
msgstr ""
|
1256 |
+
|
1257 |
+
#: includes/admin/class-welcome.php:39 includes/admin/class-welcome.php:40
|
1258 |
+
#: includes/admin/class-welcome.php:117
|
1259 |
msgid "Welcome to WPForms"
|
1260 |
msgstr ""
|
1261 |
|
1262 |
+
#: includes/admin/class-welcome.php:113
|
1263 |
+
msgid "Sullie the WPForms mascot"
|
1264 |
+
msgstr ""
|
1265 |
+
|
1266 |
+
#: includes/admin/class-welcome.php:118
|
1267 |
+
msgid ""
|
1268 |
+
"Thank you for choosing WPForms - the most powerful drag & drop WordPress "
|
1269 |
+
"form builder in the market."
|
1270 |
+
msgstr ""
|
1271 |
+
|
1272 |
+
#: includes/admin/class-welcome.php:121
|
1273 |
+
msgid "Watch how to create you first form"
|
1274 |
+
msgstr ""
|
1275 |
+
|
1276 |
+
#: includes/admin/class-welcome.php:122
|
1277 |
+
msgid "Watch how to create your first form"
|
1278 |
+
msgstr ""
|
1279 |
+
|
1280 |
+
#: includes/admin/class-welcome.php:127
|
1281 |
+
msgid ""
|
1282 |
+
"WPForms makes it easy to create forms in WordPress. You can watch the video "
|
1283 |
+
"tutorial or read our guide on how create your first form."
|
1284 |
+
msgstr ""
|
1285 |
+
|
1286 |
+
#: includes/admin/class-welcome.php:131 includes/admin/class-welcome.php:282
|
1287 |
+
msgid "Create Your First Form"
|
1288 |
+
msgstr ""
|
1289 |
+
|
1290 |
+
#: includes/admin/class-welcome.php:134
|
1291 |
+
msgid "Read the Full Guide"
|
1292 |
+
msgstr ""
|
1293 |
+
|
1294 |
+
#: includes/admin/class-welcome.php:146
|
1295 |
+
msgid "Welcome Features & Addons"
|
1296 |
+
msgstr ""
|
1297 |
+
|
1298 |
+
#: includes/admin/class-welcome.php:147
|
1299 |
+
msgid ""
|
1300 |
+
"WPForms is both easy to use and extremely powerful. We have tons of helpful "
|
1301 |
+
"features that allow us to give you everything you need from a form builder."
|
1302 |
+
msgstr ""
|
1303 |
+
|
1304 |
+
#: includes/admin/class-welcome.php:153
|
1305 |
+
msgid "Drag & Drop Form Builder"
|
1306 |
+
msgstr ""
|
1307 |
+
|
1308 |
+
#: includes/admin/class-welcome.php:154
|
1309 |
+
msgid ""
|
1310 |
+
"Easily create an amazing form in just a few minutes without writing any code."
|
1311 |
+
msgstr ""
|
1312 |
+
|
1313 |
+
#: includes/admin/class-welcome.php:159
|
1314 |
+
msgid "Form Templates"
|
1315 |
+
msgstr ""
|
1316 |
+
|
1317 |
+
#: includes/admin/class-welcome.php:160
|
1318 |
+
msgid "Start with pre-built form templates to save even more time."
|
1319 |
+
msgstr ""
|
1320 |
+
|
1321 |
+
#: includes/admin/class-welcome.php:165
|
1322 |
+
msgid "Responsive Mobile Friendly"
|
1323 |
+
msgstr ""
|
1324 |
+
|
1325 |
+
#: includes/admin/class-welcome.php:166
|
1326 |
+
msgid ""
|
1327 |
+
"WPForms is 100% responsive meaning it works on mobile, tablets & desktop."
|
1328 |
+
msgstr ""
|
1329 |
+
|
1330 |
+
#: includes/admin/class-welcome.php:171
|
1331 |
+
msgid "Smart Conditional Logic"
|
1332 |
+
msgstr ""
|
1333 |
+
|
1334 |
+
#: includes/admin/class-welcome.php:172
|
1335 |
+
msgid "Easily create high performance forms with our smart conditional logic."
|
1336 |
+
msgstr ""
|
1337 |
+
|
1338 |
+
#: includes/admin/class-welcome.php:177
|
1339 |
+
msgid "Instant Notifications"
|
1340 |
+
msgstr ""
|
1341 |
+
|
1342 |
+
#: includes/admin/class-welcome.php:178
|
1343 |
+
msgid ""
|
1344 |
+
"Respond to leads quickly with our instant form notification feature for your "
|
1345 |
+
"team."
|
1346 |
+
msgstr ""
|
1347 |
+
|
1348 |
+
#: includes/admin/class-welcome.php:183
|
1349 |
+
msgid "Entry Management"
|
1350 |
+
msgstr ""
|
1351 |
+
|
1352 |
+
#: includes/admin/class-welcome.php:184
|
1353 |
+
msgid "View all your leads in one place to streamline your workflow."
|
1354 |
+
msgstr ""
|
1355 |
+
|
1356 |
+
#: includes/admin/class-welcome.php:189
|
1357 |
+
msgid "Payments Made Easy"
|
1358 |
+
msgstr ""
|
1359 |
+
|
1360 |
+
#: includes/admin/class-welcome.php:190
|
1361 |
+
msgid ""
|
1362 |
+
"Easily collect payments, donations, and online orders without hiring a "
|
1363 |
+
"developer."
|
1364 |
+
msgstr ""
|
1365 |
+
|
1366 |
+
#: includes/admin/class-welcome.php:195
|
1367 |
+
msgid "Marketing & Subscriptions"
|
1368 |
+
msgstr ""
|
1369 |
+
|
1370 |
+
#: includes/admin/class-welcome.php:196
|
1371 |
+
msgid ""
|
1372 |
+
"Create subscription forms and connect with your email marketing service."
|
1373 |
+
msgstr ""
|
1374 |
+
|
1375 |
+
#: includes/admin/class-welcome.php:201
|
1376 |
+
msgid "Easy to Embed"
|
1377 |
+
msgstr ""
|
1378 |
+
|
1379 |
+
#: includes/admin/class-welcome.php:202
|
1380 |
msgid ""
|
1381 |
+
"Easily embed your forms in blog posts, pages, sidebar widgets, footer, etc."
|
1382 |
+
msgstr ""
|
1383 |
+
|
1384 |
+
#: includes/admin/class-welcome.php:207
|
1385 |
+
msgid "Spam Protection"
|
1386 |
+
msgstr ""
|
1387 |
+
|
1388 |
+
#: includes/admin/class-welcome.php:208
|
1389 |
+
msgid "Our smart captcha and honeypot automatically prevent spam submissions."
|
1390 |
+
msgstr ""
|
1391 |
+
|
1392 |
+
#: includes/admin/class-welcome.php:214
|
1393 |
+
msgid "See All Features"
|
1394 |
+
msgstr ""
|
1395 |
+
|
1396 |
+
#: includes/admin/class-welcome.php:226 lite/wpforms-lite.php:438
|
1397 |
+
msgid "Upgrade to PRO"
|
1398 |
+
msgstr ""
|
1399 |
+
|
1400 |
+
#: includes/admin/class-welcome.php:228
|
1401 |
+
msgid "PayPal"
|
1402 |
+
msgstr ""
|
1403 |
+
|
1404 |
+
#: includes/admin/class-welcome.php:229
|
1405 |
+
msgid "Post Submissions"
|
1406 |
+
msgstr ""
|
1407 |
+
|
1408 |
+
#: includes/admin/class-welcome.php:230
|
1409 |
+
#: pro/includes/admin/entries/class-entries-single.php:757
|
1410 |
+
msgid "Stripe"
|
1411 |
+
msgstr ""
|
1412 |
+
|
1413 |
+
#: includes/admin/class-welcome.php:231
|
1414 |
+
msgid "Signatures"
|
1415 |
+
msgstr ""
|
1416 |
+
|
1417 |
+
#: includes/admin/class-welcome.php:232
|
1418 |
+
msgid "User Registration"
|
1419 |
+
msgstr ""
|
1420 |
+
|
1421 |
+
#: includes/admin/class-welcome.php:233
|
1422 |
+
msgid "Form Abandonment"
|
1423 |
+
msgstr ""
|
1424 |
+
|
1425 |
+
#: includes/admin/class-welcome.php:234
|
1426 |
+
msgid "Geolocation"
|
1427 |
+
msgstr ""
|
1428 |
+
|
1429 |
+
#: includes/admin/class-welcome.php:235
|
1430 |
+
msgid "Unlimited Sites"
|
1431 |
msgstr ""
|
1432 |
|
1433 |
+
#: includes/admin/class-welcome.php:236
|
1434 |
+
msgid "Zapier"
|
1435 |
msgstr ""
|
1436 |
|
1437 |
+
#: includes/admin/class-welcome.php:237
|
1438 |
+
msgid "Priority Support"
|
1439 |
msgstr ""
|
1440 |
|
1441 |
+
#: includes/admin/class-welcome.php:242
|
1442 |
+
msgid "PRO"
|
|
|
|
|
1443 |
msgstr ""
|
1444 |
|
1445 |
+
#: includes/admin/class-welcome.php:245
|
1446 |
+
msgid "per year"
|
1447 |
msgstr ""
|
1448 |
|
1449 |
+
#: includes/admin/class-welcome.php:247 pro/includes/admin/class-addons.php:249
|
1450 |
+
msgid "Upgrade Now"
|
|
|
|
|
|
|
1451 |
msgstr ""
|
1452 |
|
1453 |
+
#: includes/admin/class-welcome.php:258
|
1454 |
+
msgid "Testimonials"
|
|
|
|
|
1455 |
msgstr ""
|
1456 |
|
1457 |
+
#: includes/admin/class-welcome.php:262
|
1458 |
+
msgid ""
|
1459 |
+
"WPForms is by far the easiest form plugin to use. My clients love it – it’s "
|
1460 |
+
"one of the few plugins they can use without any training. As a developer I "
|
1461 |
+
"appreciate how fast, modern, clean and extensible it is."
|
1462 |
msgstr ""
|
1463 |
|
1464 |
+
#: includes/admin/class-welcome.php:268
|
1465 |
msgid ""
|
1466 |
+
"As a business owner, time is my most valuable asset. WPForms allow me to "
|
1467 |
+
"create smart online forms with just a few clicks. With their pre-built form "
|
1468 |
+
"templates and the drag & drop builder, I can create a new form that works in "
|
1469 |
+
"less than 2 minutes without writing a single line of code. Well worth the "
|
1470 |
+
"investment."
|
1471 |
msgstr ""
|
1472 |
|
1473 |
+
#: includes/admin/class-welcome.php:285
|
1474 |
+
msgid "Upgrade to WPForms Pro"
|
1475 |
msgstr ""
|
1476 |
|
1477 |
#: includes/admin/overview/class-overview-table.php:53
|
1524 |
|
1525 |
#: includes/admin/overview/class-overview-table.php:173
|
1526 |
#: includes/admin/overview/class-overview-table.php:191
|
1527 |
+
#: pro/includes/admin/entries/class-entries-list-table.php:341
|
1528 |
+
#: pro/includes/admin/entries/class-entries-list-table.php:362
|
1529 |
+
#: pro/includes/admin/entries/class-entries-single.php:596
|
1530 |
msgid "Delete"
|
1531 |
msgstr ""
|
1532 |
|
1551 |
msgid "Number of forms per page:"
|
1552 |
msgstr ""
|
1553 |
|
1554 |
+
#: includes/admin/overview/class-overview.php:123
|
1555 |
+
msgid "Forms Overview"
|
1556 |
msgstr ""
|
1557 |
|
1558 |
+
#: includes/admin/settings-api.php:69
|
1559 |
+
msgid "The callback function used for the %s setting is missing."
|
1560 |
msgstr ""
|
1561 |
|
1562 |
+
#: includes/admin/settings-api.php:97
|
1563 |
+
msgid "You're using WPForms Lite - no license needed. Enjoy!"
|
1564 |
+
msgstr ""
|
1565 |
+
|
1566 |
+
#: includes/admin/settings-api.php:98
|
1567 |
+
msgid ""
|
1568 |
+
"To unlock more features consider <a href=\"%s\" target=\"_blank\" rel="
|
1569 |
+
"\"noopener noreferrer\">upgrading to Pro</a>.</p>"
|
1570 |
+
msgstr ""
|
1571 |
+
|
1572 |
+
#: includes/admin/settings-api.php:106
|
1573 |
+
msgid "Verify Key"
|
1574 |
+
msgstr ""
|
1575 |
+
|
1576 |
+
#: includes/admin/settings-api.php:110
|
1577 |
+
msgid "Deactivate Key"
|
1578 |
+
msgstr ""
|
1579 |
+
|
1580 |
+
#: includes/admin/settings-api.php:114
|
1581 |
+
msgid "You're license key type is "
|
1582 |
+
msgstr ""
|
1583 |
+
|
1584 |
+
#: includes/admin/settings-api.php:115
|
1585 |
+
msgid ""
|
1586 |
+
"If your license has been upgraded or is incorrect, <a href=\"#\" id="
|
1587 |
+
"\"wpforms-setting-license-key-refresh\">click here to force a refresh</a>."
|
1588 |
+
msgstr ""
|
1589 |
+
|
1590 |
+
#: includes/admin/settings-api.php:253
|
1591 |
+
msgid "Upload Image"
|
1592 |
msgstr ""
|
1593 |
|
1594 |
#: includes/class-conditional-logic-core.php:158
|
1620 |
msgid "Add rule group"
|
1621 |
msgstr ""
|
1622 |
|
1623 |
+
#: includes/class-frontend.php:974
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1624 |
#: pro/includes/fields/class-file-upload.php:367
|
1625 |
#: pro/includes/fields/class-file-upload.php:383
|
1626 |
+
#: pro/includes/fields/class-file-upload.php:400 pro/wpforms-pro.php:180
|
1627 |
msgid "File type is not allowed."
|
1628 |
msgstr ""
|
1629 |
|
1630 |
+
#: includes/class-frontend.php:975 pro/wpforms-pro.php:186
|
1631 |
msgid "File exceeds max size allowed."
|
1632 |
msgstr ""
|
1633 |
|
1634 |
+
#: includes/class-frontend.php:976 pro/wpforms-pro.php:192
|
1635 |
msgid "Please enter time in 12-hour AM/PM format (eg 8:45 AM)."
|
1636 |
msgstr ""
|
1637 |
|
1638 |
+
#: includes/class-frontend.php:977 pro/wpforms-pro.php:198
|
1639 |
msgid "Please enter time in 24-hour format (eg 22:45)."
|
1640 |
msgstr ""
|
1641 |
|
1642 |
+
#: includes/class-frontend.php:978 pro/wpforms-pro.php:204
|
1643 |
msgid "Payment is required."
|
1644 |
msgstr ""
|
1645 |
|
1646 |
+
#: includes/class-frontend.php:979 pro/wpforms-pro.php:210
|
1647 |
msgid "Please enter a valid credit card number."
|
1648 |
msgstr ""
|
1649 |
|
1655 |
msgid "Logs"
|
1656 |
msgstr ""
|
1657 |
|
1658 |
+
#: includes/class-preview.php:113
|
1659 |
+
msgid "Hide empty fields"
|
1660 |
+
msgstr ""
|
1661 |
+
|
1662 |
+
#: includes/class-preview.php:115 includes/class-preview.php:155
|
1663 |
+
msgid "Show empty fields"
|
1664 |
+
msgstr ""
|
1665 |
+
|
1666 |
+
#: includes/class-preview.php:124
|
1667 |
+
msgid "Hide notes"
|
1668 |
+
msgstr ""
|
1669 |
+
|
1670 |
+
#: includes/class-preview.php:126
|
1671 |
+
msgid "Show notes"
|
1672 |
+
msgstr ""
|
1673 |
+
|
1674 |
+
#: includes/class-preview.php:135
|
1675 |
+
msgid "Normal view"
|
1676 |
+
msgstr ""
|
1677 |
+
|
1678 |
+
#: includes/class-preview.php:137 includes/class-preview.php:157
|
1679 |
+
msgid "Compact view"
|
1680 |
+
msgstr ""
|
1681 |
+
|
1682 |
+
#: includes/class-preview.php:148
|
1683 |
msgid "Entry #%d"
|
1684 |
msgstr ""
|
1685 |
|
1686 |
+
#: includes/class-preview.php:151
|
1687 |
+
#: pro/includes/admin/entries/class-entries-single.php:898
|
1688 |
+
msgid "Print"
|
1689 |
+
msgstr ""
|
1690 |
+
|
1691 |
+
#: includes/class-preview.php:156
|
1692 |
+
msgid "Show note"
|
1693 |
+
msgstr ""
|
1694 |
+
|
1695 |
+
#: includes/class-preview.php:165
|
1696 |
+
#: pro/includes/admin/entries/class-entries-single.php:482
|
1697 |
msgid "This entry does not have any fields"
|
1698 |
msgstr ""
|
1699 |
|
1700 |
+
#: includes/class-preview.php:181
|
1701 |
+
#: pro/includes/admin/entries/class-entries-single.php:498
|
1702 |
msgid "Field ID #%d"
|
1703 |
msgstr ""
|
1704 |
|
1705 |
+
#: includes/class-preview.php:185
|
1706 |
+
#: pro/includes/admin/entries/class-entries-single.php:503
|
1707 |
msgid "Empty"
|
1708 |
msgstr ""
|
1709 |
|
1710 |
+
#: includes/class-preview.php:196
|
1711 |
+
#: pro/includes/admin/entries/class-entries-single.php:538
|
1712 |
+
msgid "Notes"
|
1713 |
+
msgstr ""
|
1714 |
+
|
1715 |
+
#: includes/class-preview.php:210
|
1716 |
+
msgid "Added by %s on %s"
|
1717 |
+
msgstr ""
|
1718 |
+
|
1719 |
+
#: includes/class-preview.php:257
|
1720 |
msgid ""
|
1721 |
"This is the WPForms preview page. All your form previews will be handled on "
|
1722 |
"this page."
|
1723 |
msgstr ""
|
1724 |
|
1725 |
+
#: includes/class-preview.php:258
|
1726 |
msgid ""
|
1727 |
"The page is set to private, so it is not publicly accessible. Please do not "
|
1728 |
"delete this page :) ."
|
1729 |
msgstr ""
|
1730 |
|
1731 |
+
#: includes/class-preview.php:263
|
1732 |
msgid "WPForms Preview"
|
1733 |
msgstr ""
|
1734 |
|
1735 |
+
#: includes/class-preview.php:345
|
1736 |
msgid "This is a preview of your form. This page is not publicly accessible."
|
1737 |
msgstr ""
|
1738 |
|
1739 |
+
#: includes/class-preview.php:347
|
1740 |
msgid "Close this window"
|
1741 |
msgstr ""
|
1742 |
|
1743 |
+
#: includes/class-preview.php:349
|
1744 |
msgid " Preview"
|
1745 |
msgstr ""
|
1746 |
|
1764 |
msgid "WPForms honeypot field triggered."
|
1765 |
msgstr ""
|
1766 |
|
1767 |
+
#: includes/class-process.php:354 lite/wpforms-lite.php:53
|
1768 |
+
#: pro/wpforms-pro.php:346
|
1769 |
msgid "New %s Entry"
|
1770 |
msgstr ""
|
1771 |
|
1795 |
|
1796 |
#: includes/class-smart-tags.php:40
|
1797 |
#: pro/includes/admin/entries/class-entries-export.php:178
|
1798 |
+
#: pro/includes/admin/entries/class-entries-list-table.php:136
|
1799 |
#: pro/includes/fields/class-date-time.php:69
|
1800 |
#: pro/includes/fields/class-date-time.php:117
|
1801 |
#: pro/includes/fields/class-date-time.php:244
|
1856 |
msgid "Lost Password URL"
|
1857 |
msgstr ""
|
1858 |
|
1859 |
+
#: includes/class-widget.php:127
|
1860 |
msgid "No forms"
|
1861 |
msgstr ""
|
1862 |
|
1888 |
msgid "Sent from <a href=\"%s\" style=\"color:#bbbbbb;\">%s</a>"
|
1889 |
msgstr ""
|
1890 |
|
1891 |
+
#: includes/fields/class-base.php:305
|
1892 |
msgid ""
|
1893 |
"Enter text for the form field label. Field labels are recommended and can be "
|
1894 |
"hidden in the Advanced Settings."
|
1895 |
msgstr ""
|
1896 |
|
1897 |
+
#: includes/fields/class-base.php:306
|
1898 |
msgid "Label"
|
1899 |
msgstr ""
|
1900 |
|
1901 |
+
#: includes/fields/class-base.php:315
|
1902 |
msgid "Enter text for the form field description."
|
1903 |
msgstr ""
|
1904 |
|
1905 |
+
#: includes/fields/class-base.php:316
|
1906 |
msgid "Description"
|
1907 |
msgstr ""
|
1908 |
|
1909 |
+
#: includes/fields/class-base.php:326
|
1910 |
msgid ""
|
1911 |
"Check this option to mark the field required. A form will not submit unless "
|
1912 |
"all required fields are provided."
|
1913 |
msgstr ""
|
1914 |
|
1915 |
+
#: includes/fields/class-base.php:343
|
|
|
|
|
|
|
|
|
|
|
|
|
1916 |
msgid "Enter code for the form field."
|
1917 |
msgstr ""
|
1918 |
|
1919 |
+
#: includes/fields/class-base.php:344
|
1920 |
msgid "Code"
|
1921 |
msgstr ""
|
1922 |
|
1923 |
+
#: includes/fields/class-base.php:353 includes/fields/class-base.php:427
|
1924 |
msgid "Add choices for the form field."
|
1925 |
msgstr ""
|
1926 |
|
1927 |
+
#: includes/fields/class-base.php:366
|
1928 |
msgid "Choices"
|
1929 |
msgstr ""
|
1930 |
|
1931 |
+
#: includes/fields/class-base.php:409
|
1932 |
msgid ""
|
1933 |
"Choices are dynamically populated from the <span class=\"dynamic-name\">%s</"
|
1934 |
"span> <span class=\"dynamic-type\">%s</span>"
|
1935 |
msgstr ""
|
1936 |
|
1937 |
+
#: includes/fields/class-base.php:436
|
1938 |
msgid "Items"
|
1939 |
msgstr ""
|
1940 |
|
1941 |
+
#: includes/fields/class-base.php:478
|
1942 |
msgid "Enter text for the default form field value."
|
1943 |
msgstr ""
|
1944 |
|
1945 |
+
#: includes/fields/class-base.php:480 includes/fields/class-name.php:283
|
1946 |
#: includes/fields/class-name.php:298 includes/fields/class-name.php:313
|
1947 |
#: includes/fields/class-name.php:328 pro/includes/fields/class-address.php:117
|
1948 |
#: pro/includes/fields/class-address.php:133
|
1953 |
msgid "Default Value"
|
1954 |
msgstr ""
|
1955 |
|
1956 |
+
#: includes/fields/class-base.php:490
|
1957 |
msgid "Select the default form field size."
|
1958 |
msgstr ""
|
1959 |
|
1960 |
+
#: includes/fields/class-base.php:492
|
1961 |
msgid "Small"
|
1962 |
msgstr ""
|
1963 |
|
1964 |
+
#: includes/fields/class-base.php:493
|
1965 |
msgid "Medium"
|
1966 |
msgstr ""
|
1967 |
|
1968 |
+
#: includes/fields/class-base.php:494
|
1969 |
msgid "Large"
|
1970 |
msgstr ""
|
1971 |
|
1972 |
+
#: includes/fields/class-base.php:496
|
1973 |
msgid "Field Size"
|
1974 |
msgstr ""
|
1975 |
|
1976 |
+
#: includes/fields/class-base.php:509
|
1977 |
msgid "Advanced Options"
|
1978 |
msgstr ""
|
1979 |
|
1980 |
+
#: includes/fields/class-base.php:520
|
1981 |
msgid "Enter text for the form field placeholder."
|
1982 |
msgstr ""
|
1983 |
|
1984 |
+
#: includes/fields/class-base.php:521
|
1985 |
msgid "Placeholder Text"
|
1986 |
msgstr ""
|
1987 |
|
1988 |
+
#: includes/fields/class-base.php:531
|
1989 |
msgid ""
|
1990 |
"Enter CSS class names for the form field container. Class names should be "
|
1991 |
"separated with spaces."
|
1992 |
msgstr ""
|
1993 |
|
1994 |
+
#: includes/fields/class-base.php:536
|
1995 |
msgid "CSS Classes"
|
1996 |
msgstr ""
|
1997 |
|
1998 |
+
#: includes/fields/class-base.php:545
|
1999 |
msgid "Check this option to hide the form field label."
|
2000 |
msgstr ""
|
2001 |
|
2002 |
+
#: includes/fields/class-base.php:547
|
2003 |
msgid "Hide Label"
|
2004 |
msgstr ""
|
2005 |
|
2006 |
+
#: includes/fields/class-base.php:555
|
2007 |
msgid "Check this option to hide the form field sub-label."
|
2008 |
msgstr ""
|
2009 |
|
2010 |
+
#: includes/fields/class-base.php:557
|
2011 |
msgid "Hide Sub-Labels"
|
2012 |
msgstr ""
|
2013 |
|
2014 |
+
#: includes/fields/class-base.php:565
|
2015 |
msgid "Select the layout for displaying field choices."
|
2016 |
msgstr ""
|
2017 |
|
2018 |
+
#: includes/fields/class-base.php:567
|
2019 |
msgid "One Column"
|
2020 |
msgstr ""
|
2021 |
|
2022 |
+
#: includes/fields/class-base.php:568
|
2023 |
msgid "Two Columns"
|
2024 |
msgstr ""
|
2025 |
|
2026 |
+
#: includes/fields/class-base.php:569
|
2027 |
msgid "Three Columns"
|
2028 |
msgstr ""
|
2029 |
|
2030 |
+
#: includes/fields/class-base.php:571
|
2031 |
msgid "Choice Layout"
|
2032 |
msgstr ""
|
2033 |
|
2034 |
+
#: includes/fields/class-base.php:580
|
2035 |
msgid "Select auto-populate method to use."
|
2036 |
msgstr ""
|
2037 |
|
2038 |
+
#: includes/fields/class-base.php:583 includes/fields/class-base.php:602
|
2039 |
msgid "Post Type"
|
2040 |
msgstr ""
|
2041 |
|
2042 |
+
#: includes/fields/class-base.php:584 includes/fields/class-base.php:608
|
2043 |
msgid "Taxonomy"
|
2044 |
msgstr ""
|
2045 |
|
2046 |
+
#: includes/fields/class-base.php:586
|
2047 |
msgid "Dynamic Choices"
|
2048 |
msgstr ""
|
2049 |
|
2050 |
+
#: includes/fields/class-base.php:613
|
2051 |
msgid "Select %s to use for auto-populating field choices."
|
2052 |
msgstr ""
|
2053 |
|
2054 |
+
#: includes/fields/class-base.php:614
|
2055 |
msgid "Dynamic %s Source"
|
2056 |
msgstr ""
|
2057 |
|
2058 |
+
#: includes/fields/class-base.php:726
|
2059 |
+
msgid "You do no have permission."
|
2060 |
+
msgstr ""
|
2061 |
+
|
2062 |
+
#: includes/fields/class-base.php:731
|
2063 |
msgid "No form ID found"
|
2064 |
msgstr ""
|
2065 |
|
2066 |
+
#: includes/fields/class-base.php:736
|
2067 |
msgid "No field type found"
|
2068 |
msgstr ""
|
2069 |
|
2070 |
+
#: includes/fields/class-base.php:864 includes/fields/class-name.php:485
|
2071 |
#: includes/fields/class-number.php:152
|
2072 |
#: pro/includes/fields/class-address.php:624
|
2073 |
#: pro/includes/fields/class-date-time.php:532
|
2114 |
"viewing the form."
|
2115 |
msgstr ""
|
2116 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2117 |
#: includes/fields/class-email.php:91 includes/fields/class-email.php:311
|
2118 |
msgid "Confirm Email"
|
2119 |
msgstr ""
|
2120 |
|
2121 |
#: includes/fields/class-email.php:207
|
|
|
2122 |
msgid "Enable Email Confirmation"
|
2123 |
msgstr ""
|
2124 |
|
2125 |
#: includes/fields/class-email.php:208
|
|
|
2126 |
msgid "Check this option ask the user to provide their email address twice."
|
2127 |
msgstr ""
|
2128 |
|
2667 |
msgstr ""
|
2668 |
|
2669 |
#: includes/templates/class-subscribe.php:20
|
2670 |
+
msgid "Newsletter Signup Form"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2671 |
msgstr ""
|
2672 |
|
2673 |
+
#: includes/templates/class-subscribe.php:22
|
|
|
2674 |
msgid ""
|
2675 |
+
"Add subscribers and grow your email list with this newsletter signup form. "
|
2676 |
+
"You can add and remove fields as needed."
|
|
|
2677 |
msgstr ""
|
2678 |
|
2679 |
+
#: includes/templates/class-subscribe.php:26
|
2680 |
+
#: pro/includes/templates/class-donation.php:26
|
2681 |
+
#: pro/includes/templates/class-order.php:26
|
2682 |
+
msgid "Don't Forget"
|
2683 |
msgstr ""
|
2684 |
|
2685 |
+
#: includes/templates/class-subscribe.php:27
|
2686 |
+
msgid "Click the marketing tab to configure your newsletter service provider"
|
|
|
2687 |
msgstr ""
|
2688 |
|
2689 |
+
#: includes/templates/class-suggestion.php:20
|
2690 |
+
msgid "Suggestion Form"
|
|
|
2691 |
msgstr ""
|
2692 |
|
2693 |
+
#: includes/templates/class-suggestion.php:22
|
2694 |
+
msgid ""
|
2695 |
+
"Ask your users for suggestions with this simple form template. You can add "
|
2696 |
+
"and remove fields as needed."
|
2697 |
msgstr ""
|
2698 |
|
2699 |
+
#: includes/templates/class-suggestion.php:40
|
2700 |
+
msgid "Please enter your email, so we can follow up with you."
|
|
|
2701 |
msgstr ""
|
2702 |
|
2703 |
+
#: includes/templates/class-suggestion.php:47
|
2704 |
+
msgid "Which department do you have a suggestion for?"
|
|
|
2705 |
msgstr ""
|
2706 |
|
2707 |
+
#: includes/templates/class-suggestion.php:50
|
2708 |
+
msgid "Sales"
|
|
|
2709 |
msgstr ""
|
2710 |
|
2711 |
+
#: includes/templates/class-suggestion.php:53
|
2712 |
+
msgid "Customer Support"
|
|
|
2713 |
msgstr ""
|
2714 |
|
2715 |
+
#: includes/templates/class-suggestion.php:56
|
2716 |
+
msgid "Product Development"
|
|
|
|
|
|
|
|
|
2717 |
msgstr ""
|
2718 |
|
2719 |
+
#: includes/templates/class-suggestion.php:67
|
2720 |
+
msgid "Subject"
|
|
|
|
|
|
|
|
|
|
|
2721 |
msgstr ""
|
2722 |
|
2723 |
+
#: lite/wpforms-lite.php:84 pro/wpforms-pro.php:374
|
2724 |
msgid "Default Notification"
|
2725 |
msgstr ""
|
2726 |
|
2727 |
+
#: lite/wpforms-lite.php:92 pro/wpforms-pro.php:389
|
2728 |
msgid "Send To Email Address"
|
2729 |
msgstr ""
|
2730 |
|
2731 |
+
#: lite/wpforms-lite.php:95 pro/wpforms-pro.php:392
|
2732 |
msgid ""
|
2733 |
"Enter the email address to receive form entry notifications. For multiple "
|
2734 |
"notifications, separate email addresses with a comma."
|
2735 |
msgstr ""
|
2736 |
|
2737 |
+
#: lite/wpforms-lite.php:111 pro/wpforms-pro.php:408
|
2738 |
msgid "CC"
|
2739 |
msgstr ""
|
2740 |
|
2741 |
+
#: lite/wpforms-lite.php:127 pro/wpforms-pro.php:424
|
2742 |
msgid "Email Subject"
|
2743 |
msgstr ""
|
2744 |
|
2745 |
+
#: lite/wpforms-lite.php:129 pro/wpforms-pro.php:426
|
2746 |
msgid "New Entry: "
|
2747 |
msgstr ""
|
2748 |
|
2749 |
+
#: lite/wpforms-lite.php:142 pro/wpforms-pro.php:439
|
2750 |
msgid "From Name"
|
2751 |
msgstr ""
|
2752 |
|
2753 |
+
#: lite/wpforms-lite.php:158 pro/wpforms-pro.php:455
|
2754 |
msgid "From Email"
|
2755 |
msgstr ""
|
2756 |
|
2757 |
+
#: lite/wpforms-lite.php:174 pro/wpforms-pro.php:471
|
2758 |
msgid "Reply-To"
|
2759 |
msgstr ""
|
2760 |
|
2761 |
+
#: lite/wpforms-lite.php:199 pro/wpforms-pro.php:496
|
2762 |
msgid ""
|
2763 |
"To display all form fields, use the <code>{all_fields}</code> Smart Tag."
|
2764 |
msgstr ""
|
2765 |
|
2766 |
+
#: lite/wpforms-lite.php:436
|
2767 |
msgid "is a PRO Feature"
|
2768 |
msgstr ""
|
2769 |
|
2770 |
+
#: lite/wpforms-lite.php:437
|
2771 |
msgid ""
|
2772 |
"We're sorry, %name% is not available on your plan.<br><br>Please upgrade to "
|
2773 |
"the PRO plan to unlock all these awesome features."
|
2774 |
msgstr ""
|
2775 |
|
|
|
|
|
|
|
|
|
2776 |
#: pro/includes/admin/ajax-actions.php:24
|
2777 |
msgid "Addon deactivated."
|
2778 |
msgstr ""
|
2802 |
msgid "Addon installed."
|
2803 |
msgstr ""
|
2804 |
|
2805 |
+
#: pro/includes/admin/ajax-actions.php:189
|
2806 |
+
#: pro/includes/admin/ajax-actions.php:232
|
2807 |
+
msgid "Please enter a license key."
|
2808 |
+
msgstr ""
|
2809 |
+
|
2810 |
#: pro/includes/admin/builder/panels/class-payments.php:21
|
2811 |
+
#: pro/wpforms-pro.php:149 pro/wpforms-pro.php:216
|
2812 |
msgid "Payments"
|
2813 |
msgstr ""
|
2814 |
|
2834 |
"best to get it added as fast as possible"
|
2835 |
msgstr ""
|
2836 |
|
2837 |
+
#: pro/includes/admin/class-addons.php:84
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2838 |
msgid "Refresh Addons"
|
2839 |
msgstr ""
|
2840 |
|
2841 |
+
#: pro/includes/admin/class-addons.php:90
|
2842 |
msgid ""
|
2843 |
"There was an issue retrieving the addons for this site. Please click on the "
|
2844 |
"button above the refresh the addons data."
|
2845 |
msgstr ""
|
2846 |
|
2847 |
+
#: pro/includes/admin/class-addons.php:96
|
2848 |
msgid ""
|
2849 |
"In order to get access to Addons, you need to resolve your license key "
|
2850 |
"errors."
|
2851 |
msgstr ""
|
2852 |
|
2853 |
+
#: pro/includes/admin/class-addons.php:102
|
2854 |
msgid ""
|
2855 |
"In order to get access to Addons, you need to verify your license key for "
|
2856 |
"WPForms."
|
2857 |
msgstr ""
|
2858 |
|
2859 |
+
#: pro/includes/admin/class-addons.php:110
|
2860 |
+
msgid "Addons have successfully been refreshed."
|
2861 |
+
msgstr ""
|
2862 |
+
|
2863 |
+
#: pro/includes/admin/class-addons.php:118
|
2864 |
msgid ""
|
2865 |
"Improve your forms with our premium addons. Missing an addon that you think "
|
2866 |
+
"you should be able to see? Click the <a href=\"%s\">Refresh Addons</a> "
|
2867 |
+
"button above."
|
2868 |
msgstr ""
|
2869 |
|
2870 |
+
#: pro/includes/admin/class-addons.php:121
|
2871 |
+
msgid "Available Addons"
|
2872 |
msgstr ""
|
2873 |
|
2874 |
+
#: pro/includes/admin/class-addons.php:166
|
2875 |
msgid "Unlock More Features..."
|
2876 |
msgstr ""
|
2877 |
|
2878 |
+
#: pro/includes/admin/class-addons.php:167
|
2879 |
msgid ""
|
2880 |
+
"Want to get even more features? <a href=\"%s\" target=\"_blank\" rel="
|
2881 |
+
"\"noopener noreferrer\">Upgrade your WPForms account</a> and unlock the "
|
2882 |
"following extensions."
|
2883 |
msgstr ""
|
2884 |
|
2885 |
+
#: pro/includes/admin/class-addons.php:201
|
2886 |
+
msgid "Not Installed"
|
2887 |
+
msgstr ""
|
2888 |
+
|
2889 |
+
#: pro/includes/admin/class-addons.php:225
|
2890 |
+
#: pro/includes/admin/entries/class-entries-list-table.php:133
|
2891 |
+
msgid "Status"
|
2892 |
msgstr ""
|
2893 |
|
2894 |
#: pro/includes/admin/class-license.php:93
|
2895 |
+
#: pro/includes/admin/class-license.php:179
|
2896 |
+
#: pro/includes/admin/class-license.php:268
|
2897 |
msgid ""
|
2898 |
"There was an error connecting to the remote key API. Please try again later."
|
2899 |
msgstr ""
|
2900 |
|
2901 |
+
#: pro/includes/admin/class-license.php:112
|
2902 |
msgid "Congratulations! This site is now receiving automatic updates."
|
2903 |
msgstr ""
|
2904 |
|
2905 |
+
#: pro/includes/admin/class-license.php:198
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2906 |
msgid ""
|
2907 |
+
"\tYour license key for WPForms is invalid. The key no longer exists or the "
|
2908 |
"user associated with the key has been deleted. Please use a different key to "
|
2909 |
"continue receiving automatic updates."
|
2910 |
msgstr ""
|
2911 |
|
2912 |
+
#: pro/includes/admin/class-license.php:211
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2913 |
msgid ""
|
2914 |
+
"Your license key for WPForms has expired. Please renew your license key on "
|
2915 |
+
"WPForms.com to continue receiving automatic updates."
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2916 |
msgstr ""
|
2917 |
|
2918 |
+
#: pro/includes/admin/class-license.php:224
|
2919 |
+
#: pro/includes/admin/class-license.php:343
|
|
|
|
|
|
|
2920 |
msgid ""
|
2921 |
+
"Your license key for WPForms has been disabled. Please use a different key "
|
2922 |
+
"to continue receiving automatic updates."
|
2923 |
msgstr ""
|
2924 |
|
2925 |
+
#: pro/includes/admin/class-license.php:239
|
2926 |
+
msgid "Your key has been refreshed successfully."
|
2927 |
msgstr ""
|
2928 |
|
2929 |
+
#: pro/includes/admin/class-license.php:288
|
2930 |
+
msgid "You have deactivated the key from this site successfully."
|
2931 |
msgstr ""
|
2932 |
|
2933 |
+
#: pro/includes/admin/class-license.php:325
|
2934 |
msgid ""
|
2935 |
+
"Please <a href=\"%s\">enter and activate</a> your license key for WPForms to "
|
2936 |
+
"enable automatic updates."
|
|
|
2937 |
msgstr ""
|
2938 |
|
2939 |
+
#: pro/includes/admin/class-license.php:334
|
2940 |
msgid ""
|
2941 |
+
"Your license key for WPForms has expired. <a href=\"%s\" target=\"_blank\" "
|
2942 |
+
"rel=\"noopener\">Please click here to renew your license key and continue "
|
2943 |
+
"receiving automatic updates.</a>"
|
2944 |
msgstr ""
|
2945 |
|
2946 |
+
#: pro/includes/admin/class-license.php:352
|
2947 |
msgid ""
|
2948 |
+
"Your license key for WPForms is invalid. The key no longer exists or the "
|
2949 |
+
"user associated with the key has been deleted. Please use a different key to "
|
2950 |
+
"continue receiving automatic updates."
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2951 |
msgstr ""
|
2952 |
|
2953 |
#: pro/includes/admin/entries/class-entries-export.php:179
|
2958 |
msgid "ID"
|
2959 |
msgstr ""
|
2960 |
|
2961 |
+
#: pro/includes/admin/entries/class-entries-export.php:307
|
2962 |
msgid "You do not have permission to export entries."
|
2963 |
msgstr ""
|
2964 |
|
2965 |
+
#: pro/includes/admin/entries/class-entries-list-table.php:101
|
2966 |
msgid "All"
|
2967 |
msgstr ""
|
2968 |
|
2969 |
+
#: pro/includes/admin/entries/class-entries-list-table.php:102
|
2970 |
msgid "Unread"
|
2971 |
msgstr ""
|
2972 |
|
2973 |
+
#: pro/includes/admin/entries/class-entries-list-table.php:103
|
2974 |
msgid "Starred"
|
2975 |
msgstr ""
|
2976 |
|
2977 |
+
#: pro/includes/admin/entries/class-entries-list-table.php:127
|
2978 |
#: pro/includes/fields/class-payment-total.php:21
|
2979 |
msgid "Total"
|
2980 |
msgstr ""
|
2981 |
|
2982 |
+
#: pro/includes/admin/entries/class-entries-list-table.php:137
|
2983 |
+
#: pro/includes/admin/entries/class-entries-single.php:929
|
|
|
|
|
|
|
|
|
2984 |
msgid "Actions"
|
2985 |
msgstr ""
|
2986 |
|
2987 |
+
#: pro/includes/admin/entries/class-entries-list-table.php:264
|
2988 |
+
#: pro/includes/admin/entries/class-entries-single.php:747
|
2989 |
msgid "Unknown"
|
2990 |
msgstr ""
|
2991 |
|
2992 |
+
#: pro/includes/admin/entries/class-entries-list-table.php:271
|
2993 |
+
#: pro/includes/admin/entries/class-entries-single.php:707
|
2994 |
msgid "Completed"
|
2995 |
msgstr ""
|
2996 |
|
2997 |
+
#: pro/includes/admin/entries/class-entries-list-table.php:333
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2998 |
msgid "View Form Entry"
|
2999 |
msgstr ""
|
3000 |
|
3001 |
+
#: pro/includes/admin/entries/class-entries-list-table.php:334
|
3002 |
msgid "View"
|
3003 |
msgstr ""
|
3004 |
|
3005 |
+
#: pro/includes/admin/entries/class-entries-list-table.php:340
|
3006 |
msgid "Delete Form Entry"
|
3007 |
msgstr ""
|
3008 |
|
3009 |
+
#: pro/includes/admin/entries/class-entries-list-table.php:356
|
3010 |
msgid "Mark Read"
|
3011 |
msgstr ""
|
3012 |
|
3013 |
+
#: pro/includes/admin/entries/class-entries-list-table.php:357
|
3014 |
+
#: pro/includes/admin/entries/class-entries-single.php:914
|
3015 |
msgid "Mark Unread"
|
3016 |
msgstr ""
|
3017 |
|
3018 |
+
#: pro/includes/admin/entries/class-entries-list-table.php:358
|
3019 |
+
#: pro/includes/admin/entries/class-entries-single.php:879
|
3020 |
msgid "Star"
|
3021 |
msgstr ""
|
3022 |
|
3023 |
+
#: pro/includes/admin/entries/class-entries-list-table.php:359
|
3024 |
+
#: pro/includes/admin/entries/class-entries-single.php:879
|
3025 |
msgid "Unstar"
|
3026 |
msgstr ""
|
3027 |
|
3028 |
+
#: pro/includes/admin/entries/class-entries-list-table.php:361
|
3029 |
msgid "----------"
|
3030 |
msgstr ""
|
3031 |
|
3032 |
+
#: pro/includes/admin/entries/class-entries-list-table.php:405
|
3033 |
msgid "Entry marked as read."
|
3034 |
msgid_plural "Entries marked as read."
|
3035 |
msgstr[0] ""
|
3036 |
msgstr[1] ""
|
3037 |
|
3038 |
+
#: pro/includes/admin/entries/class-entries-list-table.php:414
|
3039 |
msgid "Entry marked as unread."
|
3040 |
msgid_plural "Entries marked as unread."
|
3041 |
msgstr[0] ""
|
3042 |
msgstr[1] ""
|
3043 |
|
3044 |
+
#: pro/includes/admin/entries/class-entries-list-table.php:423
|
3045 |
msgid "Entry starred."
|
3046 |
msgid_plural "Entries starred."
|
3047 |
msgstr[0] ""
|
3048 |
msgstr[1] ""
|
3049 |
|
3050 |
+
#: pro/includes/admin/entries/class-entries-list-table.php:432
|
3051 |
msgid "Entry unstarred."
|
3052 |
msgid_plural "Entries unstarred."
|
3053 |
msgstr[0] ""
|
3054 |
msgstr[1] ""
|
3055 |
|
3056 |
+
#: pro/includes/admin/entries/class-entries-list-table.php:441
|
3057 |
msgid "Entry successfully deleted."
|
3058 |
msgid_plural "Entries successfully deleted."
|
3059 |
msgstr[0] ""
|
3060 |
msgstr[1] ""
|
3061 |
|
3062 |
+
#: pro/includes/admin/entries/class-entries-list-table.php:452
|
3063 |
msgid "Whoops, it appears you do not have any form entries yet."
|
3064 |
msgstr ""
|
3065 |
|
3066 |
+
#: pro/includes/admin/entries/class-entries-list.php:132
|
3067 |
msgid "Number of entries per page:"
|
3068 |
msgstr ""
|
3069 |
|
3070 |
+
#: pro/includes/admin/entries/class-entries-list.php:214
|
3071 |
+
msgid "All entries marked as read."
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
3072 |
msgstr ""
|
3073 |
|
3074 |
+
#: pro/includes/admin/entries/class-entries-list.php:347
|
3075 |
+
msgid "Select Form"
|
3076 |
msgstr ""
|
3077 |
|
3078 |
+
#: pro/includes/admin/entries/class-entries-list.php:353
|
3079 |
+
msgid "Open form selector"
|
3080 |
msgstr ""
|
3081 |
|
3082 |
+
#: pro/includes/admin/entries/class-entries-list.php:378
|
3083 |
msgid "Edit This Form"
|
3084 |
msgstr ""
|
3085 |
|
3086 |
+
#: pro/includes/admin/entries/class-entries-list.php:388
|
3087 |
msgid "Download Export (CSV)"
|
3088 |
msgstr ""
|
3089 |
|
3090 |
+
#: pro/includes/admin/entries/class-entries-list.php:393
|
3091 |
msgid "Mark All Read"
|
3092 |
msgstr ""
|
3093 |
|
3094 |
+
#: pro/includes/admin/entries/class-entries-single.php:156
|
|
|
|
|
|
|
|
|
3095 |
msgid "This entry has been starred."
|
3096 |
msgstr ""
|
3097 |
|
3098 |
+
#: pro/includes/admin/entries/class-entries-single.php:168
|
3099 |
msgid "This entry has been unstarred."
|
3100 |
msgstr ""
|
3101 |
|
3102 |
+
#: pro/includes/admin/entries/class-entries-single.php:196
|
3103 |
msgid "This entry has been marked unread."
|
3104 |
msgstr ""
|
3105 |
|
3106 |
+
#: pro/includes/admin/entries/class-entries-single.php:223
|
3107 |
msgid "Note deleted."
|
3108 |
msgstr ""
|
3109 |
|
3110 |
+
#: pro/includes/admin/entries/class-entries-single.php:257
|
3111 |
msgid "Note added."
|
3112 |
msgstr ""
|
3113 |
|
3114 |
+
#: pro/includes/admin/entries/class-entries-single.php:291
|
3115 |
+
msgid "Notifications sent!"
|
3116 |
+
msgstr ""
|
3117 |
+
|
3118 |
+
#: pro/includes/admin/entries/class-entries-single.php:309
|
3119 |
msgid "Invalid entry ID."
|
3120 |
msgstr ""
|
3121 |
|
3122 |
+
#: pro/includes/admin/entries/class-entries-single.php:322
|
3123 |
msgid "Entry not found."
|
3124 |
msgstr ""
|
3125 |
|
3126 |
+
#: pro/includes/admin/entries/class-entries-single.php:335
|
3127 |
msgid "Form not found."
|
3128 |
msgstr ""
|
3129 |
|
3130 |
+
#: pro/includes/admin/entries/class-entries-single.php:407
|
|
|
|
|
|
|
|
|
3131 |
msgid "View Entry"
|
3132 |
msgstr ""
|
3133 |
|
3134 |
+
#: pro/includes/admin/entries/class-entries-single.php:409
|
3135 |
msgid "Back to All Entries"
|
3136 |
msgstr ""
|
3137 |
|
3138 |
+
#: pro/includes/admin/entries/class-entries-single.php:413
|
3139 |
msgid "Entry %s of %s"
|
3140 |
msgstr ""
|
3141 |
|
3142 |
+
#: pro/includes/admin/entries/class-entries-single.php:416
|
3143 |
msgid "Previous form entry"
|
3144 |
msgstr ""
|
3145 |
|
3146 |
+
#: pro/includes/admin/entries/class-entries-single.php:417
|
3147 |
msgid "Current form entry"
|
3148 |
msgstr ""
|
3149 |
|
3150 |
+
#: pro/includes/admin/entries/class-entries-single.php:418
|
3151 |
msgid "Next form entry"
|
3152 |
msgstr ""
|
3153 |
|
3154 |
+
#: pro/includes/admin/entries/class-entries-single.php:544
|
3155 |
+
#: pro/includes/admin/entries/class-entries-single.php:559
|
|
|
|
|
|
|
|
|
3156 |
msgid "Add Note"
|
3157 |
msgstr ""
|
3158 |
|
3159 |
+
#: pro/includes/admin/entries/class-entries-single.php:568
|
3160 |
msgid "No notes."
|
3161 |
msgstr ""
|
3162 |
|
3163 |
+
#: pro/includes/admin/entries/class-entries-single.php:596
|
3164 |
msgid "Added by"
|
3165 |
msgstr ""
|
3166 |
|
3167 |
+
#: pro/includes/admin/entries/class-entries-single.php:596
|
3168 |
msgid "on"
|
3169 |
msgstr ""
|
3170 |
|
3171 |
+
#: pro/includes/admin/entries/class-entries-single.php:629
|
3172 |
msgid "Debug Information"
|
3173 |
msgstr ""
|
3174 |
|
3175 |
+
#: pro/includes/admin/entries/class-entries-single.php:656
|
3176 |
msgid "Entry Details"
|
3177 |
msgstr ""
|
3178 |
|
3179 |
+
#: pro/includes/admin/entries/class-entries-single.php:664
|
3180 |
msgid "Entry ID:"
|
3181 |
msgstr ""
|
3182 |
|
3183 |
+
#: pro/includes/admin/entries/class-entries-single.php:670
|
3184 |
msgid "Submitted:"
|
3185 |
msgstr ""
|
3186 |
|
3187 |
+
#: pro/includes/admin/entries/class-entries-single.php:677
|
3188 |
msgid "Modified :"
|
3189 |
msgstr ""
|
3190 |
|
3191 |
+
#: pro/includes/admin/entries/class-entries-single.php:678
|
3192 |
msgid "M j, Y @ H:i"
|
3193 |
msgstr ""
|
3194 |
|
3195 |
+
#: pro/includes/admin/entries/class-entries-single.php:686
|
3196 |
msgid "User:"
|
3197 |
msgstr ""
|
3198 |
|
3199 |
+
#: pro/includes/admin/entries/class-entries-single.php:698
|
3200 |
msgid "User IP:"
|
3201 |
msgstr ""
|
3202 |
|
3203 |
+
#: pro/includes/admin/entries/class-entries-single.php:706
|
3204 |
msgid "Status:"
|
3205 |
msgstr ""
|
3206 |
|
3207 |
+
#: pro/includes/admin/entries/class-entries-single.php:763
|
|
|
|
|
|
|
|
|
3208 |
msgid "PayPal Standard"
|
3209 |
msgstr ""
|
3210 |
|
3211 |
+
#: pro/includes/admin/entries/class-entries-single.php:775
|
3212 |
msgid "Payment Details"
|
3213 |
msgstr ""
|
3214 |
|
3215 |
+
#: pro/includes/admin/entries/class-entries-single.php:782
|
3216 |
msgid " Status:"
|
3217 |
msgstr ""
|
3218 |
|
3219 |
+
#: pro/includes/admin/entries/class-entries-single.php:786
|
3220 |
msgid " Total:"
|
3221 |
msgstr ""
|
3222 |
|
3223 |
+
#: pro/includes/admin/entries/class-entries-single.php:791
|
3224 |
msgid " Gateway:"
|
3225 |
msgstr ""
|
3226 |
|
3227 |
+
#: pro/includes/admin/entries/class-entries-single.php:793
|
3228 |
msgid "Test"
|
3229 |
msgstr ""
|
3230 |
|
3231 |
+
#: pro/includes/admin/entries/class-entries-single.php:799
|
3232 |
msgid "Transaction ID:"
|
3233 |
msgstr ""
|
3234 |
|
3235 |
+
#: pro/includes/admin/entries/class-entries-single.php:804
|
3236 |
msgid "Note:"
|
3237 |
msgstr ""
|
3238 |
|
3239 |
+
#: pro/includes/admin/entries/class-entries-single.php:903
|
|
|
|
|
|
|
|
|
3240 |
msgid "Export (CSV)"
|
3241 |
msgstr ""
|
3242 |
|
3243 |
+
#: pro/includes/admin/entries/class-entries-single.php:908
|
3244 |
msgid "Resend Notifications"
|
3245 |
msgstr ""
|
3246 |
|
3247 |
+
#: pro/includes/admin/entries/class-entries-single.php:975
|
3248 |
msgid "Related Entries"
|
3249 |
msgstr ""
|
3250 |
|
3251 |
+
#: pro/includes/admin/entries/class-entries-single.php:979
|
3252 |
msgid "The user who created this entry also submitted the entries below."
|
3253 |
msgstr ""
|
3254 |
|
3255 |
+
#: pro/includes/admin/entries/class-entries-single.php:994
|
3256 |
msgid "(Abandoned)"
|
3257 |
msgstr ""
|
3258 |
|
3364 |
msgid "Date Dropdown"
|
3365 |
msgstr ""
|
3366 |
|
|
|
|
|
|
|
|
|
3367 |
#: pro/includes/fields/class-date-time.php:152
|
3368 |
msgid "15 minutes"
|
3369 |
msgstr ""
|
3507 |
msgid "Connector"
|
3508 |
msgstr ""
|
3509 |
|
3510 |
+
#: pro/includes/fields/class-page-break.php:274
|
3511 |
+
msgid "None"
|
3512 |
+
msgstr ""
|
3513 |
+
|
3514 |
#: pro/includes/fields/class-page-break.php:281
|
3515 |
msgid "Progress Indicator"
|
3516 |
msgstr ""
|
3604 |
msgid "Confirm Password"
|
3605 |
msgstr ""
|
3606 |
|
3607 |
+
#: pro/includes/fields/class-password.php:188
|
3608 |
+
msgid "Enable Password Confirmation"
|
3609 |
+
msgstr ""
|
3610 |
+
|
3611 |
+
#: pro/includes/fields/class-password.php:189
|
3612 |
+
msgid "Check this option ask the user to provide their password twice."
|
3613 |
+
msgstr ""
|
3614 |
+
|
3615 |
+
#: pro/includes/fields/class-payment-credit-card.php:21 pro/wpforms-pro.php:208
|
3616 |
+
msgid "Credit Card"
|
3617 |
+
msgstr ""
|
3618 |
+
|
3619 |
#: pro/includes/fields/class-payment-credit-card.php:73
|
3620 |
#: pro/includes/fields/class-payment-credit-card.php:277
|
3621 |
msgid "Card Number"
|
3910 |
msgid "Request"
|
3911 |
msgstr ""
|
3912 |
|
3913 |
+
#: pro/wpforms-pro.php:178
|
3914 |
+
msgid "File Extension"
|
3915 |
+
msgstr ""
|
3916 |
+
|
3917 |
+
#: pro/wpforms-pro.php:184
|
3918 |
+
msgid "File Size"
|
3919 |
+
msgstr ""
|
3920 |
+
|
3921 |
+
#: pro/wpforms-pro.php:190
|
3922 |
+
msgid "Time (12 hour)"
|
3923 |
+
msgstr ""
|
3924 |
+
|
3925 |
+
#: pro/wpforms-pro.php:196
|
3926 |
+
msgid "Time (24 hour)"
|
3927 |
+
msgstr ""
|
3928 |
+
|
3929 |
+
#: pro/wpforms-pro.php:202
|
3930 |
+
msgid "Payment Required"
|
3931 |
+
msgstr ""
|
3932 |
+
|
3933 |
+
#: pro/wpforms-pro.php:223
|
3934 |
+
msgid "Currency"
|
3935 |
+
msgstr ""
|
3936 |
+
|
3937 |
+
#: pro/wpforms-pro.php:293
|
3938 |
msgid "Disable storing entry information in WordPress"
|
3939 |
msgstr ""
|
3940 |
|
3941 |
+
#: pro/wpforms-pro.php:354
|
3942 |
msgid "Add New Notification"
|
3943 |
msgstr ""
|
3944 |
|
3945 |
+
#: pro/wpforms-pro.php:509
|
3946 |
msgid "Send"
|
3947 |
msgstr ""
|
3948 |
|
3949 |
+
#: pro/wpforms-pro.php:510
|
3950 |
msgid "Don't send"
|
3951 |
msgstr ""
|
3952 |
|
3953 |
+
#: pro/wpforms-pro.php:512
|
3954 |
msgid "this notification if"
|
3955 |
msgstr ""
|
3956 |
|
3957 |
+
#: pro/wpforms-pro.php:513
|
3958 |
msgid "Email notifications"
|
3959 |
msgstr ""
|
3960 |
|
3961 |
+
#: pro/wpforms-pro.php:516
|
3962 |
msgid ""
|
3963 |
"Install the <a href=\"%s\">Conditional Logic add-on</a> to enable "
|
3964 |
"conditional logic for Email Notifications."
|
3965 |
msgstr ""
|
3966 |
|
3967 |
+
#: pro/wpforms-pro.php:559
|
3968 |
msgid ""
|
3969 |
"Conditional logic functionality is now included in the core WPForms plugin! "
|
3970 |
"The WPForms Conditional Logic addon can be removed without affecting your "
|
3972 |
"noreferrer\">read our annoucement</a>."
|
3973 |
msgstr ""
|
3974 |
|
3975 |
+
#: wpforms.php:58
|
3976 |
msgid "Please deactivate WPForms Lite before activating WPForms"
|
3977 |
msgstr ""
|
3978 |
|
3979 |
+
#. #-#-#-#-# wpforms.pot (WPForms 1.3.9.1) #-#-#-#-#
|
3980 |
#. Plugin URI of the plugin/theme
|
3981 |
+
#. #-#-#-#-# wpforms.pot (WPForms 1.3.9.1) #-#-#-#-#
|
3982 |
#. Author URI of the plugin/theme
|
3983 |
msgid "https://wpforms.com"
|
3984 |
msgstr ""
|
lite/includes/admin/class-settings.php
DELETED
@@ -1,699 +0,0 @@
|
|
1 |
-
<?php
|
2 |
-
/**
|
3 |
-
* Settings class.
|
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_Settings {
|
12 |
-
|
13 |
-
/**
|
14 |
-
* Holds the plugin settings.
|
15 |
-
*
|
16 |
-
* @since 1.0.0
|
17 |
-
* @var array
|
18 |
-
*/
|
19 |
-
protected $options;
|
20 |
-
|
21 |
-
/**
|
22 |
-
* The available forms.
|
23 |
-
*
|
24 |
-
* @since 1.3.7
|
25 |
-
* @var array
|
26 |
-
*/
|
27 |
-
public $forms = false;
|
28 |
-
|
29 |
-
/**
|
30 |
-
* Primary class constructor.
|
31 |
-
*
|
32 |
-
* @since 1.0.0
|
33 |
-
*/
|
34 |
-
public function __construct() {
|
35 |
-
|
36 |
-
// Maybe load settings page
|
37 |
-
add_action( 'admin_init', array( $this, 'init' ) );
|
38 |
-
|
39 |
-
// Plugin settings link
|
40 |
-
add_filter( 'plugin_action_links_' . plugin_basename( WPFORMS_PLUGIN_DIR . 'wpforms.php' ), array( $this, 'settings_link' ) );
|
41 |
-
}
|
42 |
-
|
43 |
-
/**
|
44 |
-
* Get the value of a specific setting.
|
45 |
-
*
|
46 |
-
* @since 1.0.0
|
47 |
-
* @param string $key
|
48 |
-
* @param bool $default
|
49 |
-
* @param string $option
|
50 |
-
* @return mixed
|
51 |
-
*/
|
52 |
-
public function get( $key, $default = false, $option = 'wpforms_settings' ) {
|
53 |
-
|
54 |
-
if ( 'wpforms_settings' === $option && ! empty( $this->options ) ) {
|
55 |
-
$options = $this->options;
|
56 |
-
} else {
|
57 |
-
$options = get_option( $option, false );
|
58 |
-
}
|
59 |
-
|
60 |
-
return ! empty( $options[ $key ] ) ? $options[ $key ] : $default;
|
61 |
-
}
|
62 |
-
|
63 |
-
/**
|
64 |
-
* Determing if the user is viewing the settings page, if so, party on.
|
65 |
-
*
|
66 |
-
* @since 1.0.0
|
67 |
-
*/
|
68 |
-
public function init() {
|
69 |
-
|
70 |
-
// Check what page we are on.
|
71 |
-
$page = isset( $_GET['page'] ) ? $_GET['page'] : '';
|
72 |
-
|
73 |
-
// Only load if we are actually on the settings page.
|
74 |
-
if ( 'wpforms-settings' === $page ) {
|
75 |
-
|
76 |
-
// Retrieve settings.
|
77 |
-
$this->options = get_option( 'wpforms_settings', array() );
|
78 |
-
|
79 |
-
// Retrieve available forms.
|
80 |
-
$args = array(
|
81 |
-
'orderby' => 'title',
|
82 |
-
);
|
83 |
-
$this->forms = wpforms()->form->get( '', $args );
|
84 |
-
|
85 |
-
add_action( 'wpforms_tab_settings_general', array( $this, 'settings_page_tab_general' ) );
|
86 |
-
add_action( 'wpforms_tab_settings_providers', array( $this, 'settings_page_tab_providers' ) );
|
87 |
-
add_action( 'wpforms_tab_settings_system', array( $this, 'settings_page_tab_system' ) );
|
88 |
-
add_action( 'admin_enqueue_scripts', array( $this, 'enqueues' ) );
|
89 |
-
add_action( 'wpforms_admin_page', array( $this, 'output' ) );
|
90 |
-
|
91 |
-
// Hook for add-ons
|
92 |
-
do_action( 'wpforms_settings_init' );
|
93 |
-
}
|
94 |
-
}
|
95 |
-
|
96 |
-
/**
|
97 |
-
* Enqueue assets for the settings page.
|
98 |
-
*
|
99 |
-
* @since 1.0.0
|
100 |
-
*/
|
101 |
-
public function enqueues() {
|
102 |
-
|
103 |
-
wp_enqueue_media();
|
104 |
-
|
105 |
-
// CSS
|
106 |
-
wp_enqueue_style(
|
107 |
-
'font-awesome',
|
108 |
-
WPFORMS_PLUGIN_URL . 'assets/css/font-awesome.min.css',
|
109 |
-
null,
|
110 |
-
'4.4.0'
|
111 |
-
);
|
112 |
-
|
113 |
-
wp_enqueue_style(
|
114 |
-
'wpforms-settings',
|
115 |
-
WPFORMS_PLUGIN_URL . 'assets/css/admin-settings.css',
|
116 |
-
null,
|
117 |
-
WPFORMS_VERSION
|
118 |
-
);
|
119 |
-
|
120 |
-
wp_enqueue_style(
|
121 |
-
'minicolors',
|
122 |
-
WPFORMS_PLUGIN_URL . 'assets/css/jquery.minicolors.css',
|
123 |
-
null,
|
124 |
-
'2.2.3'
|
125 |
-
);
|
126 |
-
|
127 |
-
// JS
|
128 |
-
wp_enqueue_script(
|
129 |
-
'minicolors',
|
130 |
-
WPFORMS_PLUGIN_URL . 'assets/js/jquery.minicolors.min.js',
|
131 |
-
array( 'jquery' ),
|
132 |
-
'2.2.3',
|
133 |
-
false
|
134 |
-
);
|
135 |
-
|
136 |
-
wp_enqueue_script(
|
137 |
-
'wpforms-settings',
|
138 |
-
WPFORMS_PLUGIN_URL . 'assets/js/admin-settings.js',
|
139 |
-
array( 'jquery' ),
|
140 |
-
WPFORMS_VERSION,
|
141 |
-
false
|
142 |
-
);
|
143 |
-
wp_localize_script(
|
144 |
-
'wpforms-settings',
|
145 |
-
'wpforms_settings',
|
146 |
-
array(
|
147 |
-
'ajax_url' => admin_url( 'admin-ajax.php' ),
|
148 |
-
'nonce' => wp_create_nonce( 'wpforms-settings' ),
|
149 |
-
'saving' => __( 'Saving ...', 'wpforms' ),
|
150 |
-
'provider_disconnect' => __( 'Are you sure you want to disconnect this account?', 'wpforms' ),
|
151 |
-
'upload_title' => __( 'Upload or Choose Your Image', 'wpforms' ),
|
152 |
-
'upload_button' => __( 'Use Image', 'wpforms' ),
|
153 |
-
)
|
154 |
-
);
|
155 |
-
|
156 |
-
// Hook for add-ons.
|
157 |
-
do_action( 'wpforms_settings_enqueue' );
|
158 |
-
}
|
159 |
-
|
160 |
-
/**
|
161 |
-
* Handles generating the appropriate tabs and setting sections.
|
162 |
-
*
|
163 |
-
* @since 1.0.0
|
164 |
-
* @return array
|
165 |
-
*/
|
166 |
-
public function setting_page_tabs() {
|
167 |
-
|
168 |
-
// Define our base tabs.
|
169 |
-
$tabs = array(
|
170 |
-
'general' => __( 'General', 'wpforms' ),
|
171 |
-
'providers' => __( 'Integrations', 'wpforms' ),
|
172 |
-
'system' => __( 'System Info', 'wpforms' ),
|
173 |
-
);
|
174 |
-
|
175 |
-
// Allow for addons and extensions to add additional tabs.
|
176 |
-
$tabs = apply_filters( 'wpform_settings_tabs', $tabs );
|
177 |
-
|
178 |
-
return $tabs;
|
179 |
-
}
|
180 |
-
|
181 |
-
/**
|
182 |
-
* Build the output for General tab on the settings page and check for save.
|
183 |
-
*
|
184 |
-
* @since 1.0.0
|
185 |
-
*/
|
186 |
-
public function settings_page_tab_general() {
|
187 |
-
|
188 |
-
// Check for save, if found let's dance.
|
189 |
-
if ( ! empty( $_POST['wpforms-settings-general-nonce'] ) ) {
|
190 |
-
|
191 |
-
// Do we have a valid nonce and permission?.
|
192 |
-
if ( ! wp_verify_nonce( $_POST['wpforms-settings-general-nonce'], 'wpforms-settings-general-nonce' ) || ! current_user_can( apply_filters( 'wpforms_manage_cap', 'manage_options' ) ) ) {
|
193 |
-
|
194 |
-
// No funny business.
|
195 |
-
printf( '<div class="error below-h2"><p>%s</p></div>', __( 'Settings check failed.', 'wpforms' ) );
|
196 |
-
|
197 |
-
} else {
|
198 |
-
|
199 |
-
// Save General Settings.
|
200 |
-
if ( isset( $_POST['submit-general'] ) ) {
|
201 |
-
|
202 |
-
// Prep and sanatize settings for save.
|
203 |
-
$this->options['email-template'] = ! empty( $_POST['email-template'] ) ? esc_attr( $_POST['email-template'] ) : 'default';
|
204 |
-
$this->options['email-header-image'] = ! empty( $_POST['email-header-image'] ) ? esc_url_raw( $_POST['email-header-image'] ) : '';
|
205 |
-
$this->options['email-background-color'] = ! empty( $_POST['email-background-color'] ) ? wpforms_sanitize_hex_color( $_POST['email-background-color'] ) : '#e9eaec';
|
206 |
-
$this->options['email-carbon-copy'] = ! empty( $_POST['email-carbon-copy'] ) ? '1' : false;
|
207 |
-
$this->options['disable-css'] = ! empty( $_POST['disable-css'] ) ? intval( $_POST['disable-css'] ) : '1';
|
208 |
-
$this->options['global-assets'] = ! empty( $_POST['global-assets'] ) ? '1' : false;
|
209 |
-
$this->options['recaptcha-type'] = ! empty( $_POST['recaptcha-type'] ) ? esc_html( $_POST['recaptcha-type'] ) : 'v2';
|
210 |
-
$this->options['recaptcha-site-key'] = ! empty( $_POST['recaptcha-site-key'] ) ? esc_html( $_POST['recaptcha-site-key'] ) : '';
|
211 |
-
$this->options['recaptcha-secret-key'] = ! empty( $_POST['recaptcha-secret-key'] ) ? esc_html( $_POST['recaptcha-secret-key'] ) : '';
|
212 |
-
$this->options['validation-required'] = ! empty( $_POST['validation-required'] ) ? sanitize_text_field( $_POST['validation-required'] ) : '';
|
213 |
-
$this->options['validation-url'] = ! empty( $_POST['validation-url'] ) ? sanitize_text_field( $_POST['validation-url'] ) : '';
|
214 |
-
$this->options['validation-email'] = ! empty( $_POST['validation-email'] ) ? sanitize_text_field( $_POST['validation-email'] ) : '';
|
215 |
-
$this->options['validation-number'] = ! empty( $_POST['validation-number'] ) ? sanitize_text_field( $_POST['validation-number'] ) : '';
|
216 |
-
$this->options['validation-confirm'] = ! empty( $_POST['validation-confirm'] ) ? sanitize_text_field( $_POST['validation-confirm'] ) : '';
|
217 |
-
|
218 |
-
$this->options = apply_filters( 'wpforms_settings_save', $this->options, $_POST, 'general' );
|
219 |
-
|
220 |
-
// Update settings in DB.
|
221 |
-
update_option( 'wpforms_settings' , $this->options );
|
222 |
-
|
223 |
-
printf( '<div class="updated below-h2"><p>%s</p></div>', __( 'General settings updated.', 'wpforms' ) );
|
224 |
-
|
225 |
-
}
|
226 |
-
} // End if().
|
227 |
-
} // End if().
|
228 |
-
?>
|
229 |
-
|
230 |
-
<div id="wpforms-settings-general">
|
231 |
-
|
232 |
-
<form method="post">
|
233 |
-
|
234 |
-
<?php wp_nonce_field( 'wpforms-settings-general-nonce', 'wpforms-settings-general-nonce' ); ?>
|
235 |
-
|
236 |
-
<table class="form-table">
|
237 |
-
<tbody>
|
238 |
-
<tr>
|
239 |
-
<th scope="row">
|
240 |
-
<label for="wpforms-settings-general-css"><?php _e( 'Include Form Styling', 'wpforms' ); ?></label>
|
241 |
-
</th>
|
242 |
-
<td>
|
243 |
-
<select name="disable-css" id="wpforms-settings-general-css">
|
244 |
-
<option value="1" <?php selected( '1', $this->get( 'disable-css' ) ); ?>><?php _e( 'Base and form theme styling', 'wpforms' ); ?></option>
|
245 |
-
<option value="2" <?php selected( '2', $this->get( 'disable-css' ) ); ?>><?php _e( 'Base styling only', 'wpforms' ); ?></option>
|
246 |
-
<option value="3" <?php selected( '3', $this->get( 'disable-css' ) ); ?>><?php _e( 'None', 'wpforms' ); ?></option>
|
247 |
-
</select>
|
248 |
-
<p class="description"><?php _e( 'Determines which CSS files to load for the site.', 'wpforms' ); ?></p>
|
249 |
-
</td>
|
250 |
-
</tr>
|
251 |
-
<tr>
|
252 |
-
<th scope="row">
|
253 |
-
<label for="wpforms-settings-general-global-assets"><?php _e( 'Load Assets Globally', 'wpforms' ); ?></label>
|
254 |
-
</th>
|
255 |
-
<td>
|
256 |
-
<input type="checkbox" name="global-assets" id="wpforms-settings-general-global-assets" value="1" <?php checked( '1', $this->get( 'global-assets' ) ); ?>>
|
257 |
-
<label for="wpforms-settings-general-global-assets"><?php _e( 'Check this if you would like to load WPForms assets site-wide. Only check if your site is having compatibility issues or instructed to by support.', 'wpforms' ); ?></label>
|
258 |
-
</td>
|
259 |
-
</tr>
|
260 |
-
<tr>
|
261 |
-
<td class="section" colspan="2">
|
262 |
-
<hr>
|
263 |
-
<h4><?php _e( 'Email', 'wpforms' ); ?></h4>
|
264 |
-
</td>
|
265 |
-
</tr>
|
266 |
-
<tr>
|
267 |
-
<th scope="row">
|
268 |
-
<label for="wpforms-settings-general-email-template"><?php _e( 'Email Template', 'wpforms' ); ?></label>
|
269 |
-
</th>
|
270 |
-
<td>
|
271 |
-
<select name="email-template" id="wpforms-settings-general-email-template">
|
272 |
-
<option value="default" <?php selected( 'default', $this->get( 'email-template' ) ); ?>><?php _e( 'Default HTML template', 'wpforms' ); ?></option>
|
273 |
-
<option value="none" <?php selected( 'none', $this->get( 'email-template' ) ); ?>><?php _e( 'Plain Text', 'wpforms' ); ?></option>
|
274 |
-
</select>
|
275 |
-
<p class="description"><?php _e( 'Determines how email notifications will be formatted.', 'wpforms' ); ?></p>
|
276 |
-
</td>
|
277 |
-
</tr>
|
278 |
-
<tr>
|
279 |
-
<th scope="row">
|
280 |
-
<label for="wpforms-settings-general-email-header-image"><?php _e( 'Email Header Image ', 'wpforms' ); ?></label>
|
281 |
-
</th>
|
282 |
-
<td>
|
283 |
-
<label for="wpforms-settings-general-email-header-image" class="wpforms-settings-upload-image-display">
|
284 |
-
<?php
|
285 |
-
$email_header = $this->get( 'email-header-image' );
|
286 |
-
if ( $email_header ) {
|
287 |
-
echo '<img src="' . esc_url_raw( $email_header ) . '">';
|
288 |
-
}
|
289 |
-
?>
|
290 |
-
</label>
|
291 |
-
<input type="text" name="email-header-image" id="wpforms-settings-general-email-header-image" class="wpforms-settings-upload-image-value" value="<?php echo esc_url_raw( $this->get( 'email-header-image' ) ); ?>" />
|
292 |
-
<a href="#" class="button button-secondary wpforms-settings-upload-image"><?php _e( 'Upload Image', 'wpforms' ); ?></a>
|
293 |
-
<p class="description">
|
294 |
-
<?php _e( 'Upload or choose a logo to be displayed at the top of email notifications.', 'wpforms' ); ?><br>
|
295 |
-
<?php _e( 'Recommended size is 300x100 or smaller for best support on all devices.', 'wpforms' ); ?>
|
296 |
-
</p>
|
297 |
-
</td>
|
298 |
-
</tr>
|
299 |
-
<tr>
|
300 |
-
<th scope="row">
|
301 |
-
<label for="wpforms-settings-general-email-background-color"><?php _e( 'Email Background Color', 'wpforms' ); ?></label>
|
302 |
-
</th>
|
303 |
-
<td>
|
304 |
-
<input type="text" name="email-background-color" value="<?php echo esc_attr( $this->get( 'email-background-color', '#e9eaec' ) ); ?>" id="wpforms-settings-general-email-background-color" class="wpforms-color-picker">
|
305 |
-
<p class="description"><?php _e( 'Customize the background color of the HTML email template.', 'wpforms' ); ?></p>
|
306 |
-
</td>
|
307 |
-
</tr>
|
308 |
-
<tr>
|
309 |
-
<th scope="row">
|
310 |
-
<label for="wpforms-settings-general-email-carbon-copy"><?php _e( 'Email Carbon Copy', 'wpforms' ); ?></label>
|
311 |
-
</th>
|
312 |
-
<td>
|
313 |
-
<input type="checkbox" name="email-carbon-copy" id="wpforms-settings-general-email-carbon-copy" value="1" <?php checked( '1', $this->get( 'email-carbon-copy' ) ); ?>>
|
314 |
-
<label for="wpforms-settings-general-email-carbon-copy"><?php _e( 'Check this if you would like to enable the ability to CC: email addresses in the form notification settings.', 'wpforms' ); ?></label>
|
315 |
-
</td>
|
316 |
-
</tr>
|
317 |
-
<tr>
|
318 |
-
<td class="section" colspan="2">
|
319 |
-
<hr>
|
320 |
-
<h4><?php _e( 'reCAPTCHA', 'wpforms' ); ?></h4>
|
321 |
-
<p><?php _e( 'reCAPTCHA is a free anti-spam service from Google which helps to protect your website from spam and abuse while letting real people pass through with ease.', 'wpforms' ); ?></p>
|
322 |
-
<p><?php _e( 'Google\'s original <a href="https://www.google.com/recaptcha/intro/" rel="noopener noreferrer">v2 reCAPTCHA</a> prompts users to check a box to prove they\'re human, whereas <a href="https://www.google.com/recaptcha/intro/invisible.html" rel="noopener noreferrer">Invisible reCAPTCHA</a> uses advanced technology to detect real users without requiring any input.', 'wpforms' ); ?></p>
|
323 |
-
<p><?php _e( 'Sites already using v2 reCAPTCHA will need to create new site keys before switching to the Invisible reCAPTCHA.', 'wpforms' ); ?></p>
|
324 |
-
<p><?php _e( '<a href="https://wpforms.com/docs/setup-captcha-wpforms/" rel="noopener noreferrer">Read our walk through</a> to learn more and for step-by-step directions.', 'wpforms' ); ?></p>
|
325 |
-
</td>
|
326 |
-
</tr>
|
327 |
-
<tr>
|
328 |
-
<th scope="row">
|
329 |
-
<label for="wpforms-settings-general-recaptcha-type"><?php _e( 'reCAPTCHA Type', 'wpforms' ); ?></label>
|
330 |
-
</th>
|
331 |
-
<td>
|
332 |
-
<select name="recaptcha-type" id="wpforms-settings-general-recaptcha-type">
|
333 |
-
<?php
|
334 |
-
$options = array(
|
335 |
-
'v2' => 'v2 reCAPTCHA',
|
336 |
-
'invisible' => 'Invisible reCAPTCHA',
|
337 |
-
);
|
338 |
-
$selected = $this->get( 'recaptcha-type' );
|
339 |
-
foreach ( $options as $key => $option ) {
|
340 |
-
printf( '<option value="%s" %s>%s</option>', esc_attr( $key ), selected( $selected, $key, false ), esc_html( $option ) );
|
341 |
-
}
|
342 |
-
?>
|
343 |
-
</select>
|
344 |
-
</td>
|
345 |
-
</tr>
|
346 |
-
<tr>
|
347 |
-
<th scope="row">
|
348 |
-
<label for="wpforms-settings-general-recaptcha-site-key"><?php _e( 'reCAPTCHA Site key', 'wpforms' ); ?></label>
|
349 |
-
</th>
|
350 |
-
<td>
|
351 |
-
<input type="text" name="recaptcha-site-key" value="<?php echo esc_attr( $this->get( 'recaptcha-site-key' ) ); ?>" id="wpforms-settings-general-recaptcha-site-key">
|
352 |
-
</td>
|
353 |
-
</tr>
|
354 |
-
<tr>
|
355 |
-
<th scope="row">
|
356 |
-
<label for="wpforms-settings-general-recaptcha-secret-key"><?php _e( 'reCAPTCHA Secret key', 'wpforms' ); ?></label>
|
357 |
-
</th>
|
358 |
-
<td>
|
359 |
-
<input type="text" name="recaptcha-secret-key" value="<?php echo esc_attr( $this->get( 'recaptcha-secret-key' ) ); ?>" id="wpforms-settings-general-recaptcha-secret-key">
|
360 |
-
</td>
|
361 |
-
</tr>
|
362 |
-
<tr>
|
363 |
-
<td class="section" colspan="2">
|
364 |
-
<hr>
|
365 |
-
<h4><?php _e( 'Validation Messages', 'wpforms' ); ?></h4>
|
366 |
-
</td>
|
367 |
-
</tr>
|
368 |
-
<tr>
|
369 |
-
<th scope="row">
|
370 |
-
<label for="wpforms-settings-general-validation-required"><?php _e( 'Required', 'wpforms' ); ?></label>
|
371 |
-
</th>
|
372 |
-
<td>
|
373 |
-
<input type="text" name="validation-required" value="<?php echo esc_attr( $this->get( 'validation-required', __( 'This field is required.', 'wpforms' ) ) ); ?>" id="wpforms-settings-general-validation-required">
|
374 |
-
</td>
|
375 |
-
</tr>
|
376 |
-
<tr>
|
377 |
-
<th scope="row">
|
378 |
-
<label for="wpforms-settings-general-validation-url"><?php _e( 'Website URL', 'wpforms' ); ?></label>
|
379 |
-
</th>
|
380 |
-
<td>
|
381 |
-
<input type="text" name="validation-url" value="<?php echo esc_attr( $this->get( 'validation-url', __( 'Please enter a valid URL.', 'wpforms' ) ) ); ?>" id="wpforms-settings-general-validation-url">
|
382 |
-
</td>
|
383 |
-
</tr>
|
384 |
-
<tr>
|
385 |
-
<th scope="row">
|
386 |
-
<label for="wpforms-settings-general-validation-email"><?php _e( 'Email', 'wpforms' ); ?></label>
|
387 |
-
</th>
|
388 |
-
<td>
|
389 |
-
<input type="text" name="validation-email" value="<?php echo esc_attr( $this->get( 'validation-email', __( 'Please enter a valid email address.', 'wpforms' ) ) ); ?>" id="wpforms-settings-general-validation-email">
|
390 |
-
</td>
|
391 |
-
</tr>
|
392 |
-
<tr>
|
393 |
-
<th scope="row">
|
394 |
-
<label for="wpforms-settings-general-validation-number"><?php _e( 'Number', 'wpforms' ); ?></label>
|
395 |
-
</th>
|
396 |
-
<td>
|
397 |
-
<input type="text" name="validation-number" value="<?php echo esc_attr( $this->get( 'validation-number', __( 'Please enter a valid number.', 'wpforms' ) ) ); ?>" id="wpforms-settings-general-validation-number">
|
398 |
-
</td>
|
399 |
-
</tr>
|
400 |
-
<tr>
|
401 |
-
<th scope="row">
|
402 |
-
<label for="wpforms-settings-general-validation-confirm"><?php _e( 'Confirm Value', 'wpforms' ); ?></label>
|
403 |
-
</th>
|
404 |
-
<td>
|
405 |
-
<input type="text" name="validation-confirm" value="<?php echo esc_attr( $this->get( 'validation-confirm', __( 'Field values do not match.', 'wpforms' ) ) ); ?>" id="wpforms-settings-general-validation-confirm">
|
406 |
-
</td>
|
407 |
-
</tr>
|
408 |
-
</tbody>
|
409 |
-
</table>
|
410 |
-
|
411 |
-
<?php submit_button( __( 'Save General Settings', 'wpforms'), 'primary', 'submit-general' ); ?>
|
412 |
-
|
413 |
-
</form>
|
414 |
-
|
415 |
-
</div>
|
416 |
-
<?php
|
417 |
-
}
|
418 |
-
|
419 |
-
/**
|
420 |
-
* Build the output for Integrations (providers) tab on the settings page and check for save.
|
421 |
-
*
|
422 |
-
* @since 1.0.0
|
423 |
-
*/
|
424 |
-
public function settings_page_tab_providers() {
|
425 |
-
|
426 |
-
$providers = get_option( 'wpforms_providers', false );
|
427 |
-
$active = apply_filters( 'wpforms_providers_available', array() );
|
428 |
-
|
429 |
-
// If no provider addons are activated display a message and bail.
|
430 |
-
if ( empty( $active ) ) {
|
431 |
-
echo '<div class="notice notice-info below-h2"><p>' . sprintf( __( 'You do not have any marketing add-ons activated. You can head over to the <a href="%s">Add-Ons page</a> to install and activate the add-on for your provider.', 'wpforms' ), admin_url( 'admin.php?page=wpforms-addons' ) ) . '</p></div>';
|
432 |
-
return;
|
433 |
-
}
|
434 |
-
?>
|
435 |
-
|
436 |
-
<div id="wpforms-settings-providers">
|
437 |
-
<?php do_action( 'wpforms_settings_providers', $active, $providers ); ?>
|
438 |
-
</div>
|
439 |
-
<?php
|
440 |
-
}
|
441 |
-
|
442 |
-
/**
|
443 |
-
* Build the output for System Info (system) tab on the settings page.
|
444 |
-
*
|
445 |
-
* @since 1.2.3
|
446 |
-
*/
|
447 |
-
public function settings_page_tab_system() {
|
448 |
-
|
449 |
-
?>
|
450 |
-
<div id="wpforms-settings-system">
|
451 |
-
<textarea readonly="readonly" class="system-info-textarea"><?php echo $this->get_system_info(); ?></textarea>
|
452 |
-
</div>
|
453 |
-
<?php
|
454 |
-
}
|
455 |
-
|
456 |
-
/**
|
457 |
-
* Build the output for the plugin settings page.
|
458 |
-
*
|
459 |
-
* @since 1.0.0
|
460 |
-
*/
|
461 |
-
public function output() {
|
462 |
-
|
463 |
-
?>
|
464 |
-
<div id="wpforms-settings" class="wrap">
|
465 |
-
|
466 |
-
<h2><?php echo esc_html( get_admin_page_title() ); ?></h2>
|
467 |
-
|
468 |
-
<div class="wpforms-circle-loader">
|
469 |
-
<div class="wpforms-circle-1 wpforms-circle"></div>
|
470 |
-
<div class="wpforms-circle-2 wpforms-circle"></div>
|
471 |
-
<div class="wpforms-circle-3 wpforms-circle"></div>
|
472 |
-
<div class="wpforms-circle-4 wpforms-circle"></div>
|
473 |
-
<div class="wpforms-circle-5 wpforms-circle"></div>
|
474 |
-
<div class="wpforms-circle-6 wpforms-circle"></div>
|
475 |
-
<div class="wpforms-circle-7 wpforms-circle"></div>
|
476 |
-
<div class="wpforms-circle-8 wpforms-circle"></div>
|
477 |
-
<div class="wpforms-circle-9 wpforms-circle"></div>
|
478 |
-
<div class="wpforms-circle-10 wpforms-circle"></div>
|
479 |
-
<div class="wpforms-circle-11 wpforms-circle"></div>
|
480 |
-
<div class="wpforms-circle-12 wpforms-circle"></div>
|
481 |
-
</div>
|
482 |
-
|
483 |
-
<div id="wpforms-tabs" class="wpforms-clear">
|
484 |
-
|
485 |
-
<!-- Output tabs navigation -->
|
486 |
-
<h2 id="wpforms-tabs-nav" class="wpforms-clear nav-tab-wrapper">
|
487 |
-
<?php $i = 0; foreach ( (array) $this->setting_page_tabs() as $id => $title ) : $class = 0 === $i ? 'wpforms-active nav-tab-active' : ''; ?>
|
488 |
-
<a class="nav-tab <?php echo $class; ?>" href="#wpforms-tab-<?php echo $id; ?>" title="<?php echo $title; ?>"><?php echo $title; ?></a>
|
489 |
-
<?php $i++; endforeach; ?>
|
490 |
-
</h2>
|
491 |
-
|
492 |
-
<!-- Output tab sections -->
|
493 |
-
<?php $i = 0; foreach ( (array) $this->setting_page_tabs() as $id => $title ) : $class = 0 === $i ? 'wpforms-active' : ''; ?>
|
494 |
-
<div id="wpforms-tab-<?php echo $id; ?>" class="wpforms-tab wpforms-clear <?php echo $class; ?>">
|
495 |
-
<?php do_action( 'wpforms_tab_settings_' . $id ); ?>
|
496 |
-
</div>
|
497 |
-
<?php $i++; endforeach; ?>
|
498 |
-
|
499 |
-
</div>
|
500 |
-
|
501 |
-
</div>
|
502 |
-
<?php
|
503 |
-
}
|
504 |
-
|
505 |
-
/**
|
506 |
-
* Add settings link to the Plugins page.
|
507 |
-
*
|
508 |
-
* @since 1.0.0
|
509 |
-
* @param array $links
|
510 |
-
* @return array $links
|
511 |
-
*/
|
512 |
-
public function settings_link( $links ) {
|
513 |
-
|
514 |
-
$admin_link = add_query_arg(
|
515 |
-
array(
|
516 |
-
'page' => 'wpforms-settings',
|
517 |
-
),
|
518 |
-
admin_url( 'admin.php' )
|
519 |
-
);
|
520 |
-
|
521 |
-
$setting_link = sprintf(
|
522 |
-
'<a href="%s">%s</a>',
|
523 |
-
$admin_link ,
|
524 |
-
__( 'Settings', 'wpforms' )
|
525 |
-
);
|
526 |
-
|
527 |
-
array_unshift( $links, $setting_link );
|
528 |
-
|
529 |
-
return $links;
|
530 |
-
}
|
531 |
-
|
532 |
-
/**
|
533 |
-
* Get system information.
|
534 |
-
*
|
535 |
-
* Based on a function from Easy Digital Downloads by Pippin Williamson.
|
536 |
-
*
|
537 |
-
* @link https://github.com/easydigitaldownloads/easy-digital-downloads/blob/master/includes/admin/tools.php#L470
|
538 |
-
* @since 1.2.3
|
539 |
-
* @return string
|
540 |
-
*/
|
541 |
-
public function get_system_info() {
|
542 |
-
|
543 |
-
global $wpdb;
|
544 |
-
|
545 |
-
// Get theme info.
|
546 |
-
$theme_data = wp_get_theme();
|
547 |
-
$theme = $theme_data->Name . ' ' . $theme_data->Version;
|
548 |
-
|
549 |
-
$return = '### Begin System Info ###' . "\n\n";
|
550 |
-
|
551 |
-
// WPForms info.
|
552 |
-
$activated = get_option( 'wpforms_activated', array() );
|
553 |
-
$return .= '-- WPForms Info' . "\n\n";
|
554 |
-
if ( ! empty( $activated['pro'] ) ) {
|
555 |
-
$date = $activated['pro'] + ( get_option( 'gmt_offset' ) * 3600 );
|
556 |
-
$return .= 'Pro: ' . date_i18n( __( 'M j, Y @ g:ia' ), $date ) . "\n";
|
557 |
-
}
|
558 |
-
if ( ! empty( $activated['lite'] ) ) {
|
559 |
-
$date = $activated['lite'] + ( get_option( 'gmt_offset' ) * 3600 );
|
560 |
-
$return .= 'Lite: ' . date_i18n( __( 'M j, Y @ g:ia' ), $date ) . "\n";
|
561 |
-
}
|
562 |
-
|
563 |
-
// Now the basics...
|
564 |
-
$return .= '-- Site Info' . "\n\n";
|
565 |
-
$return .= 'Site URL: ' . site_url() . "\n";
|
566 |
-
$return .= 'Home URL: ' . home_url() . "\n";
|
567 |
-
$return .= 'Multisite: ' . ( is_multisite() ? 'Yes' : 'No' ) . "\n";
|
568 |
-
|
569 |
-
// WordPress configuration.
|
570 |
-
$return .= "\n" . '-- WordPress Configuration' . "\n\n";
|
571 |
-
$return .= 'Version: ' . get_bloginfo( 'version' ) . "\n";
|
572 |
-
$return .= 'Language: ' . ( defined( 'WPLANG' ) && WPLANG ? WPLANG : 'en_US' ) . "\n";
|
573 |
-
$return .= 'Permalink Structure: ' . ( get_option( 'permalink_structure' ) ? get_option( 'permalink_structure' ) : 'Default' ) . "\n";
|
574 |
-
$return .= 'Active Theme: ' . $theme . "\n";
|
575 |
-
$return .= 'Show On Front: ' . get_option( 'show_on_front' ) . "\n";
|
576 |
-
// Only show page specs if frontpage is set to 'page'.
|
577 |
-
if ( get_option( 'show_on_front' ) === 'page' ) {
|
578 |
-
$front_page_id = get_option( 'page_on_front' );
|
579 |
-
$blog_page_id = get_option( 'page_for_posts' );
|
580 |
-
$return .= 'Page On Front: ' . ( 0 != $front_page_id ? get_the_title( $front_page_id ) . ' (#' . $front_page_id . ')' : 'Unset' ) . "\n";
|
581 |
-
$return .= 'Page For Posts: ' . ( 0 != $blog_page_id ? get_the_title( $blog_page_id ) . ' (#' . $blog_page_id . ')' : 'Unset' ) . "\n";
|
582 |
-
}
|
583 |
-
$return .= 'ABSPATH: ' . ABSPATH . "\n";
|
584 |
-
$return .= 'Table Prefix: ' . 'Length: ' . strlen( $wpdb->prefix ) . ' Status: ' . ( strlen( $wpdb->prefix ) > 16 ? 'ERROR: Too long' : 'Acceptable' ) . "\n";
|
585 |
-
$return .= 'WP_DEBUG: ' . ( defined( 'WP_DEBUG' ) ? WP_DEBUG ? 'Enabled' : 'Disabled' : 'Not set' ) . "\n";
|
586 |
-
$return .= 'WPFORMS_DEBUG: ' . ( defined( 'WPFORMS_DEBUG' ) ? WPFORMS_DEBUG ? 'Enabled' : 'Disabled' : 'Not set' ) . "\n";
|
587 |
-
$return .= 'Memory Limit: ' . WP_MEMORY_LIMIT . "\n";
|
588 |
-
$return .= 'Registered Post Stati: ' . implode( ', ', get_post_stati() ) . "\n";
|
589 |
-
|
590 |
-
// @todo WPForms configuration/specific details.
|
591 |
-
$return .= "\n" . '-- WordPress Uploads/Constants' . "\n\n";
|
592 |
-
$return .= 'WP_CONTENT_DIR: ' . ( defined( 'WP_CONTENT_DIR' ) ? WP_CONTENT_DIR ? WP_CONTENT_DIR : 'Disabled' : 'Not set' ) . "\n";
|
593 |
-
$return .= 'WP_CONTENT_URL: ' . ( defined( 'WP_CONTENT_URL' ) ? WP_CONTENT_URL ? WP_CONTENT_URL : 'Disabled' : 'Not set' ) . "\n";
|
594 |
-
$return .= 'UPLOADS: ' . ( defined( 'UPLOADS' ) ? UPLOADS ? UPLOADS : 'Disabled' : 'Not set' ) . "\n";
|
595 |
-
$uploads_dir = wp_upload_dir();
|
596 |
-
$return .= 'wp_uploads_dir() path: ' . $uploads_dir['path'] . "\n";
|
597 |
-
$return .= 'wp_uploads_dir() url: ' . $uploads_dir['url'] . "\n";
|
598 |
-
$return .= 'wp_uploads_dir() basedir: ' . $uploads_dir['basedir'] . "\n";
|
599 |
-
$return .= 'wp_uploads_dir() baseurl: ' . $uploads_dir['baseurl'] . "\n";
|
600 |
-
|
601 |
-
// Get plugins that have an update.
|
602 |
-
$updates = get_plugin_updates();
|
603 |
-
|
604 |
-
// Must-use plugins.
|
605 |
-
// NOTE: MU plugins can't show updates!
|
606 |
-
$muplugins = get_mu_plugins();
|
607 |
-
if ( count( $muplugins ) > 0 && ! empty( $muplugins ) ) {
|
608 |
-
$return .= "\n" . '-- Must-Use Plugins' . "\n\n";
|
609 |
-
|
610 |
-
foreach ( $muplugins as $plugin => $plugin_data ) {
|
611 |
-
$return .= $plugin_data['Name'] . ': ' . $plugin_data['Version'] . "\n";
|
612 |
-
}
|
613 |
-
}
|
614 |
-
|
615 |
-
// WordPress active plugins.
|
616 |
-
$return .= "\n" . '-- WordPress Active Plugins' . "\n\n";
|
617 |
-
|
618 |
-
$plugins = get_plugins();
|
619 |
-
$active_plugins = get_option( 'active_plugins', array() );
|
620 |
-
|
621 |
-
foreach ( $plugins as $plugin_path => $plugin ) {
|
622 |
-
if ( ! in_array( $plugin_path, $active_plugins, true ) ) {
|
623 |
-
continue;
|
624 |
-
}
|
625 |
-
$update = ( array_key_exists( $plugin_path, $updates ) ) ? ' (needs update - ' . $updates[ $plugin_path ]->update->new_version . ')' : '';
|
626 |
-
$return .= $plugin['Name'] . ': ' . $plugin['Version'] . $update . "\n";
|
627 |
-
}
|
628 |
-
|
629 |
-
// WordPress inactive plugins.
|
630 |
-
$return .= "\n" . '-- WordPress Inactive Plugins' . "\n\n";
|
631 |
-
|
632 |
-
foreach ( $plugins as $plugin_path => $plugin ) {
|
633 |
-
if ( in_array( $plugin_path, $active_plugins ) ) {
|
634 |
-
continue;
|
635 |
-
}
|
636 |
-
$update = ( array_key_exists( $plugin_path, $updates ) ) ? ' (needs update - ' . $updates[ $plugin_path ]->update->new_version . ')' : '';
|
637 |
-
$return .= $plugin['Name'] . ': ' . $plugin['Version'] . $update . "\n";
|
638 |
-
}
|
639 |
-
|
640 |
-
if ( is_multisite() ) {
|
641 |
-
// WordPress Multisite active plugins.
|
642 |
-
$return .= "\n" . '-- Network Active Plugins' . "\n\n";
|
643 |
-
|
644 |
-
$plugins = wp_get_active_network_plugins();
|
645 |
-
$active_plugins = get_site_option( 'active_sitewide_plugins', array() );
|
646 |
-
|
647 |
-
foreach ( $plugins as $plugin_path ) {
|
648 |
-
$plugin_base = plugin_basename( $plugin_path );
|
649 |
-
if ( ! array_key_exists( $plugin_base, $active_plugins ) ) {
|
650 |
-
continue;
|
651 |
-
}
|
652 |
-
$update = ( array_key_exists( $plugin_path, $updates ) ) ? ' (needs update - ' . $updates[ $plugin_path ]->update->new_version . ')' : '';
|
653 |
-
$plugin = get_plugin_data( $plugin_path );
|
654 |
-
$return .= $plugin['Name'] . ': ' . $plugin['Version'] . $update . "\n";
|
655 |
-
}
|
656 |
-
}
|
657 |
-
|
658 |
-
// Server configuration (really just versioning).
|
659 |
-
$return .= "\n" . '-- Webserver Configuration' . "\n\n";
|
660 |
-
$return .= 'PHP Version: ' . PHP_VERSION . "\n";
|
661 |
-
$return .= 'MySQL Version: ' . $wpdb->db_version() . "\n";
|
662 |
-
$return .= 'Webserver Info: ' . $_SERVER['SERVER_SOFTWARE'] . "\n";
|
663 |
-
|
664 |
-
// PHP configs... now we're getting to the important stuff.
|
665 |
-
$return .= "\n" . '-- PHP Configuration' . "\n\n";
|
666 |
-
$return .= 'Memory Limit: ' . ini_get( 'memory_limit' ) . "\n";
|
667 |
-
$return .= 'Upload Max Size: ' . ini_get( 'upload_max_filesize' ) . "\n";
|
668 |
-
$return .= 'Post Max Size: ' . ini_get( 'post_max_size' ) . "\n";
|
669 |
-
$return .= 'Upload Max Filesize: ' . ini_get( 'upload_max_filesize' ) . "\n";
|
670 |
-
$return .= 'Time Limit: ' . ini_get( 'max_execution_time' ) . "\n";
|
671 |
-
$return .= 'Max Input Vars: ' . ini_get( 'max_input_vars' ) . "\n";
|
672 |
-
$return .= 'Display Errors: ' . ( ini_get( 'display_errors' ) ? 'On (' . ini_get( 'display_errors' ) . ')' : 'N/A' ) . "\n";
|
673 |
-
|
674 |
-
// PHP extensions and such.
|
675 |
-
$return .= "\n" . '-- PHP Extensions' . "\n\n";
|
676 |
-
$return .= 'cURL: ' . ( function_exists( 'curl_init' ) ? 'Supported' : 'Not Supported' ) . "\n";
|
677 |
-
$return .= 'fsockopen: ' . ( function_exists( 'fsockopen' ) ? 'Supported' : 'Not Supported' ) . "\n";
|
678 |
-
$return .= 'SOAP Client: ' . ( class_exists( 'SoapClient' ) ? 'Installed' : 'Not Installed' ) . "\n";
|
679 |
-
$return .= 'Suhosin: ' . ( extension_loaded( 'suhosin' ) ? 'Installed' : 'Not Installed' ) . "\n";
|
680 |
-
|
681 |
-
// Session stuff
|
682 |
-
$return .= "\n" . '-- Session Configuration' . "\n\n";
|
683 |
-
$return .= 'Session: ' . ( isset( $_SESSION ) ? 'Enabled' : 'Disabled' ) . "\n";
|
684 |
-
|
685 |
-
// The rest of this is only relevant is session is enabled.
|
686 |
-
if ( isset( $_SESSION ) ) {
|
687 |
-
$return .= 'Session Name: ' . esc_html( ini_get( 'session.name' ) ) . "\n";
|
688 |
-
$return .= 'Cookie Path: ' . esc_html( ini_get( 'session.cookie_path' ) ) . "\n";
|
689 |
-
$return .= 'Save Path: ' . esc_html( ini_get( 'session.save_path' ) ) . "\n";
|
690 |
-
$return .= 'Use Cookies: ' . ( ini_get( 'session.use_cookies' ) ? 'On' : 'Off' ) . "\n";
|
691 |
-
$return .= 'Use Only Cookies: ' . ( ini_get( 'session.use_only_cookies' ) ? 'On' : 'Off' ) . "\n";
|
692 |
-
}
|
693 |
-
|
694 |
-
$return .= "\n" . '### End System Info ###';
|
695 |
-
|
696 |
-
return $return;
|
697 |
-
}
|
698 |
-
}
|
699 |
-
new WPForms_Settings;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
lite/wpforms-lite.php
CHANGED
@@ -34,10 +34,7 @@ class WPForms_Lite {
|
|
34 |
*/
|
35 |
private function includes() {
|
36 |
|
37 |
-
|
38 |
-
require_once WPFORMS_PLUGIN_DIR . 'lite/includes/admin/class-settings.php';
|
39 |
-
require_once WPFORMS_PLUGIN_DIR . 'lite/includes/admin/class-review.php';
|
40 |
-
}
|
41 |
}
|
42 |
|
43 |
/**
|
@@ -64,7 +61,7 @@ class WPForms_Lite {
|
|
64 |
_e( 'Notifications', 'wpforms' );
|
65 |
echo '</div>';
|
66 |
|
67 |
-
echo '<p class="wpforms-alert wpforms-alert-info">Want multiple notifications with smart conditional logic?<br><a href="' .
|
68 |
|
69 |
wpforms_panel_field(
|
70 |
'select',
|
@@ -269,7 +266,7 @@ class WPForms_Lite {
|
|
269 |
)
|
270 |
);
|
271 |
?>
|
272 |
-
<div class="wpforms-setup-title">Unlock Pre-Made Form Templates <a href="<?php echo
|
273 |
<p class="wpforms-setup-desc">While WPForms Lite allows you to create any type of form, you can speed up the process by unlocking our other pre-built form templates among other features, so you never have to start from scratch again...</p>
|
274 |
<div class="wpforms-setup-templates wpforms-clear" style="opacity:0.5;">
|
275 |
<?php
|
@@ -439,7 +436,7 @@ class WPForms_Lite {
|
|
439 |
'upgrade_title' => __( 'is a PRO Feature', 'wpforms' ),
|
440 |
'upgrade_message' => __( 'We\'re sorry, %name% is not available on your plan.<br><br>Please upgrade to the PRO plan to unlock all these awesome features.', 'wpforms' ),
|
441 |
'upgrade_button' => __( 'Upgrade to PRO', 'wpforms' ),
|
442 |
-
'upgrade_url' =>
|
443 |
)
|
444 |
);
|
445 |
}
|
@@ -496,29 +493,326 @@ class WPForms_Lite {
|
|
496 |
*/
|
497 |
public function entries_page() {
|
498 |
|
499 |
-
if ( !isset( $_GET['page'] ) || 'wpforms-entries'
|
500 |
return;
|
501 |
}
|
502 |
?>
|
503 |
-
|
504 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
505 |
<h1 class="page-title">Entries</h1>
|
506 |
-
<div class="
|
507 |
-
<
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
508 |
</div>
|
509 |
-
|
510 |
-
<h3>Want to be able to view and manage all your form entries right from your WordPress dashboard?</h3>
|
511 |
-
|
512 |
-
<p>Once you upgrade to the Pro version of WPForms, all future form entries will be stored in your WordPress database and displayed right here.</p>
|
513 |
-
|
514 |
-
<p>You’ll be able to easily sort entries by form, favorite your leads, mark entries as read, and even delete the ones you don’t want.</p>
|
515 |
-
|
516 |
-
<p>With WPForms Pro, all entries can be exported to CSV files (Excel) as well.</p>
|
517 |
-
|
518 |
-
<p>To unlock the full power of WPForms and start saving your entries here, click here to upgrade:</p>
|
519 |
-
|
520 |
-
<p><a href="<?php echo $this->upgrade_link(); ?>" class="button button-primary" target="_blank" rel="noopener">Upgrade Now</a></p>
|
521 |
</div>
|
|
|
522 |
<?php
|
523 |
}
|
524 |
|
@@ -529,21 +823,17 @@ class WPForms_Lite {
|
|
529 |
*/
|
530 |
public function addon_page_enqueues() {
|
531 |
|
532 |
-
if ( !isset( $_GET['page'] ) || $_GET['page']
|
533 |
return;
|
|
|
534 |
|
535 |
-
//
|
536 |
-
|
537 |
-
'
|
538 |
-
WPFORMS_PLUGIN_URL . 'assets/
|
539 |
-
|
540 |
-
'
|
541 |
-
|
542 |
-
wp_enqueue_style(
|
543 |
-
'wpforms-addons',
|
544 |
-
WPFORMS_PLUGIN_URL . 'assets/css/admin-addons.css',
|
545 |
-
null,
|
546 |
-
WPFORMS_VERSION
|
547 |
);
|
548 |
}
|
549 |
|
@@ -554,11 +844,11 @@ class WPForms_Lite {
|
|
554 |
*/
|
555 |
public function addons_page() {
|
556 |
|
557 |
-
if ( !isset( $_GET['page'] ) || 'wpforms-addons'
|
558 |
return;
|
559 |
}
|
560 |
|
561 |
-
$upgrade =
|
562 |
$addons = array(
|
563 |
array(
|
564 |
'name' => 'Aweber',
|
@@ -627,24 +917,31 @@ class WPForms_Lite {
|
|
627 |
),
|
628 |
)
|
629 |
?>
|
630 |
-
<div id="wpforms-addons" class="wrap">
|
631 |
-
<h1 class="page-title">Addons</h1>
|
632 |
-
<div class="notice notice-info
|
633 |
<p><strong>Form Addons are a PRO feature.</strong></p>
|
634 |
<p>Please upgrade to the PRO plan to unlock them and more awesome features.</p>
|
635 |
-
<p><a href="
|
636 |
</div>
|
637 |
-
|
638 |
-
|
639 |
-
|
640 |
-
|
641 |
-
|
642 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
643 |
</div>
|
644 |
-
<div class="wpforms-addon-action"><a href="<?php echo $upgrade; ?>" target="_blank" rel="noopener">Upgrade Now</a></div>
|
645 |
</div>
|
646 |
-
<?php endforeach; ?>
|
647 |
-
<div style="clear:both"></div>
|
648 |
</div>
|
649 |
<?php
|
650 |
}
|
34 |
*/
|
35 |
private function includes() {
|
36 |
|
37 |
+
// Bliss.
|
|
|
|
|
|
|
38 |
}
|
39 |
|
40 |
/**
|
61 |
_e( 'Notifications', 'wpforms' );
|
62 |
echo '</div>';
|
63 |
|
64 |
+
echo '<p class="wpforms-alert wpforms-alert-info">Want multiple notifications with smart conditional logic?<br><a href="' . wpforms_admin_upgrade_link() . 'target="_blank" rel="noopener"><strong>Upgrade to PRO</strong></a> to unlock it and more awesome features.</p>';
|
65 |
|
66 |
wpforms_panel_field(
|
67 |
'select',
|
266 |
)
|
267 |
);
|
268 |
?>
|
269 |
+
<div class="wpforms-setup-title">Unlock Pre-Made Form Templates <a href="<?php echo wpforms_admin_upgrade_link(); ?>" target="_blank" rel="noopener" class="btn-green" style="text-transform:uppercase;font-size:13px;font-weight:700;padding:5px 10px;vertical-align:text-bottom;">Upgrade</a></div>
|
270 |
<p class="wpforms-setup-desc">While WPForms Lite allows you to create any type of form, you can speed up the process by unlocking our other pre-built form templates among other features, so you never have to start from scratch again...</p>
|
271 |
<div class="wpforms-setup-templates wpforms-clear" style="opacity:0.5;">
|
272 |
<?php
|
436 |
'upgrade_title' => __( 'is a PRO Feature', 'wpforms' ),
|
437 |
'upgrade_message' => __( 'We\'re sorry, %name% is not available on your plan.<br><br>Please upgrade to the PRO plan to unlock all these awesome features.', 'wpforms' ),
|
438 |
'upgrade_button' => __( 'Upgrade to PRO', 'wpforms' ),
|
439 |
+
'upgrade_url' => wpforms_admin_upgrade_link()
|
440 |
)
|
441 |
);
|
442 |
}
|
493 |
*/
|
494 |
public function entries_page() {
|
495 |
|
496 |
+
if ( ! isset( $_GET['page'] ) || 'wpforms-entries' !== $_GET['page'] ) {
|
497 |
return;
|
498 |
}
|
499 |
?>
|
500 |
+
<style type="text/css">
|
501 |
+
.wpforms-admin-content {
|
502 |
+
-webkit-filter: blur(3px);
|
503 |
+
-moz-filter: blur(3px);
|
504 |
+
-ms-filter: blur(3px);
|
505 |
+
-o-filter: blur(3px);
|
506 |
+
filter: blur(3px);
|
507 |
+
}
|
508 |
+
.wpforms-admin-content a {
|
509 |
+
pointer-events: none;
|
510 |
+
cursor: default;
|
511 |
+
}
|
512 |
+
.ie-detected {
|
513 |
+
position: absolute;
|
514 |
+
top:0;
|
515 |
+
width: 100%;
|
516 |
+
height: 100%;
|
517 |
+
left: 0;
|
518 |
+
background-color: #f1f1f1;
|
519 |
+
opacity: 0.65;
|
520 |
+
z-index: 10;
|
521 |
+
}
|
522 |
+
.wpforms-admin-content,
|
523 |
+
.wpforms-admin-content-wrap {
|
524 |
+
position: relative;
|
525 |
+
}
|
526 |
+
.entries-modal {
|
527 |
+
text-align: center;
|
528 |
+
width: 730px;
|
529 |
+
margin: 0 auto;
|
530 |
+
box-shadow: 0 0 60px 30px rgba(0,0,0,0.15);
|
531 |
+
border-radius: 3px;
|
532 |
+
position: absolute;
|
533 |
+
top: 75px;
|
534 |
+
left: 50%;
|
535 |
+
margin-left: -365px;
|
536 |
+
z-index: 100;
|
537 |
+
}
|
538 |
+
.entries-modal *,
|
539 |
+
.entries-modal *::before,
|
540 |
+
.entries-modal *::after {
|
541 |
+
-webkit-box-sizing: border-box;
|
542 |
+
-moz-box-sizing: border-box;
|
543 |
+
box-sizing: border-box;
|
544 |
+
}
|
545 |
+
.entries-modal h2 {
|
546 |
+
font-size: 20px;
|
547 |
+
margin: 0 0 16px 0;
|
548 |
+
padding: 0;
|
549 |
+
}
|
550 |
+
.entries-modal p {
|
551 |
+
font-size: 16px;
|
552 |
+
color: #666;
|
553 |
+
margin: 0 0 30px 0;
|
554 |
+
padding: 0;
|
555 |
+
}
|
556 |
+
.entries-modal-content {
|
557 |
+
background-color: #fff;
|
558 |
+
border-radius: 3px 3px 0 0;
|
559 |
+
padding: 40px;
|
560 |
+
}
|
561 |
+
.entries-modal ul {
|
562 |
+
float: left;
|
563 |
+
width: 50%;
|
564 |
+
margin: 0;
|
565 |
+
padding: 0 0 0 30px;
|
566 |
+
text-align: left;
|
567 |
+
}
|
568 |
+
.entries-modal li {
|
569 |
+
color: #666;
|
570 |
+
font-size: 16px;
|
571 |
+
padding: 6px 0;
|
572 |
+
}
|
573 |
+
.entries-modal li .fa {
|
574 |
+
color: #2a9b39;
|
575 |
+
margin: 0 8px 0 0;
|
576 |
+
}
|
577 |
+
.entries-modal-button {
|
578 |
+
border-radius: 0 0 3px 3px;
|
579 |
+
padding: 30px;
|
580 |
+
background: #f5f5f5;
|
581 |
+
text-align: center;
|
582 |
+
}
|
583 |
+
</style>
|
584 |
+
<script type="text/javascript">
|
585 |
+
jQuery(function($){
|
586 |
+
var userAgent = window.navigator.userAgent,
|
587 |
+
onlyIEorEdge = /msie\s|trident\/|edge\//i.test(userAgent) && !!( document.uniqueID || window.MSInputMethodContext),
|
588 |
+
checkVersion = (onlyIEorEdge && +(/(edge\/|rv:|msie\s)([\d.]+)/i.exec(userAgent)[2])) || NaN;
|
589 |
+
if ( !isNaN(checkVersion) ) {
|
590 |
+
$('#ie-wrap').addClass('ie-detected');
|
591 |
+
}
|
592 |
+
})
|
593 |
+
</script>
|
594 |
+
<div id="wpforms-entries-list" class="wrap wpforms-admin-wrap">
|
595 |
<h1 class="page-title">Entries</h1>
|
596 |
+
<div class="wpforms-admin-content-wrap">
|
597 |
+
<div class="entries-modal">
|
598 |
+
<div class="entries-modal-content">
|
599 |
+
<h2>View and Manage All Your Form Entries inside WordPress</h2>
|
600 |
+
<p>Once you upgrade to WPForms Pro, all future form entries will be stored in your WordPress database and displayed on this Entries screen.</p>
|
601 |
+
<div class="wpforms-clear">
|
602 |
+
<ul class="left">
|
603 |
+
<li><i class="fa fa-check" aria-hidden="true"></i> View Entries in Dashboard</li>
|
604 |
+
<li><i class="fa fa-check" aria-hidden="true"></i> Export Entries in a CSV File</li>
|
605 |
+
<li><i class="fa fa-check" aria-hidden="true"></i> Add Notes / Comments</li>
|
606 |
+
<li><i class="fa fa-check" aria-hidden="true"></i> Save Favorite Entries</li>
|
607 |
+
</ul>
|
608 |
+
<ul class="right">
|
609 |
+
<li><i class="fa fa-check" aria-hidden="true"></i> Mark Read / Unread</li>
|
610 |
+
<li><i class="fa fa-check" aria-hidden="true"></i> Print Entries</li>
|
611 |
+
<li><i class="fa fa-check" aria-hidden="true"></i> Resend Notifications</li>
|
612 |
+
<li><i class="fa fa-check" aria-hidden="true"></i> See Geolocation Data</li>
|
613 |
+
</ul>
|
614 |
+
</div>
|
615 |
+
</div>
|
616 |
+
<div class="entries-modal-button">
|
617 |
+
<a href="<?php echo wpforms_admin_upgrade_link(); ?>" target="_blank" rel="noopener noreferrer" class="wpforms-btn wpforms-btn-lg wpforms-btn-orange">Upgrade to WPForms Pro Now</a>
|
618 |
+
</div>
|
619 |
+
</div>
|
620 |
+
<div class="wpforms-admin-content">
|
621 |
+
<div id="ie-wrap"></div>
|
622 |
+
<div class="form-details wpforms-clear">
|
623 |
+
<span class="form-details-sub">Select Form</span>
|
624 |
+
<h3 class="form-details-title">
|
625 |
+
Contact Us
|
626 |
+
<div class="form-selector">
|
627 |
+
<a href="#" title="Open form selector" class="toggle dashicons dashicons-arrow-down-alt2"></a>
|
628 |
+
<div class="form-list" style="display: none;">
|
629 |
+
<ul><li></li></ul>
|
630 |
+
</div>
|
631 |
+
</div>
|
632 |
+
</h3>
|
633 |
+
<div class="form-details-actions">
|
634 |
+
<a href="#" class="form-details-actions-edit"><span class="dashicons dashicons-edit"></span> Edit This Form</a>
|
635 |
+
<a href="#" class="form-details-actions-preview" target="_blank" rel="noopener"><span class="dashicons dashicons-visibility"></span> Preview Form</a>
|
636 |
+
<a href="#" class="form-details-actions-export"><span class="dashicons dashicons-migrate"></span> Download Export (CSV)</a>
|
637 |
+
<a href="#" class="form-details-actions-read"><span class="dashicons dashicons-marker"></span> Mark All Read</a>
|
638 |
+
</div>
|
639 |
+
</div>
|
640 |
+
<form id="wpforms-entries-table">
|
641 |
+
<ul class="subsubsub">
|
642 |
+
<li class="all"><a href="#" class="current">All <span class="count">(<span class="total-num">10</span>)</span></a> |</li>
|
643 |
+
<li class="unread"><a href="#">Unread <span class="count">(<span class="unread-num">10</span>)</span></a> |</li>
|
644 |
+
<li class="starred"><a href="#">Starred <span class="count">(<span class="starred-num">0</span>)</span></a></li>
|
645 |
+
</ul>
|
646 |
+
<div class="tablenav top">
|
647 |
+
<div class="alignleft actions bulkactions">
|
648 |
+
<label for="bulk-action-selector-top" class="screen-reader-text">Select bulk action</label>
|
649 |
+
<select name="action" id="bulk-action-selector-top">
|
650 |
+
<option value="-1">Bulk Actions</option>
|
651 |
+
</select>
|
652 |
+
<input type="submit" id="doaction" class="button action" value="Apply">
|
653 |
+
</div>
|
654 |
+
<div class="tablenav-pages one-page">
|
655 |
+
<span class="displaying-num">10 items</span>
|
656 |
+
<span class="pagination-links"><span class="tablenav-pages-navspan" aria-hidden="true">«</span>
|
657 |
+
<span class="tablenav-pages-navspan" aria-hidden="true">‹</span>
|
658 |
+
<span class="paging-input"><label for="current-page-selector" class="screen-reader-text">Current Page</label><input class="current-page" id="current-page-selector" type="text" name="paged" value="1" size="1" aria-describedby="table-paging"><span class="tablenav-paging-text"> of <span class="total-pages">1</span></span>
|
659 |
+
</span>
|
660 |
+
<span class="tablenav-pages-navspan" aria-hidden="true">›</span>
|
661 |
+
<span class="tablenav-pages-navspan" aria-hidden="true">»</span></span>
|
662 |
+
</div>
|
663 |
+
<br class="clear">
|
664 |
+
</div>
|
665 |
+
<table class="wp-list-table widefat fixed striped entries">
|
666 |
+
<thead>
|
667 |
+
<tr>
|
668 |
+
<td id="cb" class="manage-column column-cb check-column"><label class="screen-reader-text" for="cb-select-all-1">Select All</label><input id="cb-select-all-1" type="checkbox"></td>
|
669 |
+
<th scope="col" id="indicators" class="manage-column column-indicators column-primary"></th>
|
670 |
+
<th scope="col" id="wpforms_field_0" class="manage-column column-wpforms_field_0">Name</th>
|
671 |
+
<th scope="col" id="wpforms_field_1" class="manage-column column-wpforms_field_1">E-mail</th>
|
672 |
+
<th scope="col" id="wpforms_field_2" class="manage-column column-wpforms_field_2">Comment or Message</th>
|
673 |
+
<th scope="col" id="date" class="manage-column column-date sortable desc"><a href="#"><span>Date</span><span class="sorting-indicator"></span></a></th>
|
674 |
+
<th scope="col" id="actions" class="manage-column column-actions">Actions</th>
|
675 |
+
</tr>
|
676 |
+
</thead>
|
677 |
+
<tbody id="the-list" data-wp-lists="list:entry">
|
678 |
+
<tr>
|
679 |
+
<th scope="row" class="check-column"><input type="checkbox" name="entry_id[]" value="1088"></th>
|
680 |
+
<td class="indicators column-indicators has-row-actions column-primary" data-colname=""><a href="#" class="indicator-star star" data-id="1088" title="Star entry"><span class="dashicons dashicons-star-filled"></span></a><a href="#" class="indicator-read read" data-id="1088" title="Mark entry read"><span class="dashicons dashicons-marker"></span></a>
|
681 |
+
<button
|
682 |
+
type="button" class="toggle-row"><span class="screen-reader-text">Show more details</span></button>
|
683 |
+
</td>
|
684 |
+
<td class="wpforms_field_0 column-wpforms_field_0" data-colname="Name">David Wells</td>
|
685 |
+
<td class="wpforms_field_1 column-wpforms_field_1" data-colname="E-mail">DavidMWells@example.com</td>
|
686 |
+
<td class="wpforms_field_2 column-wpforms_field_2" data-colname="Comment or Message">Vivamus sit amet dolor arcu. Praesent fermentum semper justo, nec scelerisq…</td>
|
687 |
+
<td class="date column-date" data-colname="Date">July 27, 2017</td>
|
688 |
+
<td class="actions column-actions" data-colname="Actions"><a href="#" title="View Form Entry" class="view">View</a> <span class="sep">|</span> <a href="#" title="Delete Form Entry" class="delete">Delete</a></td>
|
689 |
+
</tr>
|
690 |
+
<tr>
|
691 |
+
<th scope="row" class="check-column"><input type="checkbox" name="entry_id[]" value="1087"></th>
|
692 |
+
<td class="indicators column-indicators has-row-actions column-primary" data-colname=""><a href="#" class="indicator-star star" data-id="1087" title="Star entry"><span class="dashicons dashicons-star-filled"></span></a><a href="#" class="indicator-read read" data-id="1087" title="Mark entry read"><span class="dashicons dashicons-marker"></span></a>
|
693 |
+
<button
|
694 |
+
type="button" class="toggle-row"><span class="screen-reader-text">Show more details</span></button>
|
695 |
+
</td>
|
696 |
+
<td class="wpforms_field_0 column-wpforms_field_0" data-colname="Name">Jennifer Selzer</td>
|
697 |
+
<td class="wpforms_field_1 column-wpforms_field_1" data-colname="E-mail">JenniferLSelzer@example.com</td>
|
698 |
+
<td class="wpforms_field_2 column-wpforms_field_2" data-colname="Comment or Message">Maecenas sollicitudin felis et justo elementum, et lobortis justo vulputate…</td>
|
699 |
+
<td class="date column-date" data-colname="Date">July 27, 2017</td>
|
700 |
+
<td class="actions column-actions" data-colname="Actions"><a href="#" title="View Form Entry" class="view">View</a> <span class="sep">|</span> <a href="#" title="Delete Form Entry" class="delete">Delete</a></td>
|
701 |
+
</tr>
|
702 |
+
<tr>
|
703 |
+
<th scope="row" class="check-column"><input type="checkbox" name="entry_id[]" value="1086"></th>
|
704 |
+
<td class="indicators column-indicators has-row-actions column-primary" data-colname=""><a href="#" class="indicator-star star" data-id="1086" title="Star entry"><span class="dashicons dashicons-star-filled"></span></a><a href="#" class="indicator-read read" data-id="1086" title="Mark entry read"><span class="dashicons dashicons-marker"></span></a>
|
705 |
+
<button
|
706 |
+
type="button" class="toggle-row"><span class="screen-reader-text">Show more details</span></button>
|
707 |
+
</td>
|
708 |
+
<td class="wpforms_field_0 column-wpforms_field_0" data-colname="Name">Philip Norton</td>
|
709 |
+
<td class="wpforms_field_1 column-wpforms_field_1" data-colname="E-mail">PhilipTNorton@example.com</td>
|
710 |
+
<td class="wpforms_field_2 column-wpforms_field_2" data-colname="Comment or Message">Etiam cursus orci tellus, ut vehicula odio mattis sit amet. Curabitur eros …</td>
|
711 |
+
<td class="date column-date" data-colname="Date">July 27, 2017</td>
|
712 |
+
<td class="actions column-actions" data-colname="Actions"><a href="#" title="View Form Entry" class="view">View</a> <span class="sep">|</span> <a href="#" title="Delete Form Entry" class="delete">Delete</a></td>
|
713 |
+
</tr>
|
714 |
+
<tr>
|
715 |
+
<th scope="row" class="check-column"><input type="checkbox" name="entry_id[]" value="1085"></th>
|
716 |
+
<td class="indicators column-indicators has-row-actions column-primary" data-colname=""><a href="#" class="indicator-star star" data-id="1085" title="Star entry"><span class="dashicons dashicons-star-filled"></span></a><a href="#" class="indicator-read read" data-id="1085" title="Mark entry read"><span class="dashicons dashicons-marker"></span></a>
|
717 |
+
<button
|
718 |
+
type="button" class="toggle-row"><span class="screen-reader-text">Show more details</span></button>
|
719 |
+
</td>
|
720 |
+
<td class="wpforms_field_0 column-wpforms_field_0" data-colname="Name">Kevin Gregory</td>
|
721 |
+
<td class="wpforms_field_1 column-wpforms_field_1" data-colname="E-mail">KevinJGregory@example.com</td>
|
722 |
+
<td class="wpforms_field_2 column-wpforms_field_2" data-colname="Comment or Message">Cras vel orci congue, tincidunt eros vitae, consectetur risus. Proin enim m…</td>
|
723 |
+
<td class="date column-date" data-colname="Date">July 27, 2017</td>
|
724 |
+
<td class="actions column-actions" data-colname="Actions"><a href="#" title="View Form Entry" class="view">View</a> <span class="sep">|</span> <a href="#" title="Delete Form Entry" class="delete">Delete</a></td>
|
725 |
+
</tr>
|
726 |
+
<tr>
|
727 |
+
<th scope="row" class="check-column"><input type="checkbox" name="entry_id[]" value="1084"></th>
|
728 |
+
<td class="indicators column-indicators has-row-actions column-primary" data-colname=""><a href="#" class="indicator-star star" data-id="1084" title="Star entry"><span class="dashicons dashicons-star-filled"></span></a><a href="#" class="indicator-read read" data-id="1084" title="Mark entry read"><span class="dashicons dashicons-marker"></span></a>
|
729 |
+
<button
|
730 |
+
type="button" class="toggle-row"><span class="screen-reader-text">Show more details</span></button>
|
731 |
+
</td>
|
732 |
+
<td class="wpforms_field_0 column-wpforms_field_0" data-colname="Name">John Heiden</td>
|
733 |
+
<td class="wpforms_field_1 column-wpforms_field_1" data-colname="E-mail">JohnCHeiden@example.com</td>
|
734 |
+
<td class="wpforms_field_2 column-wpforms_field_2" data-colname="Comment or Message">Fusce consequat dui ut orci tempus cursus. Vivamus ut neque id ipsum tempor…</td>
|
735 |
+
<td class="date column-date" data-colname="Date">July 27, 2017</td>
|
736 |
+
<td class="actions column-actions" data-colname="Actions"><a href="#" title="View Form Entry" class="view">View</a> <span class="sep">|</span> <a href="#" title="Delete Form Entry" class="delete">Delete</a></td>
|
737 |
+
</tr>
|
738 |
+
<tr>
|
739 |
+
<th scope="row" class="check-column"><input type="checkbox" name="entry_id[]" value="1083"></th>
|
740 |
+
<td class="indicators column-indicators has-row-actions column-primary" data-colname=""><a href="#" class="indicator-star star" data-id="1083" title="Star entry"><span class="dashicons dashicons-star-filled"></span></a><a href="#" class="indicator-read read" data-id="1083" title="Mark entry read"><span class="dashicons dashicons-marker"></span></a>
|
741 |
+
<button
|
742 |
+
type="button" class="toggle-row"><span class="screen-reader-text">Show more details</span></button>
|
743 |
+
</td>
|
744 |
+
<td class="wpforms_field_0 column-wpforms_field_0" data-colname="Name">Laura Shuler</td>
|
745 |
+
<td class="wpforms_field_1 column-wpforms_field_1" data-colname="E-mail">LauraDShuler@example.com</td>
|
746 |
+
<td class="wpforms_field_2 column-wpforms_field_2" data-colname="Comment or Message">In ac finibus erat. Curabitur sit amet ante nec tellus commodo commodo non …</td>
|
747 |
+
<td class="date column-date" data-colname="Date">July 27, 2017</td>
|
748 |
+
<td class="actions column-actions" data-colname="Actions"><a href="#" title="View Form Entry" class="view">View</a> <span class="sep">|</span> <a href="#" title="Delete Form Entry" class="delete">Delete</a></td>
|
749 |
+
</tr>
|
750 |
+
<tr>
|
751 |
+
<th scope="row" class="check-column"><input type="checkbox" name="entry_id[]" value="1082"></th>
|
752 |
+
<td class="indicators column-indicators has-row-actions column-primary" data-colname=""><a href="#" class="indicator-star star" data-id="1082" title="Star entry"><span class="dashicons dashicons-star-filled"></span></a><a href="#" class="indicator-read read" data-id="1082" title="Mark entry read"><span class="dashicons dashicons-marker"></span></a>
|
753 |
+
<button
|
754 |
+
type="button" class="toggle-row"><span class="screen-reader-text">Show more details</span></button>
|
755 |
+
</td>
|
756 |
+
<td class="wpforms_field_0 column-wpforms_field_0" data-colname="Name">Walter Sullivan</td>
|
757 |
+
<td class="wpforms_field_1 column-wpforms_field_1" data-colname="E-mail">WalterPSullivan@example.com</td>
|
758 |
+
<td class="wpforms_field_2 column-wpforms_field_2" data-colname="Comment or Message">Phasellus semper magna leo, ut porta nibh pretium sed. Interdum et malesuad…</td>
|
759 |
+
<td class="date column-date" data-colname="Date">July 27, 2017</td>
|
760 |
+
<td class="actions column-actions" data-colname="Actions"><a href="#" title="View Form Entry" class="view">View</a> <span class="sep">|</span> <a href="#" title="Delete Form Entry" class="delete">Delete</a></td>
|
761 |
+
</tr>
|
762 |
+
<tr>
|
763 |
+
<th scope="row" class="check-column"><input type="checkbox" name="entry_id[]" value="1081"></th>
|
764 |
+
<td class="indicators column-indicators has-row-actions column-primary" data-colname=""><a href="#" class="indicator-star star" data-id="1081" title="Star entry"><span class="dashicons dashicons-star-filled"></span></a><a href="#" class="indicator-read read" data-id="1081" title="Mark entry read"><span class="dashicons dashicons-marker"></span></a>
|
765 |
+
<button
|
766 |
+
type="button" class="toggle-row"><span class="screen-reader-text">Show more details</span></button>
|
767 |
+
</td>
|
768 |
+
<td class="wpforms_field_0 column-wpforms_field_0" data-colname="Name">Gary Austin</td>
|
769 |
+
<td class="wpforms_field_1 column-wpforms_field_1" data-colname="E-mail">GaryJAustin@example.com</td>
|
770 |
+
<td class="wpforms_field_2 column-wpforms_field_2" data-colname="Comment or Message">Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec sit amet ero…</td>
|
771 |
+
<td class="date column-date" data-colname="Date">July 27, 2017</td>
|
772 |
+
<td class="actions column-actions" data-colname="Actions"><a href="#" title="View Form Entry" class="view">View</a> <span class="sep">|</span> <a href="#" title="Delete Form Entry" class="delete">Delete</a></td>
|
773 |
+
</tr>
|
774 |
+
<tr>
|
775 |
+
<th scope="row" class="check-column"><input type="checkbox" name="entry_id[]" value="1080"></th>
|
776 |
+
<td class="indicators column-indicators has-row-actions column-primary" data-colname=""><a href="#" class="indicator-star star" data-id="1080" title="Star entry"><span class="dashicons dashicons-star-filled"></span></a><a href="#" class="indicator-read read" data-id="1080" title="Mark entry read"><span class="dashicons dashicons-marker"></span></a>
|
777 |
+
<button
|
778 |
+
type="button" class="toggle-row"><span class="screen-reader-text">Show more details</span></button>
|
779 |
+
</td>
|
780 |
+
<td class="wpforms_field_0 column-wpforms_field_0" data-colname="Name">Mark Frahm</td>
|
781 |
+
<td class="wpforms_field_1 column-wpforms_field_1" data-colname="E-mail">MarkTFrahm@example.com</td>
|
782 |
+
<td class="wpforms_field_2 column-wpforms_field_2" data-colname="Comment or Message">Proin euismod tellus quis tortor bibendum, a pulvinar libero fringilla. Cur…</td>
|
783 |
+
<td class="date column-date" data-colname="Date">July 27, 2017</td>
|
784 |
+
<td class="actions column-actions" data-colname="Actions"><a href="#" title="View Form Entry" class="view">View</a> <span class="sep">|</span> <a href="#" title="Delete Form Entry" class="delete">Delete</a></td>
|
785 |
+
</tr>
|
786 |
+
<tr>
|
787 |
+
<th scope="row" class="check-column"><input type="checkbox" name="entry_id[]" value="1079"></th>
|
788 |
+
<td class="indicators column-indicators has-row-actions column-primary" data-colname=""><a href="#" class="indicator-star star" data-id="1079" title="Star entry"><span class="dashicons dashicons-star-filled"></span></a><a href="#" class="indicator-read read" data-id="1079" title="Mark entry read"><span class="dashicons dashicons-marker"></span></a>
|
789 |
+
<button
|
790 |
+
type="button" class="toggle-row"><span class="screen-reader-text">Show more details</span></button>
|
791 |
+
</td>
|
792 |
+
<td class="wpforms_field_0 column-wpforms_field_0" data-colname="Name">Linda Reynolds</td>
|
793 |
+
<td class="wpforms_field_1 column-wpforms_field_1" data-colname="E-mail">LindaJReynolds@example.com</td>
|
794 |
+
<td class="wpforms_field_2 column-wpforms_field_2" data-colname="Comment or Message">Cras sodales sagittis maximus. Nunc vestibulum orci quis orci pulvinar vulp…</td>
|
795 |
+
<td class="date column-date" data-colname="Date">July 27, 2017</td>
|
796 |
+
<td class="actions column-actions" data-colname="Actions"><a href="#" title="View Form Entry" class="view">View</a> <span class="sep">|</span> <a href="#" title="Delete Form Entry" class="delete">Delete</a></td>
|
797 |
+
</tr>
|
798 |
+
</tbody>
|
799 |
+
<tfoot>
|
800 |
+
<tr>
|
801 |
+
<td class="manage-column column-cb check-column"><label class="screen-reader-text" for="cb-select-all-2">Select All</label><input id="cb-select-all-2" type="checkbox"></td>
|
802 |
+
<th scope="col" class="manage-column column-indicators column-primary"></th>
|
803 |
+
<th scope="col" class="manage-column column-wpforms_field_0">Name</th>
|
804 |
+
<th scope="col" class="manage-column column-wpforms_field_1">E-mail</th>
|
805 |
+
<th scope="col" class="manage-column column-wpforms_field_2">Comment or Message</th>
|
806 |
+
<th scope="col" class="manage-column column-date sortable desc"><a href="#"><span>Date</span><span class="sorting-indicator"></span></a></th>
|
807 |
+
<th scope="col" class="manage-column column-actions">Actions</th>
|
808 |
+
</tr>
|
809 |
+
</tfoot>
|
810 |
+
</table>
|
811 |
+
</form>
|
812 |
+
</div>
|
813 |
</div>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
814 |
</div>
|
815 |
+
<div class="clear"></div>
|
816 |
<?php
|
817 |
}
|
818 |
|
823 |
*/
|
824 |
public function addon_page_enqueues() {
|
825 |
|
826 |
+
if ( ! isset( $_GET['page'] ) || 'wpforms-addons' !== $_GET['page'] ) {
|
827 |
return;
|
828 |
+
}
|
829 |
|
830 |
+
// JS
|
831 |
+
wp_enqueue_script(
|
832 |
+
'jquery-matchheight',
|
833 |
+
WPFORMS_PLUGIN_URL . 'assets/js/jQuery.matchHeight-min.js',
|
834 |
+
array( 'jquery' ),
|
835 |
+
'0.7.0',
|
836 |
+
false
|
|
|
|
|
|
|
|
|
|
|
837 |
);
|
838 |
}
|
839 |
|
844 |
*/
|
845 |
public function addons_page() {
|
846 |
|
847 |
+
if ( ! isset( $_GET['page'] ) || 'wpforms-addons' !== $_GET['page'] ) {
|
848 |
return;
|
849 |
}
|
850 |
|
851 |
+
$upgrade = wpforms_admin_upgrade_link();
|
852 |
$addons = array(
|
853 |
array(
|
854 |
'name' => 'Aweber',
|
917 |
),
|
918 |
)
|
919 |
?>
|
920 |
+
<div id="wpforms-admin-addons" class="wrap wpforms-admin-wrap">
|
921 |
+
<h1 class="page-title">WPForms Addons</h1>
|
922 |
+
<div class="notice notice-info" style="display: block;">
|
923 |
<p><strong>Form Addons are a PRO feature.</strong></p>
|
924 |
<p>Please upgrade to the PRO plan to unlock them and more awesome features.</p>
|
925 |
+
<p><a href="https://wpforms.com/lite-upgrade/?utm_source=WordPress&utm_medium=link&utm_campaign=liteplugin" class="wpforms-btn wpforms-btn-orange wpforms-btn-md">Upgrade Now</a></p>
|
926 |
</div>
|
927 |
+
<div class="wpforms-admin-content">
|
928 |
+
<div class="addons-container">
|
929 |
+
<?php foreach( $addons as $addon ) : ?>
|
930 |
+
<div class="addon-container">
|
931 |
+
<div class="addon-item">
|
932 |
+
<div class="details wpforms-clear" style=""><img src="https://wpforms.com/images/<?php echo $addon['icon']; ?>">
|
933 |
+
<h5><?php echo $addon['name']; ?> Addon</h5>
|
934 |
+
<p><?php echo $addon['desc']; ?></p>
|
935 |
+
</div>
|
936 |
+
<div class="actions wpforms-clear">
|
937 |
+
<div class="upgrade-button"><a href="<?php echo $upgrade; ?>" target="_blank" rel="noopener noreferrer" class="wpforms-btn wpforms-btn-light-grey">Upgrade Now</a></div>
|
938 |
+
</div>
|
939 |
+
</div>
|
940 |
+
</div>
|
941 |
+
<?php endforeach; ?>
|
942 |
+
<div style="clear:both;"></div>
|
943 |
</div>
|
|
|
944 |
</div>
|
|
|
|
|
945 |
</div>
|
946 |
<?php
|
947 |
}
|
readme.txt
CHANGED
@@ -44,7 +44,7 @@ Building contact forms in WordPress can be time consuming. Why?
|
|
44 |
|
45 |
Because every other WordPress contact form builder plugin requires you to build your contact form from scratch. The truth is it's often not necessary to create a contact form completely from scratch unless you really want to.
|
46 |
|
47 |
-
Whether you
|
48 |
|
49 |
WPForms comes with <a href="https://wpforms.com/features/form-templates/?utm_source=wprepo&utm_medium=link&utm_campaign=liteversion" rel="friend">pre-built form templates</a> to help you save time. You can add, remove, or re-arrange fields as necessary.
|
50 |
|
@@ -209,6 +209,22 @@ Syed Balkhi
|
|
209 |
|
210 |
== Changelog ==
|
211 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
212 |
= 1.3.8 =
|
213 |
- Changed: Available conditional logic rules/functionality with Providers have been updated
|
214 |
- Changed: Updated form builder modals (jquery-confirm.js)
|
44 |
|
45 |
Because every other WordPress contact form builder plugin requires you to build your contact form from scratch. The truth is it's often not necessary to create a contact form completely from scratch unless you really want to.
|
46 |
|
47 |
+
Whether you're looking to create a simple contact form, request a quote form, donation form, payment order form, or a subscription form, we have a form template for you inside our contact form builder.
|
48 |
|
49 |
WPForms comes with <a href="https://wpforms.com/features/form-templates/?utm_source=wprepo&utm_medium=link&utm_campaign=liteversion" rel="friend">pre-built form templates</a> to help you save time. You can add, remove, or re-arrange fields as necessary.
|
50 |
|
209 |
|
210 |
== Changelog ==
|
211 |
|
212 |
+
= 1.3.9.1 =
|
213 |
+
- Changed: Template Export excludes array items with empty strings
|
214 |
+
- Fixed: Admin notices displaying on plugin Welcome/activation screen
|
215 |
+
- Fixed: WPForms admin pages displaying blank due to conflicts with a few other plugins
|
216 |
+
|
217 |
+
= 1.3.9 =
|
218 |
+
- Added: Complete redesign and refactor of admin area
|
219 |
+
- Added: New Settings API
|
220 |
+
- Added: Entry print preview compact mode
|
221 |
+
- Added: Entry print preview view entry notes
|
222 |
+
- Added: Dynamic field choices nest hierarchical items
|
223 |
+
- Added: Form import/export to Tools sub page
|
224 |
+
- Added: Form template export to Tools sub page
|
225 |
+
- Changed: System Info content to new Tools sub-page
|
226 |
+
- Changed: Shortcode provided in form builder now includes title/description arguments
|
227 |
+
|
228 |
= 1.3.8 =
|
229 |
- Changed: Available conditional logic rules/functionality with Providers have been updated
|
230 |
- Changed: Updated form builder modals (jquery-confirm.js)
|
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.3.
|
9 |
* Text Domain: wpforms
|
10 |
* Domain Path: languages
|
11 |
*
|
@@ -29,11 +29,13 @@
|
|
29 |
* @copyright Copyright (c) 2016, WPForms LLC
|
30 |
*/
|
31 |
|
32 |
-
// Exit if accessed directly
|
33 |
-
if ( ! defined( 'ABSPATH' ) )
|
|
|
|
|
34 |
|
35 |
// Don't allow multiple versions to be active
|
36 |
-
if ( class_exists( 'WPForms' ) )
|
37 |
|
38 |
/**
|
39 |
* Deactivate if WPForms already activated.
|
@@ -41,6 +43,7 @@ if ( class_exists( 'WPForms' ) ) :
|
|
41 |
* @since 1.0.0
|
42 |
*/
|
43 |
function wpforms_deactivate() {
|
|
|
44 |
deactivate_plugins( plugin_basename( __FILE__ ) );
|
45 |
}
|
46 |
add_action( 'admin_init', 'wpforms_deactivate' );
|
@@ -51,268 +54,300 @@ if ( class_exists( 'WPForms' ) ) :
|
|
51 |
* @since 1.0.0
|
52 |
*/
|
53 |
function wpforms_lite_notice() {
|
|
|
54 |
echo '<div class="notice notice-warning"><p>' . __( 'Please deactivate WPForms Lite before activating WPForms', 'wpforms' ) . '</p></div>';
|
55 |
-
|
|
|
56 |
unset( $_GET['activate'] );
|
|
|
57 |
}
|
58 |
add_action( 'admin_notices', 'wpforms_lite_notice' );
|
59 |
|
60 |
-
else
|
61 |
-
|
62 |
-
/**
|
63 |
-
* Main WPForms class.
|
64 |
-
*
|
65 |
-
* @since 1.0.0
|
66 |
-
* @package WPForms
|
67 |
-
*/
|
68 |
-
final class WPForms {
|
69 |
-
|
70 |
-
/**
|
71 |
-
* One is the loneliest number that you'll ever do.
|
72 |
-
*
|
73 |
-
* @since 1.0.0
|
74 |
-
* @var object
|
75 |
-
*/
|
76 |
-
private static $instance;
|
77 |
-
|
78 |
-
/**
|
79 |
-
* Plugin version for enqueueing, etc.
|
80 |
-
*
|
81 |
-
* @since 1.0.0
|
82 |
-
* @var sting
|
83 |
-
*/
|
84 |
-
public $version = '1.3.8';
|
85 |
-
|
86 |
-
/**
|
87 |
-
* The form data handler instance.
|
88 |
-
*
|
89 |
-
* @var object WPForms_Form_Handler
|
90 |
-
* @since 1.0.0
|
91 |
-
*/
|
92 |
-
public $form;
|
93 |
-
|
94 |
-
/**
|
95 |
-
* The entry data handler instance (Pro).
|
96 |
-
*
|
97 |
-
* @var object WPForms_Entry_Handler
|
98 |
-
* @since 1.0.0
|
99 |
-
*/
|
100 |
-
public $entry;
|
101 |
-
|
102 |
-
/**
|
103 |
-
* The entry meta data handler instance (Pro).
|
104 |
-
*
|
105 |
-
* @var object WPForms_Entry_Meta_Handler
|
106 |
-
* @since 1.1.6
|
107 |
-
*/
|
108 |
-
public $entry_meta;
|
109 |
-
|
110 |
-
/**
|
111 |
-
* The front-end instance.
|
112 |
-
*
|
113 |
-
* @var object WPForms_Frontend
|
114 |
-
* @since 1.0.0
|
115 |
-
*/
|
116 |
-
public $frontend;
|
117 |
-
|
118 |
-
/**
|
119 |
-
* The process instance.
|
120 |
-
*
|
121 |
-
* @var object WPForms_Process
|
122 |
-
* @since 1.0.0
|
123 |
-
*/
|
124 |
-
public $process;
|
125 |
|
126 |
/**
|
127 |
-
*
|
128 |
*
|
129 |
-
* @var object WPForms_Smart_Tags
|
130 |
* @since 1.0.0
|
|
|
131 |
*/
|
132 |
-
|
133 |
-
|
134 |
-
|
135 |
-
|
136 |
-
|
137 |
-
|
138 |
-
|
139 |
-
|
140 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
141 |
|
142 |
-
|
143 |
-
|
144 |
-
|
145 |
-
|
146 |
-
|
147 |
-
|
148 |
-
public $preview;
|
149 |
|
150 |
-
|
151 |
-
|
152 |
-
|
153 |
-
|
154 |
-
* @since 1.0.0
|
155 |
-
*/
|
156 |
-
public $license;
|
157 |
|
158 |
-
|
159 |
-
|
160 |
-
|
161 |
-
|
162 |
-
* time. Also prevents needing to define globals all over the place.
|
163 |
-
*
|
164 |
-
* @since 1.0.0
|
165 |
-
* @return WPForms
|
166 |
-
*/
|
167 |
-
public static function instance() {
|
168 |
|
169 |
-
|
|
|
|
|
|
|
170 |
|
171 |
-
|
172 |
-
|
173 |
-
|
174 |
-
|
175 |
-
self::$instance->includes();
|
176 |
|
177 |
-
//
|
178 |
if ( file_exists( WPFORMS_PLUGIN_DIR . 'pro/wpforms-pro.php' ) ) {
|
179 |
-
|
|
|
180 |
} else {
|
181 |
-
|
182 |
}
|
183 |
-
|
184 |
-
add_action( 'plugins_loaded', array( self::$instance, 'objects' ), 10 );
|
185 |
}
|
186 |
-
return self::$instance;
|
187 |
-
}
|
188 |
|
189 |
-
|
190 |
-
|
191 |
-
|
192 |
-
|
193 |
-
|
194 |
-
|
195 |
|
196 |
-
|
197 |
-
if ( ! defined( 'WPFORMS_VERSION' ) ) {
|
198 |
-
define( 'WPFORMS_VERSION', $this->version );
|
199 |
}
|
200 |
|
201 |
-
|
202 |
-
|
203 |
-
|
204 |
-
|
|
|
|
|
|
|
205 |
|
206 |
-
|
207 |
-
if ( ! defined( 'WPFORMS_PLUGIN_URL' ) ) {
|
208 |
-
define( 'WPFORMS_PLUGIN_URL', plugin_dir_url( __FILE__ ) );
|
209 |
-
}
|
210 |
|
211 |
-
|
212 |
-
|
213 |
-
|
214 |
-
}
|
215 |
-
}
|
216 |
|
217 |
-
|
218 |
-
|
219 |
-
*
|
220 |
-
* @since 1.0.0
|
221 |
-
*/
|
222 |
-
public function load_textdomain() {
|
223 |
|
224 |
-
|
225 |
-
|
|
|
|
|
|
|
|
|
226 |
|
227 |
-
|
228 |
-
|
229 |
-
|
230 |
-
|
231 |
-
|
232 |
-
|
233 |
-
|
234 |
-
|
235 |
-
|
236 |
-
require_once
|
237 |
-
require_once
|
238 |
-
|
239 |
-
|
240 |
-
|
241 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
242 |
}
|
243 |
-
}
|
244 |
|
245 |
-
|
246 |
-
|
247 |
-
|
248 |
-
|
249 |
-
|
250 |
-
|
251 |
-
|
252 |
-
|
253 |
-
|
254 |
-
|
255 |
-
|
256 |
-
|
257 |
-
|
258 |
-
|
259 |
-
|
260 |
-
|
261 |
-
|
262 |
-
|
263 |
-
|
264 |
-
|
265 |
-
|
266 |
-
|
267 |
-
require_once WPFORMS_PLUGIN_DIR . 'includes/integrations.php';
|
268 |
-
|
269 |
-
// Admin/Dashboard only includes
|
270 |
-
if ( is_admin() ) {
|
271 |
-
require_once WPFORMS_PLUGIN_DIR . 'includes/admin/class-menu.php';
|
272 |
-
require_once WPFORMS_PLUGIN_DIR . 'includes/admin/overview/class-overview.php';
|
273 |
-
require_once WPFORMS_PLUGIN_DIR . 'includes/admin/builder/class-builder.php';
|
274 |
-
require_once WPFORMS_PLUGIN_DIR . 'includes/admin/builder/functions.php';
|
275 |
-
require_once WPFORMS_PLUGIN_DIR . 'includes/admin/class-welcome.php';
|
276 |
-
require_once WPFORMS_PLUGIN_DIR . 'includes/admin/class-editor.php';
|
277 |
-
require_once WPFORMS_PLUGIN_DIR . 'includes/admin/ajax-actions.php';
|
278 |
}
|
279 |
}
|
280 |
|
281 |
/**
|
282 |
-
*
|
283 |
*
|
284 |
* @since 1.0.0
|
|
|
285 |
*/
|
286 |
-
|
287 |
-
|
288 |
-
// Global objects
|
289 |
-
$this->form = new WPForms_Form_Handler;
|
290 |
-
$this->frontend = new WPForms_Frontend;
|
291 |
-
$this->process = new WPForms_Process;
|
292 |
-
$this->smart_tags = new WPForms_Smart_Tags;
|
293 |
-
$this->logs = new WPForms_Logging;
|
294 |
-
$this->preview = new WPForms_Preview;
|
295 |
-
|
296 |
-
// Hook now that all of the WPForms stuff is loaded.
|
297 |
-
do_action( 'wpforms_loaded' );
|
298 |
-
}
|
299 |
-
}
|
300 |
|
301 |
-
|
302 |
-
|
303 |
-
|
304 |
-
* Use this function like you would a global variable, except without needing
|
305 |
-
* to declare the global.
|
306 |
-
*
|
307 |
-
* Example: <?php $wpforms = wpforms(); ?>
|
308 |
-
*
|
309 |
-
* @since 1.0.0
|
310 |
-
* @return object
|
311 |
-
*/
|
312 |
-
function wpforms() {
|
313 |
-
|
314 |
-
return WPForms::instance();
|
315 |
-
}
|
316 |
-
wpforms();
|
317 |
|
318 |
-
|
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.3.9.1
|
9 |
* Text Domain: wpforms
|
10 |
* Domain Path: languages
|
11 |
*
|
29 |
* @copyright Copyright (c) 2016, WPForms LLC
|
30 |
*/
|
31 |
|
32 |
+
// Exit if accessed directly.
|
33 |
+
if ( ! defined( 'ABSPATH' ) ) {
|
34 |
+
exit;
|
35 |
+
}
|
36 |
|
37 |
// Don't allow multiple versions to be active
|
38 |
+
if ( class_exists( 'WPForms' ) ) {
|
39 |
|
40 |
/**
|
41 |
* Deactivate if WPForms already activated.
|
43 |
* @since 1.0.0
|
44 |
*/
|
45 |
function wpforms_deactivate() {
|
46 |
+
|
47 |
deactivate_plugins( plugin_basename( __FILE__ ) );
|
48 |
}
|
49 |
add_action( 'admin_init', 'wpforms_deactivate' );
|
54 |
* @since 1.0.0
|
55 |
*/
|
56 |
function wpforms_lite_notice() {
|
57 |
+
|
58 |
echo '<div class="notice notice-warning"><p>' . __( 'Please deactivate WPForms Lite before activating WPForms', 'wpforms' ) . '</p></div>';
|
59 |
+
|
60 |
+
if ( isset( $_GET['activate'] ) ) {
|
61 |
unset( $_GET['activate'] );
|
62 |
+
}
|
63 |
}
|
64 |
add_action( 'admin_notices', 'wpforms_lite_notice' );
|
65 |
|
66 |
+
} else {
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
67 |
|
68 |
/**
|
69 |
+
* Main WPForms class.
|
70 |
*
|
|
|
71 |
* @since 1.0.0
|
72 |
+
* @package WPForms
|
73 |
*/
|
74 |
+
final class WPForms {
|
75 |
+
|
76 |
+
/**
|
77 |
+
* One is the loneliest number that you'll ever do.
|
78 |
+
*
|
79 |
+
* @since 1.0.0
|
80 |
+
* @var object
|
81 |
+
*/
|
82 |
+
private static $instance;
|
83 |
+
|
84 |
+
/**
|
85 |
+
* Plugin version for enqueueing, etc.
|
86 |
+
*
|
87 |
+
* @since 1.0.0
|
88 |
+
* @var sting
|
89 |
+
*/
|
90 |
+
public $version = '1.3.9.1';
|
91 |
+
|
92 |
+
/**
|
93 |
+
* The form data handler instance.
|
94 |
+
*
|
95 |
+
* @var object WPForms_Form_Handler
|
96 |
+
* @since 1.0.0
|
97 |
+
*/
|
98 |
+
public $form;
|
99 |
+
|
100 |
+
/**
|
101 |
+
* The entry data handler instance (Pro).
|
102 |
+
*
|
103 |
+
* @var object WPForms_Entry_Handler
|
104 |
+
* @since 1.0.0
|
105 |
+
*/
|
106 |
+
public $entry;
|
107 |
+
|
108 |
+
/**
|
109 |
+
* The entry meta data handler instance (Pro).
|
110 |
+
*
|
111 |
+
* @var object WPForms_Entry_Meta_Handler
|
112 |
+
* @since 1.1.6
|
113 |
+
*/
|
114 |
+
public $entry_meta;
|
115 |
+
|
116 |
+
/**
|
117 |
+
* The front-end instance.
|
118 |
+
*
|
119 |
+
* @var object WPForms_Frontend
|
120 |
+
* @since 1.0.0
|
121 |
+
*/
|
122 |
+
public $frontend;
|
123 |
+
|
124 |
+
/**
|
125 |
+
* The process instance.
|
126 |
+
*
|
127 |
+
* @var object WPForms_Process
|
128 |
+
* @since 1.0.0
|
129 |
+
*/
|
130 |
+
public $process;
|
131 |
+
|
132 |
+
/**
|
133 |
+
* The smart tags instance.
|
134 |
+
*
|
135 |
+
* @var object WPForms_Smart_Tags
|
136 |
+
* @since 1.0.0
|
137 |
+
*/
|
138 |
+
public $smart_tags;
|
139 |
+
|
140 |
+
/**
|
141 |
+
* The Logging instance.
|
142 |
+
*
|
143 |
+
* @var object WPForms_Logging
|
144 |
+
* @since 1.0.0
|
145 |
+
*/
|
146 |
+
public $logs;
|
147 |
+
|
148 |
+
/**
|
149 |
+
* The Preview instance.
|
150 |
+
*
|
151 |
+
* @var object WPForms_Preview
|
152 |
+
* @since 1.1.9
|
153 |
+
*/
|
154 |
+
public $preview;
|
155 |
+
|
156 |
+
/**
|
157 |
+
* The License class instance (Pro).
|
158 |
+
*
|
159 |
+
* @var object WPForms_License
|
160 |
+
* @since 1.0.0
|
161 |
+
*/
|
162 |
+
public $license;
|
163 |
+
|
164 |
+
/**
|
165 |
+
* Paid returns true, free (Lite) returns false.
|
166 |
+
*
|
167 |
+
* @var boolean
|
168 |
+
* @since 1.3.9
|
169 |
+
*/
|
170 |
+
public $pro = false;
|
171 |
+
|
172 |
+
/**
|
173 |
+
* Main WPForms Instance.
|
174 |
+
*
|
175 |
+
* Insures that only one instance of WPForms exists in memory at any one
|
176 |
+
* time. Also prevents needing to define globals all over the place.
|
177 |
+
*
|
178 |
+
* @since 1.0.0
|
179 |
+
* @return WPForms
|
180 |
+
*/
|
181 |
+
public static function instance() {
|
182 |
+
|
183 |
+
if ( ! isset( self::$instance ) && ! ( self::$instance instanceof WPForms ) ) {
|
184 |
+
|
185 |
+
self::$instance = new WPForms;
|
186 |
+
self::$instance->constants();
|
187 |
+
self::$instance->load_textdomain();
|
188 |
+
self::$instance->conditional_logic_addon_check();
|
189 |
+
self::$instance->includes();
|
190 |
+
|
191 |
+
// Load Pro or Lite specific files
|
192 |
+
if ( self::$instance->pro ) {
|
193 |
+
require_once WPFORMS_PLUGIN_DIR . 'pro/wpforms-pro.php';
|
194 |
+
} else {
|
195 |
+
require_once WPFORMS_PLUGIN_DIR . 'lite/wpforms-lite.php';
|
196 |
+
}
|
197 |
+
|
198 |
+
add_action( 'plugins_loaded', array( self::$instance, 'objects' ), 10 );
|
199 |
+
}
|
200 |
+
return self::$instance;
|
201 |
+
}
|
202 |
|
203 |
+
/**
|
204 |
+
* Setup plugin constants.
|
205 |
+
*
|
206 |
+
* @since 1.0.0
|
207 |
+
*/
|
208 |
+
private function constants() {
|
|
|
209 |
|
210 |
+
// Plugin version.
|
211 |
+
if ( ! defined( 'WPFORMS_VERSION' ) ) {
|
212 |
+
define( 'WPFORMS_VERSION', $this->version );
|
213 |
+
}
|
|
|
|
|
|
|
214 |
|
215 |
+
// Plugin Folder Path.
|
216 |
+
if ( ! defined( 'WPFORMS_PLUGIN_DIR' ) ) {
|
217 |
+
define( 'WPFORMS_PLUGIN_DIR', plugin_dir_path( __FILE__ ) );
|
218 |
+
}
|
|
|
|
|
|
|
|
|
|
|
|
|
219 |
|
220 |
+
// Plugin Folder URL.
|
221 |
+
if ( ! defined( 'WPFORMS_PLUGIN_URL' ) ) {
|
222 |
+
define( 'WPFORMS_PLUGIN_URL', plugin_dir_url( __FILE__ ) );
|
223 |
+
}
|
224 |
|
225 |
+
// Plugin Root File.
|
226 |
+
if ( ! defined( 'WPFORMS_PLUGIN_FILE' ) ) {
|
227 |
+
define( 'WPFORMS_PLUGIN_FILE', __FILE__ );
|
228 |
+
}
|
|
|
229 |
|
230 |
+
// Plugin Slug - Determine plugin type and set slug accordingly.
|
231 |
if ( file_exists( WPFORMS_PLUGIN_DIR . 'pro/wpforms-pro.php' ) ) {
|
232 |
+
$this->pro = true;
|
233 |
+
define( 'WPFORMS_PLUGIN_SLUG', 'wpforms' );
|
234 |
} else {
|
235 |
+
define( 'WPFORMS_PLUGIN_SLUG', 'wpforms-lite' );
|
236 |
}
|
|
|
|
|
237 |
}
|
|
|
|
|
238 |
|
239 |
+
/**
|
240 |
+
* Loads the plugin language files.
|
241 |
+
*
|
242 |
+
* @since 1.0.0
|
243 |
+
*/
|
244 |
+
public function load_textdomain() {
|
245 |
|
246 |
+
load_plugin_textdomain( 'wpforms', false, dirname( plugin_basename( __FILE__ ) ) . '/languages/' );
|
|
|
|
|
247 |
}
|
248 |
|
249 |
+
/**
|
250 |
+
* Check to see if the conditional logic addon is running, if so then
|
251 |
+
* deactivate the plugin to prevent conflicts.
|
252 |
+
*
|
253 |
+
* @since 1.3.8
|
254 |
+
*/
|
255 |
+
private function conditional_logic_addon_check() {
|
256 |
|
257 |
+
if ( function_exists( 'wpforms_conditional_logic' ) ) {
|
|
|
|
|
|
|
258 |
|
259 |
+
// Load core files needed to activate deactivate_plugins().
|
260 |
+
require_once( ABSPATH . 'wp-admin/includes/plugin.php' );
|
261 |
+
require_once( ABSPATH . 'wp-includes/pluggable.php' );
|
|
|
|
|
262 |
|
263 |
+
// Deactivate Conditional Logic addon.
|
264 |
+
deactivate_plugins( 'wpforms-conditional-logic/wpforms-conditional-logic.php' );
|
|
|
|
|
|
|
|
|
265 |
|
266 |
+
// To avoid namespace collisions, reload current page.
|
267 |
+
$url = esc_url_raw( remove_query_arg( 'wpforms-test' ) );
|
268 |
+
wp_redirect( $url );
|
269 |
+
exit;
|
270 |
+
}
|
271 |
+
}
|
272 |
|
273 |
+
/**
|
274 |
+
* Include files.
|
275 |
+
*
|
276 |
+
* @since 1.0.0
|
277 |
+
*/
|
278 |
+
private function includes() {
|
279 |
+
|
280 |
+
// Global includes.
|
281 |
+
require_once WPFORMS_PLUGIN_DIR . 'includes/functions.php';
|
282 |
+
require_once WPFORMS_PLUGIN_DIR . 'includes/class-install.php';
|
283 |
+
require_once WPFORMS_PLUGIN_DIR . 'includes/class-form.php';
|
284 |
+
require_once WPFORMS_PLUGIN_DIR . 'includes/class-fields.php';
|
285 |
+
require_once WPFORMS_PLUGIN_DIR . 'includes/class-frontend.php';
|
286 |
+
require_once WPFORMS_PLUGIN_DIR . 'includes/class-templates.php';
|
287 |
+
require_once WPFORMS_PLUGIN_DIR . 'includes/class-providers.php';
|
288 |
+
require_once WPFORMS_PLUGIN_DIR . 'includes/class-process.php';
|
289 |
+
require_once WPFORMS_PLUGIN_DIR . 'includes/class-smart-tags.php';
|
290 |
+
require_once WPFORMS_PLUGIN_DIR . 'includes/class-logging.php';
|
291 |
+
require_once WPFORMS_PLUGIN_DIR . 'includes/class-widget.php';
|
292 |
+
require_once WPFORMS_PLUGIN_DIR . 'includes/class-preview.php';
|
293 |
+
require_once WPFORMS_PLUGIN_DIR . 'includes/class-conditional-logic-core.php';
|
294 |
+
require_once WPFORMS_PLUGIN_DIR . 'includes/emails/class-emails.php';
|
295 |
+
require_once WPFORMS_PLUGIN_DIR . 'includes/integrations.php';
|
296 |
+
|
297 |
+
// Admin/Dashboard only includes.
|
298 |
+
if ( is_admin() ) {
|
299 |
+
require_once WPFORMS_PLUGIN_DIR . 'includes/admin/admin.php';
|
300 |
+
require_once WPFORMS_PLUGIN_DIR . 'includes/admin/class-notices.php';
|
301 |
+
require_once WPFORMS_PLUGIN_DIR . 'includes/admin/class-menu.php';
|
302 |
+
require_once WPFORMS_PLUGIN_DIR . 'includes/admin/overview/class-overview.php';
|
303 |
+
require_once WPFORMS_PLUGIN_DIR . 'includes/admin/builder/class-builder.php';
|
304 |
+
require_once WPFORMS_PLUGIN_DIR . 'includes/admin/builder/functions.php';
|
305 |
+
require_once WPFORMS_PLUGIN_DIR . 'includes/admin/class-settings.php';
|
306 |
+
require_once WPFORMS_PLUGIN_DIR . 'includes/admin/class-welcome.php';
|
307 |
+
require_once WPFORMS_PLUGIN_DIR . 'includes/admin/class-tools.php';
|
308 |
+
require_once WPFORMS_PLUGIN_DIR . 'includes/admin/class-editor.php';
|
309 |
+
require_once WPFORMS_PLUGIN_DIR . 'includes/admin/class-review.php';
|
310 |
+
require_once WPFORMS_PLUGIN_DIR . 'includes/admin/ajax-actions.php';
|
311 |
+
require_once WPFORMS_PLUGIN_DIR . 'includes/admin/class-am-notification.php';
|
312 |
+
require_once WPFORMS_PLUGIN_DIR . 'includes/admin/class-am-deactivation-survey.php';
|
313 |
+
}
|
314 |
}
|
|
|
315 |
|
316 |
+
/**
|
317 |
+
* Setup objects.
|
318 |
+
*
|
319 |
+
* @since 1.0.0
|
320 |
+
*/
|
321 |
+
public function objects() {
|
322 |
+
|
323 |
+
// Global objects.
|
324 |
+
$this->form = new WPForms_Form_Handler;
|
325 |
+
$this->frontend = new WPForms_Frontend;
|
326 |
+
$this->process = new WPForms_Process;
|
327 |
+
$this->smart_tags = new WPForms_Smart_Tags;
|
328 |
+
$this->logs = new WPForms_Logging;
|
329 |
+
$this->preview = new WPForms_Preview;
|
330 |
+
|
331 |
+
if ( is_admin() ) {
|
332 |
+
new AM_Notification( WPFORMS_PLUGIN_SLUG, $this->version );
|
333 |
+
new AM_Deactivation_Survey( 'WPForms', basename( __DIR__ ) );
|
334 |
+
}
|
335 |
+
|
336 |
+
// Hook now that all of the WPForms stuff is loaded.
|
337 |
+
do_action( 'wpforms_loaded' );
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
338 |
}
|
339 |
}
|
340 |
|
341 |
/**
|
342 |
+
* The function which returns the one WPForms instance.
|
343 |
*
|
344 |
* @since 1.0.0
|
345 |
+
* @return object
|
346 |
*/
|
347 |
+
function wpforms() {
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
348 |
|
349 |
+
return WPForms::instance();
|
350 |
+
}
|
351 |
+
wpforms();
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
352 |
|
353 |
+
} // End if().
|