Version Description
Download this release
Release Info
Developer | austyfrosty |
Plugin | Custom Login |
Version | 2.4 |
Comparing to | |
See all releases |
Code changes from version 1.1.4 to 2.4
- assets/css/admin.css +263 -0
- assets/css/chosen.css +435 -0
- assets/css/genericons.css +197 -0
- assets/css/jquery-ui-classic.css +575 -0
- assets/css/jquery-ui-fresh.css +575 -0
- assets/fonts/genericons-regular-webfont.eot +0 -0
- assets/fonts/genericons-regular-webfont.svg +135 -0
- assets/fonts/genericons-regular-webfont.ttf +0 -0
- assets/fonts/genericons-regular-webfont.woff +0 -0
- assets/images/chosen-sprite.png +0 -0
- assets/images/chosen-sprite@2x.png +0 -0
- assets/images/extensions/custom-login-page-template-300x200.jpg +0 -0
- assets/images/extensions/custom-login-redirects-300x200.jpg +0 -0
- assets/images/extensions/custom-login-stealth-login-300x200.jpg +0 -0
- assets/js/admin.js +90 -0
- assets/js/chosen.jquery.min.js +2 -0
- assets/js/functions.js +3 -0
- classes/changelog.txt +41 -0
- classes/class.settings-api.php +1126 -0
- classes/edd-remote-install-client/EDD_Remote_Install_Client.php +395 -0
- classes/edd-remote-install-client/css/edd-remote-install-admin.css +210 -0
- classes/edd-remote-install-client/js/edd-remote-install-admin.js +362 -0
- classes/scripts-styles.php +173 -0
- classes/templates.php +112 -0
- classes/welcome.php +193 -0
- custom-login.php +1002 -272
- extensions.json +1 -0
- functions/install.php +60 -0
- functions/post-types.php +52 -0
- functions/upgrades/upgrade-functions.php +149 -0
- functions/upgrades/upgrades.php +61 -0
- languages/custom-login-es_ES.mo +0 -0
- languages/custom-login-es_ES.po +0 -157
- languages/custom-login-tr_TR.mo +0 -0
- languages/custom-login-tr_TR.po +0 -490
- languages/custom-login-tr_TR.pot +423 -0
- languages/custom-login.mo +0 -0
- languages/custom-login.po +412 -81
- languages/custom-login.pot +228 -233
- library/admin/Sprite.jpg +0 -0
- library/admin/admin.php +0 -925
- library/admin/dashboard.php +0 -168
- library/admin/presstrends.php +0 -69
- library/css/admin.css +0 -49
- library/css/custom-login.css +0 -171
- library/css/custom-login.css.php +0 -133
- library/css/tabs.css +0 -47
- library/js/arrow.gif +0 -0
- library/js/cross.gif +0 -0
- library/js/custom-login.js +0 -54
- library/js/gravatar.js +0 -6
- library/js/hs.png +0 -0
- library/js/hv.png +0 -0
- library/js/jquery.autosize.js +0 -171
- library/js/jscolor.js +0 -953
- license.txt +0 -339
- readme.html +0 -118
- readme.md +119 -0
- readme.txt +290 -440
- screenshot-1.png +0 -0
- screenshot-2.png +0 -0
- templates/wp-login-script.php +53 -0
- templates/wp-login-style.php +327 -0
assets/css/admin.css
ADDED
@@ -0,0 +1,263 @@
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
1 |
+
.wp-admin select {
|
2 |
+
min-width: 150px;
|
3 |
+
}
|
4 |
+
|
5 |
+
ul.social li {
|
6 |
+
-webkit-transition: margin 0.25s linear;
|
7 |
+
-moz-transition: margin 0.25s linear;
|
8 |
+
-o-transition: margin 0.25s linear;
|
9 |
+
transition: margin 0.25s linear;
|
10 |
+
display: block;
|
11 |
+
}
|
12 |
+
ul.social li:hover {
|
13 |
+
margin-left: 10px;
|
14 |
+
}
|
15 |
+
|
16 |
+
/**
|
17 |
+
* Genericons
|
18 |
+
*/
|
19 |
+
|
20 |
+
/* Social icons */
|
21 |
+
ul.social .genericon-wordpress:before {
|
22 |
+
color: #21759b;
|
23 |
+
}
|
24 |
+
ul.social .genericon-flickr:before {
|
25 |
+
color: #0063DC;
|
26 |
+
}
|
27 |
+
ul.social .genericon-github:before {
|
28 |
+
color: #101010;
|
29 |
+
}
|
30 |
+
.genericon-facebook:before, .genericon-facebook-alt:before {
|
31 |
+
color: #3B5998;
|
32 |
+
}
|
33 |
+
ul.social .genericon-twitter:before {
|
34 |
+
color: #00ACED;
|
35 |
+
}
|
36 |
+
ul.social .genericon-googleplus:before {
|
37 |
+
color: #DB4A38;
|
38 |
+
}
|
39 |
+
|
40 |
+
/* General icons */
|
41 |
+
ul.social .genericon-star:before {
|
42 |
+
color: #FFD300;
|
43 |
+
text-shadow: 1px 1px 0 #FFFFFF;
|
44 |
+
}
|
45 |
+
ul.social .genericon-mail:before {
|
46 |
+
color: #7D7D7D;
|
47 |
+
text-shadow: 0 1px 0 #FFFFFF;
|
48 |
+
}
|
49 |
+
|
50 |
+
/**
|
51 |
+
* Checkboxes and Radios
|
52 |
+
* @ref http://codepen.io/Jackreichert/pen/xjyer
|
53 |
+
*/
|
54 |
+
.section input[type="checkbox"],
|
55 |
+
.section input[type="radio"] {
|
56 |
+
visibility: hidden;
|
57 |
+
}
|
58 |
+
.section .checkbox-wrap,
|
59 |
+
.section .checkbox-wrap > ul li,
|
60 |
+
.section .radio-wrap,
|
61 |
+
.section .radio-wrap > ul li {
|
62 |
+
float: left;
|
63 |
+
margin: 0 35px 0 -10px;
|
64 |
+
position: relative;
|
65 |
+
width: 20px;
|
66 |
+
}
|
67 |
+
.section .checkbox-wrap > ul,
|
68 |
+
.section .radio-wrap > ul {
|
69 |
+
margin: 0;
|
70 |
+
padding: 0;
|
71 |
+
}
|
72 |
+
.section .checkbox-wrap li,
|
73 |
+
.section .radio-wrap li {
|
74 |
+
line-height: 2.4em;
|
75 |
+
margin-left: 0 !important;
|
76 |
+
}
|
77 |
+
.section .checkbox-wrap label,
|
78 |
+
.section .radio-wrap label {
|
79 |
+
-moz-border-bottom-colors: none;
|
80 |
+
-moz-border-left-colors: none;
|
81 |
+
-moz-border-right-colors: none;
|
82 |
+
-moz-border-top-colors: none;
|
83 |
+
background: #f5f5f5; /* Old browsers */
|
84 |
+
background: -moz-linear-gradient(top, #ffffff 0%, #e6e6e6 100%); /* FF3.6+ */
|
85 |
+
background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#ffffff), color-stop(100%,#e6e6e6)); /* Chrome,Safari4+ */
|
86 |
+
background: -webkit-linear-gradient(top, #ffffff 0%,#e6e6e6 100%); /* Chrome10+,Safari5.1+ */
|
87 |
+
background: -o-linear-gradient(top, #ffffff 0%,#e6e6e6 100%); /* Opera 11.10+ */
|
88 |
+
background: -ms-linear-gradient(top, #ffffff 0%,#e6e6e6 100%); /* IE10+ */
|
89 |
+
background: linear-gradient(to bottom, #ffffff 0%,#e6e6e6 100%); /* W3C */
|
90 |
+
filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#ffffff', endColorstr='#e6e6e6',GradientType=0 ); /* IE6-9 */
|
91 |
+
border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) #A2A2A2;
|
92 |
+
border-image: none;
|
93 |
+
-webkit-border-radius: 4px;
|
94 |
+
-moz-border-radius: 4px;
|
95 |
+
border-radius: 4px;
|
96 |
+
border-style: solid;
|
97 |
+
border-width: 1px;
|
98 |
+
-webkit-box-shadow: 0 1px 0 rgba(255, 255, 255, 0.2) inset, 0 1px 2px rgba(0, 0, 0, 0.05);
|
99 |
+
-moz-box-shadow: 0 1px 0 rgba(255, 255, 255, 0.2) inset, 0 1px 2px rgba(0, 0, 0, 0.05);
|
100 |
+
box-shadow: 0 1px 0 rgba(255, 255, 255, 0.2) inset, 0 1px 2px rgba(0, 0, 0, 0.05);
|
101 |
+
cursor: pointer;
|
102 |
+
height: 20px;
|
103 |
+
position: absolute;
|
104 |
+
top: 0;
|
105 |
+
width: 20px;
|
106 |
+
text-indent: 37px;
|
107 |
+
}
|
108 |
+
.section .radio-wrap label {
|
109 |
+
-webkit-border-radius: 20px;
|
110 |
+
-moz-border-radius: 20px;
|
111 |
+
border-radius: 20px;
|
112 |
+
}
|
113 |
+
.section .checkbox-wrap label:after,
|
114 |
+
.section .radio-wrap label:after {
|
115 |
+
content: attr(title);
|
116 |
+
visibility: hidden;
|
117 |
+
}
|
118 |
+
.section .checkbox-wrap label:before,
|
119 |
+
.section .radio-wrap label:before {
|
120 |
+
-moz-border-bottom-colors: none;
|
121 |
+
-moz-border-left-colors: none;
|
122 |
+
-moz-border-right-colors: none;
|
123 |
+
-moz-border-top-colors: none;
|
124 |
+
background: none repeat scroll 0 0 transparent;
|
125 |
+
border-color: -moz-use-text-color -moz-use-text-color #333333 #333333;
|
126 |
+
border-image: none;
|
127 |
+
border-style: none none solid solid;
|
128 |
+
border-width: medium medium 3px 3px;
|
129 |
+
content: "";
|
130 |
+
height: 5px;
|
131 |
+
left: 4px;
|
132 |
+
-ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=0)";
|
133 |
+
filter: alpha(opacity=0);
|
134 |
+
opacity: 0;
|
135 |
+
position: absolute;
|
136 |
+
top: 4px;
|
137 |
+
-webkit-transform: rotate(-45deg);
|
138 |
+
-moz-transform: rotate(-45deg);
|
139 |
+
-ms-transform: rotate(-45deg);
|
140 |
+
-o-transform: rotate(-45deg);
|
141 |
+
transform: rotate(-45deg);
|
142 |
+
width: 9px;
|
143 |
+
}
|
144 |
+
.section .checkbox-wrap label:hover:before,
|
145 |
+
.section .radio-wrap label:hover:before {
|
146 |
+
-ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=50)";
|
147 |
+
filter: alpha(opacity=50);
|
148 |
+
opacity: 0.5;
|
149 |
+
}
|
150 |
+
.section .checkbox-wrap input[type="checkbox"]:checked + label:before,
|
151 |
+
.section .radio-wrap input[type="radio"]:checked + label:before {
|
152 |
+
-ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=100)";
|
153 |
+
filter: alpha(opacity=100);
|
154 |
+
opacity: 1;
|
155 |
+
}
|
156 |
+
|
157 |
+
/**
|
158 |
+
* Input fields
|
159 |
+
*/
|
160 |
+
.section input.regular-text {
|
161 |
+
width: auto;
|
162 |
+
}
|
163 |
+
.section textarea {
|
164 |
+
width: auto;
|
165 |
+
}
|
166 |
+
.section code {
|
167 |
+
display: inline-block;
|
168 |
+
}
|
169 |
+
.section .description {
|
170 |
+
width: 100%;
|
171 |
+
}
|
172 |
+
|
173 |
+
/**
|
174 |
+
* File uploads
|
175 |
+
*/
|
176 |
+
div.img {
|
177 |
+
background: none repeat scroll 0 0 #FFFFFF;
|
178 |
+
border: 1px solid #F5F5F5;
|
179 |
+
box-shadow: 5px 5px 0 #EFEFEF, 10px 10px 1px #DEDEDE;
|
180 |
+
padding: 25px;
|
181 |
+
max-width: 460px;
|
182 |
+
}
|
183 |
+
div.img img {
|
184 |
+
max-width: 100%;
|
185 |
+
width: auto;
|
186 |
+
height: auto;
|
187 |
+
}
|
188 |
+
|
189 |
+
/**
|
190 |
+
* MISC
|
191 |
+
*/
|
192 |
+
|
193 |
+
.section .wp-picker-container,
|
194 |
+
.section .wp-picker-container:active {
|
195 |
+
float: left !important;
|
196 |
+
}
|
197 |
+
|
198 |
+
/**
|
199 |
+
* http://www.responsivegridsystem.com/
|
200 |
+
*/
|
201 |
+
|
202 |
+
/* SECTIONS */
|
203 |
+
.section {
|
204 |
+
clear: both;
|
205 |
+
padding: 0px;
|
206 |
+
margin: 0px;
|
207 |
+
}
|
208 |
+
|
209 |
+
.section * {
|
210 |
+
-webkit-box-sizing: border-box; /* Safari/Chrome, other WebKit */
|
211 |
+
-moz-box-sizing: border-box; /* Firefox, other Gecko */
|
212 |
+
box-sizing: border-box; /* Opera/IE 8+ */
|
213 |
+
}
|
214 |
+
|
215 |
+
/* COLUMN SETUP */
|
216 |
+
.col {
|
217 |
+
display: block;
|
218 |
+
float: left;
|
219 |
+
margin: 1% 0 1% 1.6%;
|
220 |
+
}
|
221 |
+
.col:first-child { margin-left: 0; }
|
222 |
+
|
223 |
+
|
224 |
+
/* GROUPING */
|
225 |
+
.col-group:before,
|
226 |
+
.col-group:after {
|
227 |
+
content:"";
|
228 |
+
display:table;
|
229 |
+
}
|
230 |
+
.col-group:after {
|
231 |
+
clear:both;
|
232 |
+
}
|
233 |
+
|
234 |
+
/* GRID OF THREE */
|
235 |
+
.span_3_of_3 {
|
236 |
+
width: 100%;
|
237 |
+
}
|
238 |
+
.span_2_of_3 {
|
239 |
+
width: 66.1%;
|
240 |
+
}
|
241 |
+
.span_1_of_3 {
|
242 |
+
width: 32.2%;
|
243 |
+
}
|
244 |
+
|
245 |
+
/* GO FULL WIDTH AT LESS THAN 480 PIXELS */
|
246 |
+
|
247 |
+
@media only screen and (max-width: 762px) {
|
248 |
+
.col {
|
249 |
+
margin: 1% 0 1% 0%;
|
250 |
+
}
|
251 |
+
}
|
252 |
+
|
253 |
+
@media only screen and (max-width: 762px) {
|
254 |
+
.span_3_of_3 {
|
255 |
+
width: 100%;
|
256 |
+
}
|
257 |
+
.span_2_of_3 {
|
258 |
+
width: 100%;
|
259 |
+
}
|
260 |
+
.span_1_of_3 {
|
261 |
+
width: 100%;
|
262 |
+
}
|
263 |
+
}
|
assets/css/chosen.css
ADDED
@@ -0,0 +1,435 @@
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
1 |
+
/*!
|
2 |
+
Chosen, a Select Box Enhancer for jQuery and Prototype
|
3 |
+
by Patrick Filler for Harvest, http://getharvest.com
|
4 |
+
|
5 |
+
Version 1.1.0
|
6 |
+
Full source at https://github.com/harvesthq/chosen
|
7 |
+
Copyright (c) 2011 Harvest http://getharvest.com
|
8 |
+
|
9 |
+
MIT License, https://github.com/harvesthq/chosen/blob/master/LICENSE.md
|
10 |
+
This file is generated by `grunt build`, do not edit it by hand.
|
11 |
+
*/
|
12 |
+
|
13 |
+
/* @group Base */
|
14 |
+
.chosen-container {
|
15 |
+
position: relative;
|
16 |
+
display: inline-block;
|
17 |
+
vertical-align: middle;
|
18 |
+
font-size: 13px;
|
19 |
+
zoom: 1;
|
20 |
+
*display: inline;
|
21 |
+
-webkit-user-select: none;
|
22 |
+
-moz-user-select: none;
|
23 |
+
user-select: none;
|
24 |
+
}
|
25 |
+
.chosen-container .chosen-drop {
|
26 |
+
position: absolute;
|
27 |
+
top: 100%;
|
28 |
+
left: -9999px;
|
29 |
+
z-index: 1010;
|
30 |
+
-webkit-box-sizing: border-box;
|
31 |
+
-moz-box-sizing: border-box;
|
32 |
+
box-sizing: border-box;
|
33 |
+
width: 100%;
|
34 |
+
border: 1px solid #aaa;
|
35 |
+
border-top: 0;
|
36 |
+
background: #fff;
|
37 |
+
box-shadow: 0 4px 5px rgba(0, 0, 0, 0.15);
|
38 |
+
}
|
39 |
+
.chosen-container.chosen-with-drop .chosen-drop {
|
40 |
+
left: 0;
|
41 |
+
}
|
42 |
+
.chosen-container a {
|
43 |
+
cursor: pointer;
|
44 |
+
}
|
45 |
+
|
46 |
+
/* @end */
|
47 |
+
/* @group Single Chosen */
|
48 |
+
.chosen-container-single .chosen-single {
|
49 |
+
position: relative;
|
50 |
+
display: block;
|
51 |
+
overflow: hidden;
|
52 |
+
padding: 0 0 0 8px;
|
53 |
+
height: 23px;
|
54 |
+
border: 1px solid #aaa;
|
55 |
+
border-radius: 5px;
|
56 |
+
background-color: #fff;
|
57 |
+
background: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(20%, #ffffff), color-stop(50%, #f6f6f6), color-stop(52%, #eeeeee), color-stop(100%, #f4f4f4));
|
58 |
+
background: -webkit-linear-gradient(top, #ffffff 20%, #f6f6f6 50%, #eeeeee 52%, #f4f4f4 100%);
|
59 |
+
background: -moz-linear-gradient(top, #ffffff 20%, #f6f6f6 50%, #eeeeee 52%, #f4f4f4 100%);
|
60 |
+
background: -o-linear-gradient(top, #ffffff 20%, #f6f6f6 50%, #eeeeee 52%, #f4f4f4 100%);
|
61 |
+
background: linear-gradient(top, #ffffff 20%, #f6f6f6 50%, #eeeeee 52%, #f4f4f4 100%);
|
62 |
+
background-clip: padding-box;
|
63 |
+
box-shadow: 0 0 3px white inset, 0 1px 1px rgba(0, 0, 0, 0.1);
|
64 |
+
color: #444;
|
65 |
+
text-decoration: none;
|
66 |
+
white-space: nowrap;
|
67 |
+
line-height: 24px;
|
68 |
+
}
|
69 |
+
.chosen-container-single .chosen-default {
|
70 |
+
color: #999;
|
71 |
+
}
|
72 |
+
.chosen-container-single .chosen-single span {
|
73 |
+
display: block;
|
74 |
+
overflow: hidden;
|
75 |
+
margin-right: 26px;
|
76 |
+
text-overflow: ellipsis;
|
77 |
+
white-space: nowrap;
|
78 |
+
}
|
79 |
+
.chosen-container-single .chosen-single-with-deselect span {
|
80 |
+
margin-right: 38px;
|
81 |
+
}
|
82 |
+
.chosen-container-single .chosen-single abbr {
|
83 |
+
position: absolute;
|
84 |
+
top: 6px;
|
85 |
+
right: 26px;
|
86 |
+
display: block;
|
87 |
+
width: 12px;
|
88 |
+
height: 12px;
|
89 |
+
background: url('../images/chosen-sprite.png') -42px 1px no-repeat;
|
90 |
+
font-size: 1px;
|
91 |
+
}
|
92 |
+
.chosen-container-single .chosen-single abbr:hover {
|
93 |
+
background-position: -42px -10px;
|
94 |
+
}
|
95 |
+
.chosen-container-single.chosen-disabled .chosen-single abbr:hover {
|
96 |
+
background-position: -42px -10px;
|
97 |
+
}
|
98 |
+
.chosen-container-single .chosen-single div {
|
99 |
+
position: absolute;
|
100 |
+
top: 0;
|
101 |
+
right: 0;
|
102 |
+
display: block;
|
103 |
+
width: 18px;
|
104 |
+
height: 100%;
|
105 |
+
}
|
106 |
+
.chosen-container-single .chosen-single div b {
|
107 |
+
display: block;
|
108 |
+
width: 100%;
|
109 |
+
height: 100%;
|
110 |
+
background: url('../images/chosen-sprite.png') no-repeat 0px 2px;
|
111 |
+
}
|
112 |
+
.chosen-container-single .chosen-search {
|
113 |
+
position: relative;
|
114 |
+
z-index: 1010;
|
115 |
+
margin: 0;
|
116 |
+
padding: 3px 4px;
|
117 |
+
white-space: nowrap;
|
118 |
+
}
|
119 |
+
.chosen-container-single .chosen-search input[type="text"] {
|
120 |
+
-webkit-box-sizing: border-box;
|
121 |
+
-moz-box-sizing: border-box;
|
122 |
+
box-sizing: border-box;
|
123 |
+
margin: 1px 0;
|
124 |
+
padding: 4px 20px 4px 5px;
|
125 |
+
width: 100%;
|
126 |
+
height: auto;
|
127 |
+
outline: 0;
|
128 |
+
border: 1px solid #aaa;
|
129 |
+
background: white url('../images/chosen-sprite.png') no-repeat 100% -20px;
|
130 |
+
background: url('../images/chosen-sprite.png') no-repeat 100% -20px;
|
131 |
+
font-size: 1em;
|
132 |
+
font-family: sans-serif;
|
133 |
+
line-height: normal;
|
134 |
+
border-radius: 0;
|
135 |
+
}
|
136 |
+
.chosen-container-single .chosen-drop {
|
137 |
+
margin-top: -1px;
|
138 |
+
border-radius: 0 0 4px 4px;
|
139 |
+
background-clip: padding-box;
|
140 |
+
}
|
141 |
+
.chosen-container-single.chosen-container-single-nosearch .chosen-search {
|
142 |
+
position: absolute;
|
143 |
+
left: -9999px;
|
144 |
+
}
|
145 |
+
|
146 |
+
/* @end */
|
147 |
+
/* @group Results */
|
148 |
+
.chosen-container .chosen-results {
|
149 |
+
position: relative;
|
150 |
+
overflow-x: hidden;
|
151 |
+
overflow-y: auto;
|
152 |
+
margin: 0 4px 4px 0;
|
153 |
+
padding: 0 0 0 4px;
|
154 |
+
max-height: 240px;
|
155 |
+
-webkit-overflow-scrolling: touch;
|
156 |
+
}
|
157 |
+
.chosen-container .chosen-results li {
|
158 |
+
display: none;
|
159 |
+
margin: 0;
|
160 |
+
padding: 5px 6px;
|
161 |
+
list-style: none;
|
162 |
+
line-height: 15px;
|
163 |
+
-webkit-touch-callout: none;
|
164 |
+
}
|
165 |
+
.chosen-container .chosen-results li.active-result {
|
166 |
+
display: list-item;
|
167 |
+
cursor: pointer;
|
168 |
+
}
|
169 |
+
.chosen-container .chosen-results li.disabled-result {
|
170 |
+
display: list-item;
|
171 |
+
color: #ccc;
|
172 |
+
cursor: default;
|
173 |
+
}
|
174 |
+
.chosen-container .chosen-results li.highlighted {
|
175 |
+
background-color: #3875d7;
|
176 |
+
background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(20%, #3875d7), color-stop(90%, #2a62bc));
|
177 |
+
background-image: -webkit-linear-gradient(#3875d7 20%, #2a62bc 90%);
|
178 |
+
background-image: -moz-linear-gradient(#3875d7 20%, #2a62bc 90%);
|
179 |
+
background-image: -o-linear-gradient(#3875d7 20%, #2a62bc 90%);
|
180 |
+
background-image: linear-gradient(#3875d7 20%, #2a62bc 90%);
|
181 |
+
color: #fff;
|
182 |
+
}
|
183 |
+
.chosen-container .chosen-results li.no-results {
|
184 |
+
display: list-item;
|
185 |
+
background: #f4f4f4;
|
186 |
+
}
|
187 |
+
.chosen-container .chosen-results li.group-result {
|
188 |
+
display: list-item;
|
189 |
+
font-weight: bold;
|
190 |
+
cursor: default;
|
191 |
+
}
|
192 |
+
.chosen-container .chosen-results li.group-option {
|
193 |
+
padding-left: 15px;
|
194 |
+
}
|
195 |
+
.chosen-container .chosen-results li em {
|
196 |
+
font-style: normal;
|
197 |
+
text-decoration: underline;
|
198 |
+
}
|
199 |
+
|
200 |
+
/* @end */
|
201 |
+
/* @group Multi Chosen */
|
202 |
+
.chosen-container-multi .chosen-choices {
|
203 |
+
position: relative;
|
204 |
+
overflow: hidden;
|
205 |
+
-webkit-box-sizing: border-box;
|
206 |
+
-moz-box-sizing: border-box;
|
207 |
+
box-sizing: border-box;
|
208 |
+
margin: 0;
|
209 |
+
padding: 0;
|
210 |
+
width: 100%;
|
211 |
+
height: auto !important;
|
212 |
+
height: 1%;
|
213 |
+
border: 1px solid #aaa;
|
214 |
+
background-color: #fff;
|
215 |
+
background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(1%, #eeeeee), color-stop(15%, #ffffff));
|
216 |
+
background-image: -webkit-linear-gradient(#eeeeee 1%, #ffffff 15%);
|
217 |
+
background-image: -moz-linear-gradient(#eeeeee 1%, #ffffff 15%);
|
218 |
+
background-image: -o-linear-gradient(#eeeeee 1%, #ffffff 15%);
|
219 |
+
background-image: linear-gradient(#eeeeee 1%, #ffffff 15%);
|
220 |
+
cursor: text;
|
221 |
+
}
|
222 |
+
.chosen-container-multi .chosen-choices li {
|
223 |
+
float: left;
|
224 |
+
list-style: none;
|
225 |
+
}
|
226 |
+
.chosen-container-multi .chosen-choices li.search-field {
|
227 |
+
margin: 0;
|
228 |
+
padding: 0;
|
229 |
+
white-space: nowrap;
|
230 |
+
}
|
231 |
+
.chosen-container-multi .chosen-choices li.search-field input[type="text"] {
|
232 |
+
margin: 1px 0;
|
233 |
+
padding: 5px;
|
234 |
+
height: 15px;
|
235 |
+
outline: 0;
|
236 |
+
border: 0 !important;
|
237 |
+
background: transparent !important;
|
238 |
+
box-shadow: none;
|
239 |
+
color: #666;
|
240 |
+
font-size: 100%;
|
241 |
+
font-family: sans-serif;
|
242 |
+
line-height: normal;
|
243 |
+
border-radius: 0;
|
244 |
+
}
|
245 |
+
.chosen-container-multi .chosen-choices li.search-field .default {
|
246 |
+
color: #999;
|
247 |
+
}
|
248 |
+
.chosen-container-multi .chosen-choices li.search-choice {
|
249 |
+
position: relative;
|
250 |
+
margin: 3px 0 3px 5px;
|
251 |
+
padding: 3px 20px 3px 5px;
|
252 |
+
border: 1px solid #aaa;
|
253 |
+
border-radius: 3px;
|
254 |
+
background-color: #e4e4e4;
|
255 |
+
background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(20%, #f4f4f4), color-stop(50%, #f0f0f0), color-stop(52%, #e8e8e8), color-stop(100%, #eeeeee));
|
256 |
+
background-image: -webkit-linear-gradient(#f4f4f4 20%, #f0f0f0 50%, #e8e8e8 52%, #eeeeee 100%);
|
257 |
+
background-image: -moz-linear-gradient(#f4f4f4 20%, #f0f0f0 50%, #e8e8e8 52%, #eeeeee 100%);
|
258 |
+
background-image: -o-linear-gradient(#f4f4f4 20%, #f0f0f0 50%, #e8e8e8 52%, #eeeeee 100%);
|
259 |
+
background-image: linear-gradient(#f4f4f4 20%, #f0f0f0 50%, #e8e8e8 52%, #eeeeee 100%);
|
260 |
+
background-clip: padding-box;
|
261 |
+
box-shadow: 0 0 2px white inset, 0 1px 0 rgba(0, 0, 0, 0.05);
|
262 |
+
color: #333;
|
263 |
+
line-height: 13px;
|
264 |
+
cursor: default;
|
265 |
+
}
|
266 |
+
.chosen-container-multi .chosen-choices li.search-choice .search-choice-close {
|
267 |
+
position: absolute;
|
268 |
+
top: 4px;
|
269 |
+
right: 3px;
|
270 |
+
display: block;
|
271 |
+
width: 12px;
|
272 |
+
height: 12px;
|
273 |
+
background: url('../images/chosen-sprite.png') -42px 1px no-repeat;
|
274 |
+
font-size: 1px;
|
275 |
+
}
|
276 |
+
.chosen-container-multi .chosen-choices li.search-choice .search-choice-close:hover {
|
277 |
+
background-position: -42px -10px;
|
278 |
+
}
|
279 |
+
.chosen-container-multi .chosen-choices li.search-choice-disabled {
|
280 |
+
padding-right: 5px;
|
281 |
+
border: 1px solid #ccc;
|
282 |
+
background-color: #e4e4e4;
|
283 |
+
background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(20%, #f4f4f4), color-stop(50%, #f0f0f0), color-stop(52%, #e8e8e8), color-stop(100%, #eeeeee));
|
284 |
+
background-image: -webkit-linear-gradient(top, #f4f4f4 20%, #f0f0f0 50%, #e8e8e8 52%, #eeeeee 100%);
|
285 |
+
background-image: -moz-linear-gradient(top, #f4f4f4 20%, #f0f0f0 50%, #e8e8e8 52%, #eeeeee 100%);
|
286 |
+
background-image: -o-linear-gradient(top, #f4f4f4 20%, #f0f0f0 50%, #e8e8e8 52%, #eeeeee 100%);
|
287 |
+
background-image: linear-gradient(top, #f4f4f4 20%, #f0f0f0 50%, #e8e8e8 52%, #eeeeee 100%);
|
288 |
+
color: #666;
|
289 |
+
}
|
290 |
+
.chosen-container-multi .chosen-choices li.search-choice-focus {
|
291 |
+
background: #d4d4d4;
|
292 |
+
}
|
293 |
+
.chosen-container-multi .chosen-choices li.search-choice-focus .search-choice-close {
|
294 |
+
background-position: -42px -10px;
|
295 |
+
}
|
296 |
+
.chosen-container-multi .chosen-results {
|
297 |
+
margin: 0;
|
298 |
+
padding: 0;
|
299 |
+
}
|
300 |
+
.chosen-container-multi .chosen-drop .result-selected {
|
301 |
+
display: list-item;
|
302 |
+
color: #ccc;
|
303 |
+
cursor: default;
|
304 |
+
}
|
305 |
+
|
306 |
+
/* @end */
|
307 |
+
/* @group Active */
|
308 |
+
.chosen-container-active .chosen-single {
|
309 |
+
border: 1px solid #5897fb;
|
310 |
+
box-shadow: 0 0 5px rgba(0, 0, 0, 0.3);
|
311 |
+
}
|
312 |
+
.chosen-container-active.chosen-with-drop .chosen-single {
|
313 |
+
border: 1px solid #aaa;
|
314 |
+
-moz-border-radius-bottomright: 0;
|
315 |
+
border-bottom-right-radius: 0;
|
316 |
+
-moz-border-radius-bottomleft: 0;
|
317 |
+
border-bottom-left-radius: 0;
|
318 |
+
background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(20%, #eeeeee), color-stop(80%, #ffffff));
|
319 |
+
background-image: -webkit-linear-gradient(#eeeeee 20%, #ffffff 80%);
|
320 |
+
background-image: -moz-linear-gradient(#eeeeee 20%, #ffffff 80%);
|
321 |
+
background-image: -o-linear-gradient(#eeeeee 20%, #ffffff 80%);
|
322 |
+
background-image: linear-gradient(#eeeeee 20%, #ffffff 80%);
|
323 |
+
box-shadow: 0 1px 0 #fff inset;
|
324 |
+
}
|
325 |
+
.chosen-container-active.chosen-with-drop .chosen-single div {
|
326 |
+
border-left: none;
|
327 |
+
background: transparent;
|
328 |
+
}
|
329 |
+
.chosen-container-active.chosen-with-drop .chosen-single div b {
|
330 |
+
background-position: -18px 2px;
|
331 |
+
}
|
332 |
+
.chosen-container-active .chosen-choices {
|
333 |
+
border: 1px solid #5897fb;
|
334 |
+
box-shadow: 0 0 5px rgba(0, 0, 0, 0.3);
|
335 |
+
}
|
336 |
+
.chosen-container-active .chosen-choices li.search-field input[type="text"] {
|
337 |
+
color: #111 !important;
|
338 |
+
}
|
339 |
+
|
340 |
+
/* @end */
|
341 |
+
/* @group Disabled Support */
|
342 |
+
.chosen-disabled {
|
343 |
+
opacity: 0.5 !important;
|
344 |
+
cursor: default;
|
345 |
+
}
|
346 |
+
.chosen-disabled .chosen-single {
|
347 |
+
cursor: default;
|
348 |
+
}
|
349 |
+
.chosen-disabled .chosen-choices .search-choice .search-choice-close {
|
350 |
+
cursor: default;
|
351 |
+
}
|
352 |
+
|
353 |
+
/* @end */
|
354 |
+
/* @group Right to Left */
|
355 |
+
.chosen-rtl {
|
356 |
+
text-align: right;
|
357 |
+
}
|
358 |
+
.chosen-rtl .chosen-single {
|
359 |
+
overflow: visible;
|
360 |
+
padding: 0 8px 0 0;
|
361 |
+
}
|
362 |
+
.chosen-rtl .chosen-single span {
|
363 |
+
margin-right: 0;
|
364 |
+
margin-left: 26px;
|
365 |
+
direction: rtl;
|
366 |
+
}
|
367 |
+
.chosen-rtl .chosen-single-with-deselect span {
|
368 |
+
margin-left: 38px;
|
369 |
+
}
|
370 |
+
.chosen-rtl .chosen-single div {
|
371 |
+
right: auto;
|
372 |
+
left: 3px;
|
373 |
+
}
|
374 |
+
.chosen-rtl .chosen-single abbr {
|
375 |
+
right: auto;
|
376 |
+
left: 26px;
|
377 |
+
}
|
378 |
+
.chosen-rtl .chosen-choices li {
|
379 |
+
float: right;
|
380 |
+
}
|
381 |
+
.chosen-rtl .chosen-choices li.search-field input[type="text"] {
|
382 |
+
direction: rtl;
|
383 |
+
}
|
384 |
+
.chosen-rtl .chosen-choices li.search-choice {
|
385 |
+
margin: 3px 5px 3px 0;
|
386 |
+
padding: 3px 5px 3px 19px;
|
387 |
+
}
|
388 |
+
.chosen-rtl .chosen-choices li.search-choice .search-choice-close {
|
389 |
+
right: auto;
|
390 |
+
left: 4px;
|
391 |
+
}
|
392 |
+
.chosen-rtl.chosen-container-single-nosearch .chosen-search,
|
393 |
+
.chosen-rtl .chosen-drop {
|
394 |
+
left: 9999px;
|
395 |
+
}
|
396 |
+
.chosen-rtl.chosen-container-single .chosen-results {
|
397 |
+
margin: 0 0 4px 4px;
|
398 |
+
padding: 0 4px 0 0;
|
399 |
+
}
|
400 |
+
.chosen-rtl .chosen-results li.group-option {
|
401 |
+
padding-right: 15px;
|
402 |
+
padding-left: 0;
|
403 |
+
}
|
404 |
+
.chosen-rtl.chosen-container-active.chosen-with-drop .chosen-single div {
|
405 |
+
border-right: none;
|
406 |
+
}
|
407 |
+
.chosen-rtl .chosen-search input[type="text"] {
|
408 |
+
padding: 4px 5px 4px 20px;
|
409 |
+
background: white url('../images/chosen-sprite.png') no-repeat -30px -20px;
|
410 |
+
background: url('../images/chosen-sprite.png') no-repeat -30px -20px;
|
411 |
+
direction: rtl;
|
412 |
+
}
|
413 |
+
.chosen-rtl.chosen-container-single .chosen-single div b {
|
414 |
+
background-position: 6px 2px;
|
415 |
+
}
|
416 |
+
.chosen-rtl.chosen-container-single.chosen-with-drop .chosen-single div b {
|
417 |
+
background-position: -12px 2px;
|
418 |
+
}
|
419 |
+
|
420 |
+
/* @end */
|
421 |
+
/* @group Retina compatibility */
|
422 |
+
@media only screen and (-webkit-min-device-pixel-ratio: 2), only screen and (min-resolution: 144dpi) {
|
423 |
+
.chosen-rtl .chosen-search input[type="text"],
|
424 |
+
.chosen-container-single .chosen-single abbr,
|
425 |
+
.chosen-container-single .chosen-single div b,
|
426 |
+
.chosen-container-single .chosen-search input[type="text"],
|
427 |
+
.chosen-container-multi .chosen-choices .search-choice .search-choice-close,
|
428 |
+
.chosen-container .chosen-results-scroll-down span,
|
429 |
+
.chosen-container .chosen-results-scroll-up span {
|
430 |
+
background-image: url('../images/chosen-sprite@2x.png') !important;
|
431 |
+
background-size: 52px 37px !important;
|
432 |
+
background-repeat: no-repeat !important;
|
433 |
+
}
|
434 |
+
}
|
435 |
+
/* @end */
|
assets/css/genericons.css
ADDED
@@ -0,0 +1,197 @@
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
1 |
+
/**
|
2 |
+
|
3 |
+
Genericons Helper CSS
|
4 |
+
|
5 |
+
*/
|
6 |
+
|
7 |
+
|
8 |
+
/**
|
9 |
+
* The font was graciously generated by Font Squirrel (http://www.fontsquirrel.com). We love those guys.
|
10 |
+
*/
|
11 |
+
|
12 |
+
@font-face {
|
13 |
+
font-family: 'Genericons';
|
14 |
+
src: url('../fonts/genericons-regular-webfont.eot');
|
15 |
+
}
|
16 |
+
|
17 |
+
@font-face {
|
18 |
+
font-family: 'Genericons';
|
19 |
+
src: url(data:application/font-woff;charset=utf-8;base64,d09GRgABAAAAAENIABEAAAAAatQAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAABGRlRNAAABgAAAABwAAAAcaii0EkdERUYAAAGcAAAAHQAAACAArQAET1MvMgAAAbwAAABCAAAAYJdbaIVjbWFwAAACAAAAAJgAAAGyqWnWY2N2dCAAAAKYAAAADgAAAA4BYgHJZnBnbQAAAqgAAAGxAAACZVO0L6dnYXNwAAAEXAAAAAgAAAAIAAAAEGdseWYAAARkAAA5fgAAWkD4H3YjaGVhZAAAPeQAAAArAAAANgUfUT9oaGVhAAA+EAAAABwAAAAkEAMH3WhtdHgAAD4sAAAAiAAAAQpVkUB7bG9jYQAAPrQAAAECAAABAoDMauhtYXhwAAA/uAAAACAAAAAgAagCQm5hbWUAAD/YAAABYgAAAthC114IcG9zdAAAQTwAAAHUAAAFCuMEJONwcmVwAABDEAAAAC4AAAAusPIrFHdlYmYAAENAAAAABgAAAAbRQFLPAAAAAQAAAADMPaLPAAAAAM71j4QAAAAAzvWBvnjaY2BkYGDgA2IJBhBgYmAEwnogZgHzGAAJvwCyAAAAeNpjYGb/zDiBgZWBhdWY5QwDA8NMCM10hsEIzAdKYQeh3uF+DA6qf74ys6X9S2Ng4GBg0AAKMyIpUWBgBACOigvWAAB42mNgYGBmgGAZBkYGEFgD5DGC+SwME4C0AhCyMDCo/vnI+Ynzk+Qn1c8cXzi/SH7R/GL5xfNL5JfMLyVfmf//B6tg+MTwSeCTwmeGLwxfBL4ofDH44vAl4EvCl4KvDP//32LnZ+Hj4+PgY+LV4DHk0eZR5ZHnkeQR5uHlYeeugdqOFzCyMcCVMTIBCSZ0BQzDHgAA5FwqMwAAAQkARQBBAGYAfwC3AAB42l1Ru05bQRDdDQ8DgcTYIDnaFLOZkMZ7oQUJxNWNYmQ7heUIaTdykYtxAR9AgUQN2q8ZoKGkSJsGIRdIfEI+IRIza4iiNDs7s3POmTNLypGqd+lrz1PnJJDC3QbNNv1OSLWzAPek6+uNjLSDB1psZvTKdfv+Cwab0ZQ7agDlPW8pDxlNO4FatKf+0fwKhvv8H/M7GLQ00/TUOgnpIQTmm3FLg+8ZzbrLD/qC1eFiMDCkmKbiLj+mUv63NOdqy7C1kdG8gzMR+ck0QFNrbQSa/tQh1fNxFEuQy6axNpiYsv4kE8GFyXRVU7XM+NrBXbKz6GCDKs2BB9jDVnkMHg4PJhTStyTKLA0R9mKrxAgRkxwKOeXcyf6kQPlIEsa8SUo744a1BsaR18CgNk+z/zybTW1vHcL4WRzBd78ZSzr4yIbaGBFiO2IpgAlEQkZV+YYaz70sBuRS+89AlIDl8Y9/nQi07thEPJe1dQ4xVgh6ftvc8suKu1a5zotCd2+qaqjSKc37Xs6+xwOeHgvDQWPBm8/7/kqB+jwsrjRoDgRDejd6/6K16oirvBc+sifTv7FaAAAAAAEAAf//AA942q18C3xU1bnvWnvveSaZmT3PZJKZzHtCJpkJ88hkIIQhCAECCAQCCCooggTkjS9q3Vqpioo9tqJVK2hbsdpj90xA2mJrjtVaW0fLFbmt1h6xp1ptPcfe9rSKmc39vrVnQhBsz/39bmBm7732npm1vvU9/t9jLaIh8Ef/yj1DeKIlBlJLzIRMFP1i2Mbb/DXUZeNdIv2r0vPEE166+An4u/MJ7pnyBZeS0+R0+XVymi6HE+X4aaoQSsb9TSREyxEOvlQjwXfrSA18s424yJVEJgmZlmQhIVtSsqYki0lZn5DtKdlQkh1JuTYh15WoXJ+QhRNFoq9NJpOyrlTUCcbYcF7HG/C9xhCTdZaCncZkV6lgsiaTRbsL79sthlihgcZIx0Sa8TvO9+KgO2Xo7GnCSWVJIGWJk07DNUckiY57KZUj4Sjc1cE/GION9BLZmJDNJdkGHYR+2mEwJ6DHcp2lIEJ/dKWCg8YKYp1oHRYMRj7kypGCzQxXVKsjcNUxkVisIZ9gtXCCL0TszmRnOhKg5BW6mj5KV7/yirJfuUTZT5P7ju/bd5xPjG985RXuIWzdhyQWiEQlnaSVGHVdxE+uZ7SFvvkSciMQMyHzpWEj79DH5JqSrIfeBlhva0tyraVQD731lGSPpWCFM22pEIR+11LRWtAbczm5XpS5nOyBUfAOM/RbtoqyBsbS6IOxaKm1FtscYoHT5GBMNuAYv00jIoVtdpJKkkyaBAPEle70OR12rS8iAYHZ/0+ArHmq+8EPqVY59cMfKJ9IR6nx6FHlb0epxCPNTxNpVBJ8B1aV34a7Y0/uPnp09y3PPIPj5oh+PF9Nx3EX9LWpFDKWIYm8BYxVl6SyJSGTE7KQBErIvKWgp4wU2qRcY4GxxoBYOGsEB+AXaeWVghfQVoHuKHCEA0fwUn1XiHprVALRwSYtzgEHFyJcCvABDTAV3sNTCfimjqQJlU2sK9AvTWnYoCEwKcYS8pKhVDAD5Y1EtALFCxoDHPkccnCFdjpRI8bh207SnpN3bz1Ntt6tkfafPLn/C8+3lP8gcfe3PM94FH5JS4iROMhKImsTspgCZpStSeSJGkaZWiCIk/WCUUP9/aKRR8kxakGmgEI1QBRTSTZZZAdyUNFhwrsOEeTKpcoVEMdOgmKyM+M/cwryIynHjw/t46onQDSQr+PKcUr2DY07JRzSjNGlgaTIPoKiDnMSS8he4NA065++VNQT/GG9AN3SWwpu6Fa8VIy7sTE+ERrjlkIdNDpKxToHNtZBF2WHpRCFRn+pGPVjYzQE/c4Add164GtjfS5XqIsD/9a4PDHg30LUAc3e1hzwdawGJVYMTWQySsV0Z9ahdYgonxkxHc14KVwAH+MdmBY412XwTiSAT7kcMENkaDC/5cCW/OAQ42aCfD3WxI1QafX+8H25JYq0YMuWBVRakrsvvH+1IgFjcxqKh91K5RHKHlHUR0DWgbvIiA5pZiVB0kZkf0K2pXCKgMFrU0wThRJy/QmQ6EIY5qkgWICNGmAkDcBGKX+S9Tjop2IwEKFZPw5KbYsB2x5YJZBVBw6sUvJKXlp1gEfN8vivsEVS8sjR7Ca8K3k6ckBZJf3qcSqdaSGEp1U50EAPfWRmRctT7Kj+BOoks6XghKlpKhUCMB9mmI9ho9VWj1rEKRYafDgHFGTgsNZgdjibKrMAHabhznQ06+VRElw9NB2BC+qwm6gOf5TJZaa/f4V7gscyOXNR34UX9q1Ydnl8YBJPkNE+hVd///H+FY1TZsyNzr+z86K+o7882rdi+Qc3L33srslo/uCV1oNGIevIBiJfkZAvKcmtqEGofCXjxs6S3GkpNFKU2MJ66H0n9LPYP29BDvRko/i0xuLovmDJZUzVX3IFcJTlMrjRKuZrjDYPaWlL52cPXooD1VgPBULhjiQbnJi2klAqKRCrw0I02kgm3ZlJR3sEfOMi0Tg1cbpIVKuL82aqdWkddi/v0upMNE6jcSHaSk3U6fIKLq+uM2tHNRENkUepje765TG6i1ofVa5TfhEK0BnzrpMGs+u1Rr3ZJtSlui/PXr1nz9XZy3oSRuOkjvXZQem6uZnapqnLlvo4gyfQ6RFqGwyimzd43IE6ytdZm0OdUxbFaSCk/EK5TiC/pF+AL39U+U9l9zGlUP7jOl1zg/D8wpsnG5pnDT217ZGt5pZZl06knGCdGPZznD88UdRy3D03bN+/7amhWT594qI6E+3KCnXBxnpOV+O2wtiau/y83t3Q3OAEXZS8Vqj3addxTrRxOnxjc2MmjYzzJ5E+soDsIMU6QmJypITao7kkd6nztZDZNwuIhaVwIcxXbxLV6yKYsgtBHvJ1mto6wdnUHGppz0yexearPgLtRgOxtfZMzfcumIvT1Cwe0tMmz2Q877IW/YkLcmjj6ilMmA/mywJqHkw3b7e6Okk2Eq2l0awzlOWiWkKd/mSW47XE5rT1CNlIKBjQUi/n6hRcXNTE2bwUPmPNhr6FM0UfgpftW99SPlR2K2vg9WFox8Yb6Hffs+SVd5Wtf/c9R/+6567h55Q/U/FXdNbho/7v/Va57W9rf649MO+O9RO+qBz5gU+iC5yeqPYJOvd695f7nv77YtOkFZ6HXq5X/sQnz/3+b8HvcrMPKq9eW6Kd8zqkwWT9V5yz4tT9tyXK0U8fGFlA2+gtc5RjmvWPKY9xk3w9vaEv3mMpb/GkFtf6tY3UM5y7dEh5tPF+5ef3baSLR+JMfiTaBjjkN6DNYdgpXxY41JlKwmEKsGicZtJZp+BC/k4lXZ1ZrQ5fyLImXgj6pI4WSn52zTOhqDeRvPHxBUvnLkvuoXveMf7q/gMbpfWt11y1dvYm2rPz6XeUX39LeZUe03yDu3uzrs7981s0MT756CVXLH7iFzXR9vv/9w731Fv66to3L9D59Nd//MEv7l+KfSOAkXQSiZILCKpIUJYBMG9JWUzIvpTsLMlulXVaAHeeQDAKMNRgAVwpuwBLpQoTgHlcgOZkd47BhPHaVPTb/FNQv7qykWDAxHloEMFDICLtG9KQoX37hpR3qalWeTfW+5h2/vpL7lnWpijltqF9iBHw9qfwzr1IhZHa7iz9P8bsJTsv+JMyWs4hwAOLTyTNe9D3BjKf6VMHs+K2ZJFQNG7EBRYPUIVetexupv+5JHZdTBZd9fiMy2GIFesZNq4nYAsbKzY8JaZ7uFTS2Ux54FAP5+fRmHPSb9Nrn7wqO+R26/5tborONikvKCP8SzRBufl7NuW1PK+8m59helU5NnqEn01A21fpawbcsRiQx1qyl8h1CXlpSW5OFMJpwGSNpcKEOKD4RSqh142T0W6Q0QuT8ppSsXsN9rG7H4a0xlJYBe0guFcC7btRcA0ouDbnkuUXM6FtXorCTPUGYrcFsn0rL161BmW1UTzkjM3qR0UsL7IWWjpQaq0WaydIrROkVgtSG0GppVpbKtk5lXY6tTqtjtp40LadLqfa5qVqYw+XSaOuNSDjulCSBYpsHYnytNMKWho4WCft/YjOpRvp3I/27v1IOaR8TTn0UfpUSblx5u50eGMw4LCZ7G0TaUS+YYndbLfvvjCyIRi02KjZEptIgwvrATnU2zmbxqKt1eh5fv4k4ybl/QdfVR6iF27ZsedmgfuY3nrkjcs1U/g5n/kVOOO4Pym71gieh6hJw/G0OcBruNH7OJEu03EBHzVio63ByUHrw7T2wtxKf3x5JiB4jY019SanaDfmBukVm58/9XV/XKvhDpb3DtHtb7463NJ66wOqfzE2tzPIcnIFeYjISxNyS0qeXUK+AxA5HRyNlGwvFafbcfqme2H6GoAX16pzjJ4bOmpg8WV3Ug6Btk4WAyF8NNAF3LgO5lcHHscwb5q5AmctIOaNmhrvhFhv/+LB1WyuZ8NcF0lsJqjgAm+Cc128C+3udPEItfiDockrL2Pm1Cbi5KCZpK6ANhjgM6qkeqhfDIp+hwrrUWrBzIJ51cP9LDtNZf0BLd9DXWBPNS6cVZBgW6TTBd/k1AJrSDeUvB6fu9lrnW07cp8q2uCknGaqDyCtotFcfDcfNIdsHlHUx+ceumjgwK3lR278/YzcG9LiObbBULfHo9PR8qElt01z3L3ruh85HdKuG16i79Lf38hPyfm7wx4qaKehRlD9H/zqUfiVJufdT23g3LVNYqO93mFMz5x815GtRzr2Xnbqm0vWU9pQN7lhYmBigyds0V8hdD7ya0H4/TcPjAjCL4mKycCAap8Br94CunkWQ9owB3wCcEwVaasT5IEJ8pYYUtYBtinUmYDCHrEghhCWhepF6yGLua09rqIyu3MyBQAZp6A6bKA3gMLpbA9NJREjw3mcA2Wo0WX8XmrhAKVdsZBbvJauGRhYZ6NzlKcBls2usQ9OnTTXT2fn1t2+KNSbSvh9jhrlCIU/rTj7sstm969aferb/L+P+rkJnY3JmZNWzyj/J9e15bsbsjW2xsZgk3iX+23lPeU/Lz6LT5sAe2bJDUwDARL2x0DtdDBn0Oc7IcqdKdkG/pdFdsP4u9j4wQO2MCfYy/wG2a9yawwcEkuhTVVDOSCL18NMgOwXC/UuIE7AKmdyckwsdHQiiXxwu9CSUV3h8SYC0PbnkosRixkOoNWYyUCbQMnCaXT6ALegd/oiC9WBF/x1qtdbZqR2U/3B25MLuwIW5ePxRmSfcO2kCy+c1D1v/qdH+IbR9+jRdltL17CyjL74vafr2yINW4AZngRAtQCw1DTyXVJ0In4yJ+QJJaSQFgjSywiSKckZS6EJRg52MmAptDOXuTAdDp3uH/bUfDSHOGJGk9wAVBwp2OkncmRk2GqP2GJFePft8e0JakFMc+SQ1d7gjsTxj447l/NuWmjKgCC7clNQkANiUevswLN2a8E8AanZMQF9NNLco0o2mCoEyk6rw84J4L9EOVDQ0UjWpmIKJ3MGtKi+rSzqYOIcdhBeHaLlaIR7su/eYzT2lEwTL+94QvnZi5d/LzDbErj4Xp3n0Za71g4sC08xua67YucPLlc++PiOD7+xbMCq01kMuqDzxi8Jf7rqN688fOl1Lymf3vk35eqTF+eV3+Z2fbXz4C5OXnjNHUc3LErd81zu8q98n058+gQ1XX7wzWu/usbhrp/SUm8xpKgaXhvDsINkNymakO4AO2Yn5C60kcwmLmWkD5fksKWQAkrPLclzLYWZcDa5JE9W3V/wPZYBI85NAW1iiYHFqC9nikdMGltz1zTLArycbC04pyIBnSb0QhYDTWeDF2IwEps7PCE1eeqCz3geiGSDgWhnFoCpSj4mu+BrOV3OTmDSbGckClRmWAHJDNTPomEErgVVC/ABpsJ1tuOh+gZfvXuOZ1bT3gWPlvdc8tjf9971f75zfW5ondUjcBZeozFd0CeNbH3p5IJ9lyy63FYz0ds3fdF2i96w1VavBbT61Fl+hnIJvP7z0dYd66g703+ETv3ZtuPfvGzeTY8NL9/zWqveZDPkDTanOP/61cVbF7751Nf+fu/OBfGHr27tXXr/1thCm00JD6zecy0dZX70AW6VbpXmAChGM2khTBeyOIlJDRZRNUJjKRiA4nXV4JDV4vR1WiI+oXI88Fe67K9/VR7n7qycCN9VHv9r5ZwdK7iY6G4EF8ZPMgRjnPUl2ZqQTSwOh9E28D7ADZa1GFsrEo0FZcBkHa5r8vhUxncBdzdSaypJic0aDvFwCUyNxi3CowxopcXX2Vcu/MrGb5TpJrq61qL8Sbnjlhn52yz6LVu7Znfb0xOPLZdv1Fy+cbFysvwX5ST93/QnlKcr9LXKgOf+lbJMzRfSWTRh09+/lTD6VGOKZvDjrYRimJMgWsNgKzlXuYUNVDq5XyAYjxqFd45FfdD1xhYF35vRSUd60F8RSdsCejoAnpxsSMC3UjmYkJtOYLTSmSyEkCQWjH/VoZlJiXZmgsGsd2ZFGHUUeVFEoBpEiAYg7Vc/dbtvufTiGzatWHbtl2+f290mivQJZfC02N4xe84G4dHyHdf1Ttvma3bau6h7WaihPf4AfZk20BfuWH7xlHzwLNsRJDEymdzMbAdYCW9CjpbkhoQcSMkJFp4SSrJgAaGlcneFKAhhfcAoquCCp4ADabRgpExOMddzCkhs2AcjCuTkCeKw19PGvMpGjM2QQkMUZLnRF27BtoRYCE04nwEB9z7FAjZ+EEEwcOBP+UMVTgyrxgWckEiMgkieZUWk/oyGZPqVjyzKcWWZctyifERZFPGk8hzX3J+RMv3s7SxDMoSNPOntwXhd2/Ge3mbluZP4oerT/RlQZ4AtKGALhdiJCzzzZqBeFOgXB9+cyglGHowfWjAYL3sZ9GuB9zFz0gF0aXDA6J31Tcjsckg8pNUgnnOhHRgOhFvbEP6xSFyWdiZdFOmho8gGNDKVRm1UDPOusMi7snAe1YiarIG6MpR4uB+LLSL3Y4+n3CvarbZyr+eWb387w2mUd957j3oPvv/BB72c5j3lHep9r/wpvffbvJO+1lxPX6upUdrrm5V2n1Npq6mhx50PbdqkPK48TtPP0q4HnqWp8rMPPfRQOUCXPfgs1/TsA3RZ+dlNvzmLhzJkKXmGPMZ4yF6SexLy90rynETV9fnRONcHsYUaWLoHzq4pydeoxAKm+TGGmNqAaZbm5HvEQ88sX9d7AOlyjbVYJ1yNWqJBzNtqNXZvoCPZ3TNn3qVbbv/6Y/9aHGaAuccOtjUyaTIC5jnguD5N9RZv97zvY7xTswjudSRTuc/xjIRUMoSgOM5FUfJAxwjRSCgasWY7Q1lA1wLHJFLIwjSgYz+V70RD4oqwpwSdltPg/U40G3E0wFoA1U5mR1B44RJvZ+PgUEbQvOCVDo033AS74vJyzGTjBWWP4ldgMIFMwbhXJMSU3nl8rp436bVv/Ynetnby0n0vbd8hRztnb9usPH3wceWDvjl1S5fR9iLn/6Vy8Gf3iY994Vrq2zV31r3lr93Dm+hl1PrQN6n3slDgSuU3+7+hvH7VVWuoqH/gqk3/PnmKs3/mmxcusTtSyZUrF0TSejGVXjwwOVerjTW3JOKz6jiTweGcMbfPFo9Y+2KxFf45Wm5wd+8FV3jqw+9s3taVjQQ/uOlL3+e1Swfv2HbtwIqfUIdxw+K1yl+v2jHlc1y6t5Tb3vz7y7fdvPPYQ0P2jueuu0956tpdWzyNv93/EL3q6w/+L6/W8rZy74dfOz27z5xzfE2598R+GMU26c5duegX79Xqdm7eoPz6+mue9/oHLl7xzpx59u6eSy9bvLjeNdHVN2FZ3yyNtjs7EJ5qcWhoV4z3zvF4/UIsMHdRNKs3NDRfcMW0DQmr5ao752xYF4tt33nddXe6bG/cvnf79tZgU4A6fsJteLZnnn1yz/oNpOoj6gnw/nxyJbmR3EFvIrImIa8tyVJCvjUl31SSdyeL0k3o8kl7DLHiTRKe3vQlcBRvssjXIyoHxBlNyJtSciuIyJ0JOXFCXl8avnB9Qh+TSQkDHxeW5PWWQp6l+2SXRc6W5GwCTgo7oMlXGr7ct0PNcfkshT3QdHNSvr0k35Is3r4Hf+32W+GH99yOp3skcDvvUrGsYevIsIplZ1nkmSOFQe4TednID4UdIy1qc59FnjFSWMp/Ii8fKcyaqYeG4Zl9M2yxQt8MPXxouG/WTFtMHrQMLx1cBq2Dy/TyUsvwsqXLbTFyZMbMvlmDS5ctj1f+6DktDArn14NIZjSbUKxdYnHl2utRcH07QDeK7ihahsKeGtAFE0C0pbXQSgDRoTa4SSw6XUzKo9dDszuxfoeKGuxeQGs94P/GhQSNc2mQPowqxwX0dH0gYBhKBqNqN6G3zLlMvM7EZ9M9fLYHmsEHdoDdAQ+44tMBGNSZABXGeZphTrQDHWopf90LX9j5i39Zl6zzeTpD/iU2m6ve5gq3dfvqLc3eeL39nvuURuXjb8ye55u+8ouzbV16quUESo2NJtuUOXfuSiVnt1hfDcSmheqDA7Paa4O2VM+0UHPt0986+rurU00r4l2XX5B0TbampzRNWjO9w8EfZYAKnGP6y95rLu1KDm6VprfMmNKebfb0mm2xjoTT6Yn09ixPxuZPhQvLkpvyBxd3bbikr1XDiYJZZ6ox69xtcVuDoHPGfJ7++X2WxMKOVrOhRtTxfCiebU2mvFvvOiAc2pQPtuZWbt+R3jrZ5rHmLtq6qXzqjF+uYvovg87vAr6/CP3qvgTLrq5A9V5IA3cBgzYni+ksslw6AbyetSAUAJtQWAnKPU1hzi9cMohznhULgb4cWjorThTv5ZupVwMk16CWFE1qyB/OvBygIL/YAfoT9GtcGw12MBBkovgRXZy/qaZv+syDBwuP3L9rpbuhtuWqi6/ItsQ2br5285VLp4lWytWIvpap4fSmxTNsVv8F07sstGvaK7vWu7jg1EUrVg7k7bbeX+/NtTQ28GJjvcFwUueaNEH45iM/XTl/22QfZ2pqMBo0tllLvvLo725YfvtA1qapq9NplT/ytYFAe7SlzsY1eGvraH0gZgq188Xyu3W+lfO/PffmFXPa/WY95Sw3JKe1r1owb1JbTe1LBt/6TYg37wI6bgc6+sm14JUi3mopFRtakHANDiDchoR8eUlekmApwSXVlCCVr0vI3hPyCnBRS8WAl0WU1oGUewN46iXwyRWWQpyB+GK8jmUNe0D0rwfqB7wgTr5cIb4CjKPgaGjRz9uJAlUnymYQspYGuA1Sd/kGkCpzPMDuLRGH67ykE0/1iNiZV0oxnl1xTHVOHXOPoiA6oQh4SFlw/NH4MfSKmZ3I+H9wH6PhzuoTldvBAE6pw67ewH/wzRXkW71/15dO7r7rmhn9T9Kud3bbUvRLJ2/ZtfHCuU8qP3tntzid3tmZXnrNkX1bN3dPDgSnTFoyb9PyxqDfLwKoXLm6LebzOhoSmUCgoX5SbtHg5js2bsjlsumVl37x4ik5v79n2vr57QlXo9PR5IulgyHNfbtPfqm/dvc7ys+eXLVkaDNcTTJ9+R3a9eTgwI7yX/rnz01MjccXL1m3bEpPJNrYUG/XG6xml90TD4R8vp4OmzMUXJlMtLc3uFuic2avXnvBtJYWN4CyZm8yP6HN6fQF0hNdbr+f+QcgY1rMcSbJCiK3If4uRttYGrcOpzyVkHUnZLFUFHXYKLZiLYjYwN697D0IHKATWaEIBrvTWIihg9l0wLRGEVARllQE7QgThMoOE4laM0Wwbdfqxt5iNOlk2Bu8YSqNTNy0Ok91tW6rf/lMi15PD2T6OyJO+N+fySMeVvLTdvRd1ErB97nkkY9v14jt/qbFDyxaciAc6c9M6K3zR9kbPDrU39LRwsIBJbpXl9JtJxPJJDKbLCJryEayg9xAryaYe5xaki9LyMtLxeWXwWjI8kHg55Usgr4hJc8rFdPrrsG6mK6E/IUUxmEBYTsS8paSvEP1qr6YkNtPyN2l4WR3+5gVTZbkbkuhH2RiQUleYCmshbOhkjxkYcGdSEnehtbYVhq+LjJdj8Gwwo2VoM9P/rJLtYg6i6wfKbiFT+SGkR/++eC/PYLNBXeDHsNB9SOFWrhTN0Ke1ulr6+ob3FXL95lrZve620VrIZEGDdgvDvOaLiZbC6zF1oGlqBbXisNT+5azUP6QdXjCiktYAnW6mDdYHE3eq7Zs3/kFbIhYC6FrMOKxaDlMb3dOnicejrQnQpOnq8m7w+A4kZ3X4QUvFjVNffjdDmtB2wh2c8cW6ILNynyuSnLKBrLq0qBkO5kRjIZ5p0uNMamsgUAZhDdOs3Z4HMMgTrsTYTOGkjFH4GQhKbs2YE+D18KEGy6ZEIfSnexOtegHv5qFUkpXD6zpPvL7lRqr1UFz9QMdc9avn9O3VqOcmvfb73WvG9jZFTe9oDylbFP+9QVLW2ZtS2KJp23CpIVP0OB3n6TBJ55Q3nryu8pb26bFE9N6V3pbzV13/0uXudVrHvzB0UH6L9MugVba0Z5vb8/TgY5YbkK78JWBqwdWG+hLzppazawJE9d/bf3qvm7li7WrBq8eyK5oTE689d3du39/a7KzcXkm0dTfE8q9cuLpoaHDGzbC+ycre3tX9t4f85q7uszemHlw8H3Wwl+PP9Fe/vGUec0dLZMI1qVwGIOWiAd8wzuI3JiQ21KytlTUNqKYaikwdgtj3tpS1XE8U6pTX5Lr1cismKyk7QJqhUer6kLqeZj1RlasVJNjir1Q247soG0EC9sQCrPpFp82mC31zT4/skGtVTbm1PIwtbajh/qcLocummGlHDyLcYUzriy7PYX6WfUS+Lu6xAUJzYvU+aLmG+vhlNKX7tr7Er9w/TfwQveS8h8/4xcee8WfSPjpe7f96NnbNrR3rAzE4wGlec9zP73tf3XEj+O9Xx2746c/qdbr6DCvHSJTmL/oLMkeFm1ATzHMKCGWZFEtPACvMALjbRQxOF+LI/Q4mRVTS1Uq4QKsKOOI3UWzzmTWRTuRt3QGGgnoME0hgHtfLSSjJEKHhPDesIYOhed0ZsLKG8qb4Y0hLPZgeUvpGJab0dX01qGIsk/I5wU6FBmaA8/RSDiMGAhzf8+C39vL6rDU6j5iM2htGZeBZh2UN2glehVnU+4u/5kz063lD4WH6Ta67eHyR5Sz043lPyt3062cWfka/ygNKt9XXuYP0OXKy8qRcnb7OppSSuu2Kz/hfkxnKW8pB/kXaFo5qPwG7QTWwmCtk5U4yLgCGFuiEqSi4rklL5Xxw8iwxgXLk6oDHdqHNSz70P5wwKlarPMLsnyroYR1VMCOHHx7bQLrjUjBgHVaOrU4xQVYmAdQjaZLgi8pS5KU50dOA9ODZwRoUSpX6ge12F+B1JJ6ghWOWBkDU25EZi+YWKcN1C/SM+WAGEIrY+3KEFgNHi4VuBQyeNU/Vm/D+KeZhMnFjIMcjIOQfSIs0KCyDwaogiU5OBZeAPkp+ICRhusEuwf9i4agaD1c69A0hcIsguBxwDVmV/3hasHiWYECK3gNYELTcS5gophLxlKczT+iGvDnNT/avPlHyqfKO8qnPxJXPPj6B68/uEI90G9LtPUivvCZh+CMM5x5Cg7KQ/QNZYVyYgVRa8W0qD+A7MTLZkUoYe4ea0StCbkGa4sKts9MO6koWo6c3E/J/pNlwoopEWBgWPI04fepZZRn6FhDGkkbuapaQRnDqpJirBmVVCwKSqo+AVxQ0BiSrJRQl6RyOxNRtZaSA8qqcWMMAoZKxQmY5CQTPPDJkKWgZYSXDRbsKYa/4tVSukzKwV4irQb5QGb9oIeEdOdkqrJwIJIBFkYuAoABQ/iU9Gd4FogbZcG7iFtyRyLpCFhVCYQS/j6FZ/E+x566KB2JuBUCz7jH1WpVxtxJ7quOOZOQ0ykspjl3rNnzjvWcYXVV8ELDR19CYCCn4yY5NVJo03wit4+QYlt7CtHAMBzTYzhAqwFma4pEWya0MubLmEG+Erl/Sp2UfzLnpS4Pb9eBzo6CQbb9YyKBKaK8089zkrbd7W7SbXzq8+nF+VwcRzmNEcjWpIPnaYHUnkW3asQzQVIkSyaTqWQ6OVKlZFOiEOpIpVgx3kSgoi9RbEl3p6DFD6yRmYLYrS1R6MpDS3upkJsG1+cS/YJxRG8CmeV8cK+5VBACeLRguLzQ0gbn0VKhFQssohZmFNNdcJ4qFTon4ZEVWRS0eTifWiroe/E4NmEz/ikf2qCVh1f1+Hnnn0d56Tx/5yc7Kk+qas1zirDHtzP/mw7SQd31uusBVxDaw2WxAis5lWKlINVFAmaqtbt0UQrqabDW3tVB7/jd4fCGyOFI5DDXfDg8FDkcDh/+nbLzghV0sD29UL0fPhwZCh8un8Sn8JF34H6SjKv/tsGvzWcWx4VzzDStl2laNdbtVvVrM9abYmxbI5gsCDkMiE5IwYUlmaac3CQOU1JjUFVruodLejnw8iiLbcep1YLV0xaCzFxRiZvpf0mK+PXv73z9wfCZwmmhv6I1d37/64oo0f/avOJBjlf2Ysk02FlWOsef1Xc/WVvtvZdVzVXGEDh3DMHKGA7jGLy+84zCKw4TR00Dq5ezygYcVpG67Syy/I9GxWMd/j8e2a2c9M8Gp6iMcPb4JpDhceMLM10WTBa9TIt7W8A5bGaRgmY/qOXK2FvHjb0Fo4koTnIgWYyyGEQ0DJ9qieJpCxa3RMcoFEPpAwrJQk6OikVXE0vfua0FDdZO/P8j1ljE7Z8RrRoe+x+Q7qxYlgAS1KYn2uOkjtVYxpBLahKytYTJuWjFFrIFGUAvcMs9J8YlvMBLbMcclwd4pUbk670sgzNBPGQUrM0BptGjCC90JkeTH9c/YM2Ex4cDFymiCgCLCCqiPOCCZGcW0Cr4VDrO0ulzWrQ+axUQnbqC1tA2WrOGfqpor1D+Wzmu/PeaP9Jt81741fNz6U7lroff3vhCv1DJbu1nsEkg9NS67dvXKhpFs24bYMpTyl3zBwbm0R10+yOL5pc/VB8+yVVhFWDaKi0QzzYCLVIkzzxyoIBBpUA6gXUypNDcCi6GpUnMsenOG4nO7HJ7wpF2LO+VBWtRa7XlquME51LHBkZdZuqiUcr8TRqxZbFsAdUXkiEYsFEni76y8e77t2/fvW4LDEu586PbwhdpyEWj7Sf3t3UqbSY33sCB//k2ei0jyL5/u5QeN8FtddSX3h1fNB8/9yZ+rjyw/6RJaessH7k7juP/863KbUgTehk93tm2/yRR6w05ieHUGkIMHGbTDBS8B06ieWUE3mheUkbYmzLCk7Ov2TNErbdktQ416AvQsS+R+PzoCLzxeWl0hL2NjgDIPeuaPYMyLVUwXw1orHZyC8EqCUR5rmSyaGbCbDaBWIqOBjSkrNC8YAwzm8pkOg4uQbXm3AI8aivJtupqIcwa1LNEbSEBfGsBtFHkAkEMo7vsWMMzQV37YgDGbcPFMJwhx9zFcAVcahyIeMf/U7O0RDWczGwi0OzPUAQeZJRUrB5aOGxAJIJY7DRxoxlkWVWpTLiRcn78C9oFcxpxHbN3hHrB57kXcDAxgGtFeaqpwdbfHKFv0jeP0N+UDx8+JNyoPF1+n85VDnEuOodyrvL7aL9Uv0aCqTWSVpaf0QGVQMQ11fovdLaFEq6IKegxYEYxHm3gdLggBiuWJOQNaRTr7UF1CPCFoEUUcFHU8v8xPx+1iQFXwhgoWwpE0ZHhySm4AyOEMeJ6mnKeB3IoqL8FNtcj2hH4nJ7VqeFnhSzNoozgSwJHbWQUGQ01VvsqbmCVMg/f4ZMjvKTkR+EbMCmg3ivX4XvFR4Rvhm/1MVTGw4gNTNeDx2VE+eWJqEZyKVv0gz0m6kBxSRgu1ygzl64ssSGOszU6tsahF6tHCqbGFKsf0TN30YZpX7bogZ4o6G3AkipSNldX1bDCqka2BgIoPBYIEtkyAH+aC8EpAE03dfgtHAlRsuXAFvivVtacJuC+HztG99KFtOmnm06TXyjfUSKchT2CU6OW3hyjq18Bv4ls+qnyH8r3lG3HqEDfoEt/gWMgYHt1f9Q9xWhdX/FG7Uy7m6HjDQk0b5iLiGRpD3W6qBM9aFvKVu3q/G3LuI9zDz44ifv7sm0HP/kjd0NqOK38helbSl7eK7x+8fTpF38a2/uyhi2tGz1c1a38WG2JlURInFxKEHg0lIoNGLMnDU4wryDoTSU5jnHI1lJloaAZhbpo1uBD5loMBCcScssJuU0NAbW1YJi+IaBhtqapGUQ22qaWUfhR7zpd6AlGWcESVwnJsaVLWlZKlq36ihLt7KdTnrv5/WXhOUORHQ/sP3nl3KHw1of2nwQu/3m/8pPnbv7Dcko5NiGgY8l3j69ZHh6aG9l2cr+yZmhOeDs6lthI6TY2I6SyPoytdYpiVWIEC+2wUNtaKlrZUiYr5jhgCnxqBfpY9KuJrU1DBXZGbemZI88K0s1NoLY07gjaHrtYqG3G5CFYnAYW8NKLhRq2nqbWigqM5tSot2h3+s6sWGKxr1TFvawsaQKu5ghbjgfdB80jwQGvlE8QPvB5VPK4TIlTlyepLuXzSjdecQTvlCW2ZI/VEgFH3qNFeTERJ8w3Lj1D7ewaVwRhV7EUKOSC3YJDEmpzLBdWAUV2LYavquVXVKogoOULlPXK+gUHKwsHxxDPB68tUIbovgW0pPztKN5U7doqtGuat1E9oWJx0SC3SnqbjqB7IfikEY6sKiN/wqTqsb/qukLvuJWqmoqAj4WBcF3VmQWDevIxUV+0srL0zPs4/0EkIfAfqsE9ISkbS0UjW+ZmBHsma6BBNU6+khxKFut9rGy/CW5Zkyz8x9YI8rmCrx6OQXWNoDUb9YtRTOpaXWIkxFGxGSQ3k+aiolPAikmdi5JrN/yOk/4wa8GvDx5SfvM4L9le71sI5zT0ONwRyIPUteF3ZekPfT+4UlY+jCmnvCfojPJRDp/74TqZ2mJU1/y68sOjDyrvb/idmqvhgaYCrsF0VOmEQS0hUdCMLROkkoDqG4lAqnYIJwHp21KN5ejUaJhepQmWWOE3oJY2jH1RmNkgAQwQLrvE4NooOptobQa4vJ5o/h2+0cbQ680Ew0IupjyaWG6kOYlrHUHu/EkMP9eqS+W04wv9zpQqqTIXUIFtuFqkVCtaMeVeCCBaaPI2I48WeBfc0Zsd9erSg2GDyd6gJuCBwxCwd6Z7aNJL7SYaiFRxrKFyb4Du3KL8N/2qNDL41ae+OohvrVsf3rr1Yfpo9Q6f5/b3KM1gMcn6yiODgzSHD21VpLF7Z9klXKGcJEhTdYWykfEtx9Yp47pkdSlyQUMA7uiNcCZUlAPFhXb+RnpG0aMx5NlS1zL5yxkdz401KtLZGt6g4rbKOmnVk6hGRu5ns13L1mm5U3IOy/2wii6Qkqew7FU+Ibem5GklOcJW5iRY700p6Dqu5+1UNcf4gAgMZpgTm0IhVxJtiA8DIXBmwRhUoRujHZNLwwZzTy8+MFldK6oGPAqTu2DgWAOlclcF1zEuCzr8maC1Gj38zNE6DuHZxq8qPwvtAbbBSEaEQbdx/y8ah/suomxhMb4wFoIQ8FNQRYAGRx9jj9PIWYc32GF0XDBErS8FzIXx6kaSIGhVeLY4iGeGhTdgRpQ3ob1sYhoXjUgJK/3RvGN0sbIiiyW7wPtMVXKe0r4hne7o7i9fkji6bf9Jl6tSGcjtO77PE9x9dNUVu07u7+lVF6Gjjsc8hqBG/4GHopH0VLVcz26mJhoFRwKj4y/SOXPe7z8+h3rhOOdYv5KjByg5cBoRpQ/vHu9/f84c5Z3+1/rfn83NUnL8L0+TA8xBpYggNeia6VAn69g4eVVlVMp1q7qiast5Nd5bjfKqueXXNB9q/hVUtHtsbaohoSJBXHYqa9SkELosUabelO8spR8qtqV0Ka5KXzqo2BTbIF0K9sRGX9NK7LuA6bPUD5+KQuOHS5XvoH6iS5fyI+xZ/BjLK+S12H/0LtEjghbAlGB/yiMCAOE8O2PPoZ3K43OAvQ3sgxz4V3klzxMuXwYva0TJj9WU89BJsNciKcIFTDOgUYGRATxOXl2gTkFDQzc/5zmQeVTQ6lL2qp+gkdi2DVZWG43+ri6ByAP9ARa6YQj5U+gjR9RSX2RGC15oJC05a6+H80VJv4/UL1p8HSm2Wr8o+iei4AqJoj2UxjbAeo5wBtv0iWJ9Sxe2GQAkTshhW22i2NTGIql1paKnHSOpFJUHOVEU1L0i+FJRazSxM+b9Fe31TXhlKxWdbi87YzmRYkhVGcFSMYLR0yRmSABQFtNd3UkWQC12TuqBs8K0yn4SZ4Kenw2C/k+uOSL94z9OOnsDijL5f7tmLMGxXBPLC6EOnsryQiD5jVgXUN2zomlc+bJYjeGDFkX470Gbh1Ere+6cTFoggstXqgaCw3X9akoNa43VXTVUG0HUVBuuYNpHh3gyOj5vpfZPC7IcIV8i2JlACZExgqEIA0N6QDwqpGCl2MU6G1vgb0ZdFlXXkyN2kuuSiJSM6qYFLFeMdcahBAbyCj4jrivTaDm1ulgWwGQTIxN0meKlXIdYSo1+G2gGADLYAL8jmDl7yKExe6hu/wC+Jg5VGj/4SpoOvQK4f5qwPSKYaIyRYX/VDWLxDbXOBXNaDVg/ZgSPIIUOokNdx2ms5u60NZhrKWq0SAANNcSKWg3Lm2OBE4AXK9xvKFVXdfrtBD32CMFpwxH4K0c0Mspbb50mbylvsTlib4L0nvJIu/IXWtdOL6XrKAtFoE1Sj5X1AES1Mc0wW4tJMYKrV7zgtqWq1sb7WWsDM+Q/ARPBZiHkB1tbE0G85I0AePL5Q+ih8GKxkQVd/qEpwlL/gIYdKNBbq/2MVcK9OBRpiA5RhrsBFIG29/nG2yi1YBDe1PGcsZkBXA/sYwPxgngki16Gtr1sIF6E4z6LOkRco6AuTfD6YDAuwvpfoM5/2ntM6TJ7em7PWXcRvimqZf1sr1VOw/xnJXZjAI18NbNcGuaR4HYemAUt1rLitloLkt42tsXI+OScheHaosWMD1rAg0a3i+XdipzRipEvtuYC49UCNurVRtwKRhZVAdHhJGRFA9o6DEVjtyT0cDAIFFEugpPyG5yKfShj/ze5MJ4/Vn6D8dFYHlcgRtJVHYdRtcM1n+l2JRKFPZQ56JVRI46JKmXOgOhHg0PBcPEqHZHB4Uri1LUm3JiMiaAFZxIMIjhwmTRKlzY1TguCX6BlmsRWGjZqcVeWehYNMTKoVDCCp1VwNuTOKEMxGNDiogsH6IZORISRdBYjflhfwKrB8qPq0gsebMfoKxlVGX6KGkJCLZC9J8vWIZEDulW6VeAXd+K8Rlh5VqcahckCxDkhd5TkDgurJnWzzGqhg8e0vEZfO6EddVpaHLaE6tjSEbf1sOiob2oOshhIEgTtsIf4Qy24x4ncKQ5TTT1uqCGbrYe1xjqLzaX6KVmsZIpmNZ1ZPusCzJZ18U5X2IV1TjqXLqzV2XRYzhjVRW2RqKaq9w/8Qa//wyQ6MdHtuOOl6ZbpL93p7ErRiZNYs/Jq21QnNBv001+6w9GVUl7lIgyFcX+sNnYnzvcwfony6qTKd0M7Z6yAN/6s/ZfYbKo7MLnHrNnYnkYudQcmnDkXOG2HcQcm0c6o4jYj9bQ6YnWcswsT27EoS7U22skWEJ6zG1OSth2/9QvlGbPK3NFZyvHjt52zL1PyuHJ8Fnf0izRVnrHrtuO07Zx+byIon+D9mJn3Y8QobKW+pIJHm5jmr2Wrprlk0cjKHI2o6o0WNAg65vagodYn2Rh16MKZbKCQRLFgBqll7ipu08SwLC41dWDyyFLBxdUCNNQvAsjvKGK/is0+zA5azLOi/yKQU79gJqu/arjOyDBivCZS9dnVgJWgUv6Mz872E2ABY9XJQcj4qRqPIWNxAO/ZsYPq15XGBRFQflSPX40zs32OJLZfGa5P01U+VMGo+AmbGsmFIai/qwLWcZ/lznyWRw0w9lnKdoFSd9ZSt3Eqs2+o7PNExu/zRKr7PPGUbVSir2KuaZW9Sf7/oS46DnWdKWQaZeuEkTAV+IHICm+cUmGXhpzKjIu9Vvqo4q4bSLEJ+/j/iLx045DX58CuELDkIU6jFZqZ1J0XcdmqiMtf+Xd+xFXdb0tSR3n6rJFzn4VcZdx4ipkBtbDr1HjUdbYsukgH0yF2dY+PsRmqT7C949REkA7tvFkEg5T7nD3b+JQYPHfftiLrV2xk5LMqgn+PdWYU+nlWf8xj/bGx/piYZR/fH5Or2p/a8/VnfHj+3P58+0zs5rM9EpLj4zfj+4R5zytZnxIlrLv2sB2R1OwnatumUrGJ7UHSZMNUugWjkyj+uIFAE+CGw7yxtq6NmamI+LRBMLfGO1JqbVmqOpbW847Fxcriseod/3loCivlqxX0wYD1c8fJrfzymkiju74+c0Gj+2XROmMgHF685KuHas87dP74oT6L2Bhsagy0trdNywU8dkd7ZtKkhZunTTuTsmBreNWcBagrm8jyWgA5VKEDXvPRt1mC6O1znsWkEjwrsN0GcZdB+rbiUz/B8l7VfBnm5KzECTKJ1HawiJcJdD83tilbTRJj5hgXRtWQsvltNGhLRYM2dp6iPJzDbw/SxYMgBo4TMWmkcgmC8Ue41LCYdBmVAOKlsYtKXlHViaCy3Jir7bRGQmYajQgfW7Zwt3G3bbH8XHltyyOPbFFe09yhPD9UfpC7Yoh2/0kc+vrXh0Tmz5C19KTuAW0zKHgD7h9po1nepmbvMPlrW0s7Xj927HW66WNKPqb3vE4TyrHXfykQJbeX5mhu7+iyHoH0jD6+l75IX9yrvFipSQBtVcknNpAw2U5QNtwsWNhUwhC6L1XZqC6IMUJW82hEzizogkkgYBMjoAYVGior/GiTutGFP6lmhDGn35zAckhAB00YDMWwaDAMZzyXY1un0TBLYxrO4wenRBUL+3m2V4dWrdYcq2XK9Et0rNBCzXxKSiXxiVJXfaqfZir7iJw+z7g96B2q4/aoK8e9bJRw7VYLg21qvVGjG/dt1KGf5XZVh2LyIMQ38Ll/NpjM5w+CZUP/Yfel8/S7mZB/8HsYYYt+3i9upBb6/EXKvsP/8FdnKB/RF/AptjdeRe40oNu9LP6vHxfx1luBCryWVGoxUIR5MD1J4hCjcRrEXY9YGQOmawC37ZvzzJrTiDlYXQP+Q/yg4KaGyvF9c+YqUiWeWJUbN8uhYozdlMBELylwtZWlJoazfoee5yfO/tpxuSIeaJgmiIlslV1SixqhGgVgOsFXRT5+/E2NwPYnqSAgMclWt/ApdEDjPG7pwAr0grlUz8a+mZv7+zfPRI5Tz/o29qRyiB5OEQzvY5AaX+Wxs7G9ZHCvUZE4SD/zqNT6aFoqaulYUIIf22NSrSwQ1FwOAPOCoAPDoDfWmK02dT2GbMqNA4tZrMhvpv5ohDn80J3TmObhydYtZbJlK88qCFiUCcgGfw9vhT/+YUrO8vccIDPziGrRCzXOJMv56FXBEU7IzlJRcGJnBeysU/UYakrFGrZFVg0AHSZOLmdVnCpoDNwCH/HQ8ZhMXS+AzEvb6OO0jVU8Eqw15TD8TBm/SjDdMMWV4o9+PsOwCcbpOMLipXWsx0sYDjaxPVvVdQCc2mWgo4m5CyZ1m1bAXm7MjmtUsddYWTE6KThMIq5rkJ0iXMqeSjhbZAubdGyVUzCcQssZo5nKEbswtC83sPbobmVkBFO4I2oxCoLbfUNLZ0UfumT3UUwBS8waYn2Q2ucapHANm38OQ7cFXp9Sly2o2VGsAZ7i/NP7rAaYi8v6uMxZCgbtJ7iTJ6/9hB/meL2hUgGMFM6mbMGsXxfkUzpOapE+klroCDtwhEXRykSq1gVJDPtj5Kx3XDU4VavBAZnUlHBr10oG0QYkqqFqjZ5GLBhMqB9FARFIbS43lluMUp6r4grE+5iJUfIjFVTNPACJy4+UV1EfPYMNNGx/D+Q5DUNxDsD+VlLdv7gpUUm12ERXVufCGIorymQzG3VlRcqyttID7z7wAALWBx54l66FkcIRrh94AFrQMuMlrsiAw+i7WHOjEPUTgsSeY/VWGN8fOW98P4V1VyP4bzSv5gzgUs80JuBvbGW3Vewi5FndFsfqtli7nozm4S4V8pWaLg7zHaIAjfj6WCL/F8P1u2sAAHjaY2BkYGBgZjjy6Mpmh3h+m68M8hwMIHDua+N+ZJqDgQNCMYEoAHf+C1gAeNpjYGRg4GD4fwNEMjD8/w8kgSIogBUAY/wD9XjaNU+7FcJADJNNCvq87MMOvEdNxRyq0mWH1GEWegZhACz54nvnj+yTzvGDLQ8gKr8iEQDBRDKqgmqZMMq7/y5kd/UdCLFiC+ITZiivaz6fR0er6d054SksUgzmU3qFEXdFzV2Ez8Ywlc/m5Pilsr2VWitP/bGJ4wvDWi96P3Not+n2B3lgIYIAAAAmACYAJgAuAJIA3gFaAaABrgHkAjoC1AMkA4IEUAUiBXAFzgYgBw4H7ghiCPYJsgp4Cq4LCAs2C4AMHAyiDiAPnBBAEUYRvBMwE7wUHhRaFIYUshTcFVAVgBX6FpYXXBeSF/AYYBkCGYgaBhooGkoa1BryGyQbQBtsG5Yb+Bw2HLAdLh1yHYYdsh4cHjYeYB7iHyYf3iAgIFIgdCCaILIgxiDcIPAhBiEkIegiOCK6IxAjeCPQJDQkbCS8JVIlriYWJjomWCZ2JpQmoib0J3QnvCgGKJAopii8KQApIilMKcgqJCpiKpwqyCsUK2QrvCwWLFYsnizgLPYtBC0SLSAAAAABAAAAgAC9ABAAAAAAAAIAAQACABYAAAEAAYEAAAAAeNqNkr1OAkEUhc8CmmBhRSysNtFCTfiXqFBZiIkaQzRqZ7KaBYz8CStg4/PpC1j6EJZWfjMMwSCFmczOuWfOPffOzEpa0avi8hJJSZ/MCfaUIprgmFb15XBcZW+qSWjTKzu8pLF36/Ay/IfDSa173w6/aS2WcvhdudiOjlXTmXwNFaqvgR7UVYe4wOzC+AqIX1hboMiq/qpHoEhNUN0yESjUWPd8e0RT3RaaiNFTWVnGyI6MGuw+s5qKDfgWGSa3Q42QmYXtwabxD/SE0vi0YTZUdRWP/tTb5nTGw/Rq/LrW74K4QTVznr6KeOUYRVV0pVPd6By0KC89l7lI489prufu6Xe1mi5hJtGMbaKMnN+Q/bzdy2iPb4UTB3rE02jqsOae7nirjEp27uNR0MG/+j+BD21Xh+y24Qf2tjvcQYjr7CUnPVStm09eYLPycKb/Em9Zoq755u2fk2Pd/QGe+3ARAAB42m3S1XIUURRG4VmDBHd3d5k+Z5/uBIdAcHd3CRI0OBRPyCshmRWu6Kqp/6brm9qrutVujTy/frZS63/Pjz8/Wm3ajGEs4xhPDxOYyCQmM4WpTGM6M5jJLGYzh7nMYz4LWMgiFrOEpSxjOStYySpWs4a1rGM9G9jIJjazha1sYzsdKhKZoFDT0EsfO9jJLnazh73sYz8H6OcghxjgMEc4yjGOc4KTnOI0ZzjLOc5zgYtc4jJXuMo1rnODm9ziNne4yz3u84CHPOIxTxjkKc94zguGeMkrXvOGt7xjmPd84COf+MwXvvKN7z3DQ4OpDPT/3YGq03ErN7nZDbe4tdu4vW7fyCa9pJf0kl7SS3pJL+klvTTqVXqVXqVX6VV6lV6lV+lVepVe0kt6SS/pJb3U9bL3ZO/J3pO9J3tP7oy+X7uN2/3/0Amd0Amd0Amd0Amd+Od07wi7hF3CLmGXsEvYJewSdgm7hF3CLmGXsEvYJewSdomkl/SSXtLLelkv62W9rJf1sl7Wy3pZL/RCL/RCL/RCL/RCL/RCr+gVvaJX9Ipe0St6Ra/oFb1ar9ar9Wq9Wq/Wq/VqvVqv1mv0Gr1Gr9Frul7xuyp+V8XvqnTyb1UoNRm4Af+FsAGNAEuwCFBYsQEBjlmxRgYrWCGwEFlLsBRSWCGwgFkdsAYrXFhZsBQrAAAAAVLP0T8AAA==) format('woff'),
|
20 |
+
url('../fonts/genericons-regular-webfont.ttf') format('truetype'),
|
21 |
+
url('../fonts/genericons-regular-webfont.svg#genericonsregular') format('svg');
|
22 |
+
font-weight: normal;
|
23 |
+
font-style: normal;
|
24 |
+
}
|
25 |
+
|
26 |
+
|
27 |
+
/**
|
28 |
+
* All Genericons
|
29 |
+
*/
|
30 |
+
|
31 |
+
.genericon {
|
32 |
+
display: inline-block;
|
33 |
+
width: 16px;
|
34 |
+
height: 16px;
|
35 |
+
-webkit-font-smoothing: antialiased;
|
36 |
+
-moz-osx-font-smoothing: grayscale;
|
37 |
+
font-size: 16px;
|
38 |
+
line-height: 1;
|
39 |
+
font-family: 'Genericons';
|
40 |
+
text-decoration: inherit;
|
41 |
+
font-weight: normal;
|
42 |
+
font-style: normal;
|
43 |
+
vertical-align: top;
|
44 |
+
}
|
45 |
+
|
46 |
+
/**
|
47 |
+
* IE7 and IE6 hacks
|
48 |
+
*/
|
49 |
+
|
50 |
+
.genericon {
|
51 |
+
*overflow: auto;
|
52 |
+
*zoom: 1;
|
53 |
+
*display: inline;
|
54 |
+
}
|
55 |
+
|
56 |
+
/**
|
57 |
+
* Individual icons
|
58 |
+
*/
|
59 |
+
|
60 |
+
/* Post formats */
|
61 |
+
.genericon-standard:before { content: '\f100'; }
|
62 |
+
.genericon-aside:before { content: '\f101'; }
|
63 |
+
.genericon-image:before { content: '\f102'; }
|
64 |
+
.genericon-gallery:before { content: '\f103'; }
|
65 |
+
.genericon-video:before { content: '\f104'; }
|
66 |
+
.genericon-status:before { content: '\f105'; }
|
67 |
+
.genericon-quote:before { content: '\f106'; }
|
68 |
+
.genericon-link:before { content: '\f107'; }
|
69 |
+
.genericon-chat:before { content: '\f108'; }
|
70 |
+
.genericon-audio:before { content: '\f109'; }
|
71 |
+
|
72 |
+
/* Social icons */
|
73 |
+
.genericon-github:before { content: '\f200'; }
|
74 |
+
.genericon-dribbble:before { content: '\f201'; }
|
75 |
+
.genericon-twitter:before { content: '\f202'; }
|
76 |
+
.genericon-facebook:before { content: '\f203'; }
|
77 |
+
.genericon-facebook-alt:before { content: '\f204'; }
|
78 |
+
.genericon-wordpress:before { content: '\f205'; }
|
79 |
+
.genericon-googleplus:before { content: '\f206'; }
|
80 |
+
.genericon-linkedin:before { content: '\f207'; }
|
81 |
+
.genericon-linkedin-alt:before { content: '\f208'; }
|
82 |
+
.genericon-pinterest:before { content: '\f209'; }
|
83 |
+
.genericon-pinterest-alt:before { content: '\f210'; }
|
84 |
+
.genericon-flickr:before { content: '\f211'; }
|
85 |
+
.genericon-vimeo:before { content: '\f212'; }
|
86 |
+
.genericon-youtube:before { content: '\f213'; }
|
87 |
+
.genericon-tumblr:before { content: '\f214'; }
|
88 |
+
.genericon-instagram:before { content: '\f215'; }
|
89 |
+
.genericon-codepen:before { content: '\f216'; }
|
90 |
+
.genericon-polldaddy:before { content: '\f217'; }
|
91 |
+
.genericon-googleplus-alt:before { content: '\f218'; }
|
92 |
+
.genericon-path:before { content: '\f219'; }
|
93 |
+
.genericon-skype:before { content: '\f220'; }
|
94 |
+
.genericon-digg:before { content: '\f221'; }
|
95 |
+
.genericon-reddit:before { content: '\f222'; }
|
96 |
+
.genericon-stumbleupon:before { content: '\f223'; }
|
97 |
+
.genericon-pocket:before { content: '\f224'; }
|
98 |
+
.genericon-dropbox:before { content: '\f225'; }
|
99 |
+
|
100 |
+
/* Meta icons */
|
101 |
+
.genericon-comment:before { content: '\f300'; }
|
102 |
+
.genericon-category:before { content: '\f301'; }
|
103 |
+
.genericon-tag:before { content: '\f302'; }
|
104 |
+
.genericon-time:before { content: '\f303'; }
|
105 |
+
.genericon-user:before { content: '\f304'; }
|
106 |
+
.genericon-day:before { content: '\f305'; }
|
107 |
+
.genericon-week:before { content: '\f306'; }
|
108 |
+
.genericon-month:before { content: '\f307'; }
|
109 |
+
.genericon-pinned:before { content: '\f308'; }
|
110 |
+
|
111 |
+
/* Other icons */
|
112 |
+
.genericon-search:before { content: '\f400'; }
|
113 |
+
.genericon-unzoom:before { content: '\f401'; }
|
114 |
+
.genericon-zoom:before { content: '\f402'; }
|
115 |
+
.genericon-show:before { content: '\f403'; }
|
116 |
+
.genericon-hide:before { content: '\f404'; }
|
117 |
+
.genericon-close:before { content: '\f405'; }
|
118 |
+
.genericon-close-alt:before { content: '\f406'; }
|
119 |
+
.genericon-trash:before { content: '\f407'; }
|
120 |
+
.genericon-star:before { content: '\f408'; }
|
121 |
+
.genericon-home:before { content: '\f409'; }
|
122 |
+
.genericon-mail:before { content: '\f410'; }
|
123 |
+
.genericon-edit:before { content: '\f411'; }
|
124 |
+
.genericon-reply:before { content: '\f412'; }
|
125 |
+
.genericon-feed:before { content: '\f413'; }
|
126 |
+
.genericon-warning:before { content: '\f414'; }
|
127 |
+
.genericon-share:before { content: '\f415'; }
|
128 |
+
.genericon-attachment:before { content: '\f416'; }
|
129 |
+
.genericon-location:before { content: '\f417'; }
|
130 |
+
.genericon-checkmark:before { content: '\f418'; }
|
131 |
+
.genericon-menu:before { content: '\f419'; }
|
132 |
+
.genericon-refresh:before { content: '\f420'; }
|
133 |
+
.genericon-minimize:before { content: '\f421'; }
|
134 |
+
.genericon-maximize:before { content: '\f422'; }
|
135 |
+
.genericon-404:before { content: '\f423'; }
|
136 |
+
.genericon-spam:before { content: '\f424'; }
|
137 |
+
.genericon-summary:before { content: '\f425'; }
|
138 |
+
.genericon-cloud:before { content: '\f426'; }
|
139 |
+
.genericon-key:before { content: '\f427'; }
|
140 |
+
.genericon-dot:before { content: '\f428'; }
|
141 |
+
.genericon-next:before { content: '\f429'; }
|
142 |
+
.genericon-previous:before { content: '\f430'; }
|
143 |
+
.genericon-expand:before { content: '\f431'; }
|
144 |
+
.genericon-collapse:before { content: '\f432'; }
|
145 |
+
.genericon-dropdown:before { content: '\f433'; }
|
146 |
+
.genericon-dropdown-left:before { content: '\f434'; }
|
147 |
+
.genericon-top:before { content: '\f435'; }
|
148 |
+
.genericon-draggable:before { content: '\f436'; }
|
149 |
+
.genericon-phone:before { content: '\f437'; }
|
150 |
+
.genericon-send-to-phone:before { content: '\f438'; }
|
151 |
+
.genericon-plugin:before { content: '\f439'; }
|
152 |
+
.genericon-cloud-download:before { content: '\f440'; }
|
153 |
+
.genericon-cloud-upload:before { content: '\f441'; }
|
154 |
+
.genericon-external:before { content: '\f442'; }
|
155 |
+
.genericon-document:before { content: '\f443'; }
|
156 |
+
.genericon-book:before { content: '\f444'; }
|
157 |
+
.genericon-cog:before { content: '\f445'; }
|
158 |
+
.genericon-unapprove:before { content: '\f446'; }
|
159 |
+
.genericon-cart:before { content: '\f447'; }
|
160 |
+
.genericon-pause:before { content: '\f448'; }
|
161 |
+
.genericon-stop:before { content: '\f449'; }
|
162 |
+
.genericon-skip-back:before { content: '\f450'; }
|
163 |
+
.genericon-skip-ahead:before { content: '\f451'; }
|
164 |
+
.genericon-play:before { content: '\f452'; }
|
165 |
+
.genericon-tablet:before { content: '\f453'; }
|
166 |
+
.genericon-send-to-tablet:before { content: '\f454'; }
|
167 |
+
.genericon-info:before { content: '\f455'; }
|
168 |
+
.genericon-notice:before { content: '\f456'; }
|
169 |
+
.genericon-help:before { content: '\f457'; }
|
170 |
+
.genericon-fastforward:before { content: '\f458'; }
|
171 |
+
.genericon-rewind:before { content: '\f459'; }
|
172 |
+
.genericon-portfolio:before { content: '\f460'; }
|
173 |
+
.genericon-heart:before { content: '\f461'; }
|
174 |
+
.genericon-code:before { content: '\f462'; }
|
175 |
+
.genericon-subscribe:before { content: '\f463'; }
|
176 |
+
.genericon-unsubscribe:before { content: '\f464'; }
|
177 |
+
.genericon-subscribed:before { content: '\f465'; }
|
178 |
+
.genericon-reply-alt:before { content: '\f466'; }
|
179 |
+
.genericon-reply-single:before { content: '\f467'; }
|
180 |
+
.genericon-flag:before { content: '\f468'; }
|
181 |
+
.genericon-print:before { content: '\f469'; }
|
182 |
+
.genericon-lock:before { content: '\f470'; }
|
183 |
+
.genericon-bold:before { content: '\f471'; }
|
184 |
+
.genericon-italic:before { content: '\f472'; }
|
185 |
+
.genericon-picture:before { content: '\f473'; }
|
186 |
+
.genericon-fullscreen:before { content: '\f474'; }
|
187 |
+
|
188 |
+
/* Generic shapes */
|
189 |
+
.genericon-uparrow:before { content: '\f500'; }
|
190 |
+
.genericon-rightarrow:before { content: '\f501'; }
|
191 |
+
.genericon-downarrow:before { content: '\f502'; }
|
192 |
+
.genericon-leftarrow:before { content: '\f503'; }
|
193 |
+
|
194 |
+
|
195 |
+
|
196 |
+
|
197 |
+
|
assets/css/jquery-ui-classic.css
ADDED
@@ -0,0 +1,575 @@
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
1 |
+
/*
|
2 |
+
* jQuery UI CSS Framework 1.8.16
|
3 |
+
*
|
4 |
+
* Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
|
5 |
+
* Dual licensed under the MIT or GPL Version 2 licenses.
|
6 |
+
* http://jquery.org/license
|
7 |
+
*
|
8 |
+
* http://docs.jquery.com/UI/Theming/API
|
9 |
+
*/
|
10 |
+
|
11 |
+
/* Layout helpers
|
12 |
+
----------------------------------*/
|
13 |
+
.ui-helper-hidden { display: none; }
|
14 |
+
.ui-helper-hidden-accessible { position: absolute !important; clip: rect(1px 1px 1px 1px); clip: rect(1px,1px,1px,1px); }
|
15 |
+
.ui-helper-reset { margin: 0; padding: 0; border: 0; outline: 0; line-height: 1.3; text-decoration: none; font-size: 100%; list-style: none; }
|
16 |
+
.ui-helper-clearfix:after { content: "."; display: block; height: 0; clear: both; visibility: hidden; }
|
17 |
+
.ui-helper-clearfix { display: inline-block; }
|
18 |
+
/* required comment for clearfix to work in Opera \*/
|
19 |
+
* html .ui-helper-clearfix { height:1%; }
|
20 |
+
.ui-helper-clearfix { display:block; }
|
21 |
+
/* end clearfix */
|
22 |
+
.ui-helper-zfix { width: 100%; height: 100%; top: 0; left: 0; position: absolute; opacity: 0; filter:Alpha(Opacity=0); }
|
23 |
+
|
24 |
+
|
25 |
+
/* Interaction Cues
|
26 |
+
----------------------------------*/
|
27 |
+
.ui-state-disabled { cursor: default !important; }
|
28 |
+
|
29 |
+
|
30 |
+
/* Icons
|
31 |
+
----------------------------------*/
|
32 |
+
|
33 |
+
/* states and images */
|
34 |
+
.ui-icon { display: block; text-indent: -99999px; overflow: hidden; background-repeat: no-repeat; }
|
35 |
+
|
36 |
+
|
37 |
+
/* Misc visuals
|
38 |
+
----------------------------------*/
|
39 |
+
|
40 |
+
/* Overlays */
|
41 |
+
.ui-widget-overlay { position: absolute; top: 0; left: 0; width: 100%; height: 100%; }
|
42 |
+
|
43 |
+
|
44 |
+
/*
|
45 |
+
* jQuery UI CSS Framework 1.8.16
|
46 |
+
*
|
47 |
+
* Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
|
48 |
+
* Dual licensed under the MIT or GPL Version 2 licenses.
|
49 |
+
* http://jquery.org/license
|
50 |
+
*
|
51 |
+
* http://docs.jquery.com/UI/Theming/API
|
52 |
+
*
|
53 |
+
* To view and modify this theme, visit http://jqueryui.com/themeroller/?ffDefault=sans-serif&fwDefault=normal&fsDefault=12px&cornerRadius=3px&bgColorHeader=eff8ff&bgTextureHeader=04_highlight_hard.png&bgImgOpacityHeader=75&borderColorHeader=d1e5ee&fcHeader=333333&iconColorHeader=21759b&bgColorContent=ffffff&bgTextureContent=01_flat.png&bgImgOpacityContent=75&borderColorContent=d1e5ee&fcContent=333333&iconColorContent=333333&bgColorDefault=eff8ff&bgTextureDefault=04_highlight_hard.png&bgImgOpacityDefault=75&borderColorDefault=d1e5ee&fcDefault=333333&iconColorDefault=333333&bgColorHover=f7fcfe&bgTextureHover=06_inset_hard.png&bgImgOpacityHover=75&borderColorHover=b8d7e5&fcHover=000000&iconColorHover=333333&bgColorActive=ffffff&bgTextureActive=01_flat.png&bgImgOpacityActive=65&borderColorActive=d1e5ee&fcActive=333333&iconColorActive=333333&bgColorHighlight=ffffe0&bgTextureHighlight=01_flat.png&bgImgOpacityHighlight=55&borderColorHighlight=e6db55&fcHighlight=333333&iconColorHighlight=21759b&bgColorError=ffebe8&bgTextureError=01_flat.png&bgImgOpacityError=95&borderColorError=cc0000&fcError=cc0000&iconColorError=cc0000&bgColorOverlay=aaaaaa&bgTextureOverlay=01_flat.png&bgImgOpacityOverlay=0&opacityOverlay=30&bgColorShadow=aaaaaa&bgTextureShadow=01_flat.png&bgImgOpacityShadow=0&opacityShadow=30&thicknessShadow=8px&offsetTopShadow=-8px&offsetLeftShadow=-8px&cornerRadiusShadow=3px
|
54 |
+
*/
|
55 |
+
|
56 |
+
|
57 |
+
/* Component containers
|
58 |
+
----------------------------------*/
|
59 |
+
.ui-widget { font-family: sans-serif; font-size: 12px; }
|
60 |
+
.ui-widget .ui-widget { font-size: 1em; }
|
61 |
+
.ui-widget input, .ui-widget select, .ui-widget textarea, .ui-widget button { font-family: sans-serif; font-size: 1em; }
|
62 |
+
.ui-widget-content { border: 1px solid #d1e5ee; background: #ffffff; color: #333333; }
|
63 |
+
.ui-widget-header { border: 1px solid #d1e5ee; background-color: #f5fafd; background-image: -ms-linear-gradient(top, #f7fcfe, #eff8ff); background-image: -moz-linear-gradient(top, #f7fcfe, #eff8ff); background-image: -o-linear-gradient(top, #f7fcfe, #eff8ff); background-image: -webkit-gradient(linear, left top, left bottom, from(#f7fcfe), to(#eff8ff)); background-image: -webkit-linear-gradient(top, #f7fcfe, #eff8ff); background-image: linear-gradient(top, #f7fcfe, #eff8ff); color: #333333; font-weight: bold; }
|
64 |
+
.ui-widget-header a { color: #333333; }
|
65 |
+
|
66 |
+
/* Interaction states
|
67 |
+
----------------------------------*/
|
68 |
+
.ui-state-default, .ui-widget-content .ui-state-default, .ui-widget-header .ui-state-default { border: 1px solid #d1e5ee; background-color: #f5fafd; background-image: -ms-linear-gradient(top, #f7fcfe, #eff8ff); background-image: -moz-linear-gradient(top, #f7fcfe, #eff8ff); background-image: -o-linear-gradient(top, #f7fcfe, #eff8ff); background-image: -webkit-gradient(linear, left top, left bottom, from(#f7fcfe), to(#eff8ff)); background-image: -webkit-linear-gradient(top, #f7fcfe, #eff8ff); background-image: linear-gradient(top, #f7fcfe, #eff8ff); font-weight: normal; color: #333333; }
|
69 |
+
.ui-state-default a, .ui-state-default a:link, .ui-state-default a:visited { color: #333333; text-decoration: none; }
|
70 |
+
.ui-state-hover, .ui-widget-content .ui-state-hover, .ui-widget-header .ui-state-hover, .ui-state-focus, .ui-widget-content .ui-state-focus, .ui-widget-header .ui-state-focus { border: 1px solid #b8d7e5; background-color: #f7fcfe; background-image: -ms-linear-gradient(top, #eff8ff, #f7fcfe); background-image: -moz-linear-gradient(top, #eff8ff, #f7fcfe); background-image: -o-linear-gradient(top, #eff8ff, #f7fcfe); background-image: -webkit-gradient(linear, left top, left bottom, from(#eff8ff), to(#f7fcfe)); background-image: -webkit-linear-gradient(top, #eff8ff, #f7fcfe); background-image: linear-gradient(top, #eff8ff, #f7fcfe);; font-weight: normal; color: #000000; }
|
71 |
+
.ui-state-hover a, .ui-state-hover a:hover { color: #000000; text-decoration: none; }
|
72 |
+
.ui-state-active, .ui-widget-content .ui-state-active, .ui-widget-header .ui-state-active { border: 1px solid #d1e5ee; background: #ffffff; font-weight: normal; color: #333333; }
|
73 |
+
.ui-state-active a, .ui-state-active a:link, .ui-state-active a:visited { color: #333333; text-decoration: none; }
|
74 |
+
.ui-widget :active { outline: none; }
|
75 |
+
|
76 |
+
/* Interaction Cues
|
77 |
+
----------------------------------*/
|
78 |
+
.ui-state-highlight, .ui-widget-content .ui-state-highlight, .ui-widget-header .ui-state-highlight {border: 1px solid #e6db55; background: #ffffe0; color: #333333; }
|
79 |
+
.ui-state-highlight a, .ui-widget-content .ui-state-highlight a,.ui-widget-header .ui-state-highlight a { color: #333333; }
|
80 |
+
.ui-state-error, .ui-widget-content .ui-state-error, .ui-widget-header .ui-state-error {border: 1px solid #cc0000; background: #ffebe8; color: #cc0000; }
|
81 |
+
.ui-state-error a, .ui-widget-content .ui-state-error a, .ui-widget-header .ui-state-error a { color: #cc0000; }
|
82 |
+
.ui-state-error-text, .ui-widget-content .ui-state-error-text, .ui-widget-header .ui-state-error-text { color: #cc0000; }
|
83 |
+
.ui-priority-primary, .ui-widget-content .ui-priority-primary, .ui-widget-header .ui-priority-primary { font-weight: bold; }
|
84 |
+
.ui-priority-secondary, .ui-widget-content .ui-priority-secondary, .ui-widget-header .ui-priority-secondary { opacity: .7; filter:Alpha(Opacity=70); font-weight: normal; }
|
85 |
+
.ui-state-disabled, .ui-widget-content .ui-state-disabled, .ui-widget-header .ui-state-disabled { opacity: .35; filter:Alpha(Opacity=35); background-image: none; }
|
86 |
+
|
87 |
+
/* Icons
|
88 |
+
----------------------------------*/
|
89 |
+
|
90 |
+
/* states and images */
|
91 |
+
.ui-icon { width: 16px; height: 16px; background-image: url(../images/ui-icons_333333_256x240.png); }
|
92 |
+
.ui-widget-content .ui-icon {background-image: url(../images/ui-icons_333333_256x240.png); }
|
93 |
+
.ui-widget-header .ui-icon {background-image: url(../images/ui-icons_999999_256x240.png); }
|
94 |
+
.ui-state-default .ui-icon { background-image: url(../images/ui-icons_333333_256x240.png); }
|
95 |
+
.ui-state-hover .ui-icon, .ui-state-focus .ui-icon {background-image: url(../images/ui-icons_333333_256x240.png); }
|
96 |
+
.ui-state-active .ui-icon {background-image: url(../images/ui-icons_333333_256x240.png); }
|
97 |
+
.ui-state-highlight .ui-icon {background-image: url(../images/ui-icons_21759b_256x240.png); }
|
98 |
+
.ui-state-error .ui-icon, .ui-state-error-text .ui-icon {background-image: url(../images/ui-icons_cc0000_256x240.png); }
|
99 |
+
|
100 |
+
/* positioning */
|
101 |
+
.ui-icon-carat-1-n { background-position: 0 0; }
|
102 |
+
.ui-icon-carat-1-ne { background-position: -16px 0; }
|
103 |
+
.ui-icon-carat-1-e { background-position: -32px 0; }
|
104 |
+
.ui-icon-carat-1-se { background-position: -48px 0; }
|
105 |
+
.ui-icon-carat-1-s { background-position: -64px 0; }
|
106 |
+
.ui-icon-carat-1-sw { background-position: -80px 0; }
|
107 |
+
.ui-icon-carat-1-w { background-position: -96px 0; }
|
108 |
+
.ui-icon-carat-1-nw { background-position: -112px 0; }
|
109 |
+
.ui-icon-carat-2-n-s { background-position: -128px 0; }
|
110 |
+
.ui-icon-carat-2-e-w { background-position: -144px 0; }
|
111 |
+
.ui-icon-triangle-1-n { background-position: 0 -16px; }
|
112 |
+
.ui-icon-triangle-1-ne { background-position: -16px -16px; }
|
113 |
+
.ui-icon-triangle-1-e { background-position: -32px -16px; }
|
114 |
+
.ui-icon-triangle-1-se { background-position: -48px -16px; }
|
115 |
+
.ui-icon-triangle-1-s { background-position: -64px -16px; }
|
116 |
+
.ui-icon-triangle-1-sw { background-position: -80px -16px; }
|
117 |
+
.ui-icon-triangle-1-w { background-position: -96px -16px; }
|
118 |
+
.ui-icon-triangle-1-nw { background-position: -112px -16px; }
|
119 |
+
.ui-icon-triangle-2-n-s { background-position: -128px -16px; }
|
120 |
+
.ui-icon-triangle-2-e-w { background-position: -144px -16px; }
|
121 |
+
.ui-icon-arrow-1-n { background-position: 0 -32px; }
|
122 |
+
.ui-icon-arrow-1-ne { background-position: -16px -32px; }
|
123 |
+
.ui-icon-arrow-1-e { background-position: -32px -32px; }
|
124 |
+
.ui-icon-arrow-1-se { background-position: -48px -32px; }
|
125 |
+
.ui-icon-arrow-1-s { background-position: -64px -32px; }
|
126 |
+
.ui-icon-arrow-1-sw { background-position: -80px -32px; }
|
127 |
+
.ui-icon-arrow-1-w { background-position: -96px -32px; }
|
128 |
+
.ui-icon-arrow-1-nw { background-position: -112px -32px; }
|
129 |
+
.ui-icon-arrow-2-n-s { background-position: -128px -32px; }
|
130 |
+
.ui-icon-arrow-2-ne-sw { background-position: -144px -32px; }
|
131 |
+
.ui-icon-arrow-2-e-w { background-position: -160px -32px; }
|
132 |
+
.ui-icon-arrow-2-se-nw { background-position: -176px -32px; }
|
133 |
+
.ui-icon-arrowstop-1-n { background-position: -192px -32px; }
|
134 |
+
.ui-icon-arrowstop-1-e { background-position: -208px -32px; }
|
135 |
+
.ui-icon-arrowstop-1-s { background-position: -224px -32px; }
|
136 |
+
.ui-icon-arrowstop-1-w { background-position: -240px -32px; }
|
137 |
+
.ui-icon-arrowthick-1-n { background-position: 0 -48px; }
|
138 |
+
.ui-icon-arrowthick-1-ne { background-position: -16px -48px; }
|
139 |
+
.ui-icon-arrowthick-1-e { background-position: -32px -48px; }
|
140 |
+
.ui-icon-arrowthick-1-se { background-position: -48px -48px; }
|
141 |
+
.ui-icon-arrowthick-1-s { background-position: -64px -48px; }
|
142 |
+
.ui-icon-arrowthick-1-sw { background-position: -80px -48px; }
|
143 |
+
.ui-icon-arrowthick-1-w { background-position: -96px -48px; }
|
144 |
+
.ui-icon-arrowthick-1-nw { background-position: -112px -48px; }
|
145 |
+
.ui-icon-arrowthick-2-n-s { background-position: -128px -48px; }
|
146 |
+
.ui-icon-arrowthick-2-ne-sw { background-position: -144px -48px; }
|
147 |
+
.ui-icon-arrowthick-2-e-w { background-position: -160px -48px; }
|
148 |
+
.ui-icon-arrowthick-2-se-nw { background-position: -176px -48px; }
|
149 |
+
.ui-icon-arrowthickstop-1-n { background-position: -192px -48px; }
|
150 |
+
.ui-icon-arrowthickstop-1-e { background-position: -208px -48px; }
|
151 |
+
.ui-icon-arrowthickstop-1-s { background-position: -224px -48px; }
|
152 |
+
.ui-icon-arrowthickstop-1-w { background-position: -240px -48px; }
|
153 |
+
.ui-icon-arrowreturnthick-1-w { background-position: 0 -64px; }
|
154 |
+
.ui-icon-arrowreturnthick-1-n { background-position: -16px -64px; }
|
155 |
+
.ui-icon-arrowreturnthick-1-e { background-position: -32px -64px; }
|
156 |
+
.ui-icon-arrowreturnthick-1-s { background-position: -48px -64px; }
|
157 |
+
.ui-icon-arrowreturn-1-w { background-position: -64px -64px; }
|
158 |
+
.ui-icon-arrowreturn-1-n { background-position: -80px -64px; }
|
159 |
+
.ui-icon-arrowreturn-1-e { background-position: -96px -64px; }
|
160 |
+
.ui-icon-arrowreturn-1-s { background-position: -112px -64px; }
|
161 |
+
.ui-icon-arrowrefresh-1-w { background-position: -128px -64px; }
|
162 |
+
.ui-icon-arrowrefresh-1-n { background-position: -144px -64px; }
|
163 |
+
.ui-icon-arrowrefresh-1-e { background-position: -160px -64px; }
|
164 |
+
.ui-icon-arrowrefresh-1-s { background-position: -176px -64px; }
|
165 |
+
.ui-icon-arrow-4 { background-position: 0 -80px; }
|
166 |
+
.ui-icon-arrow-4-diag { background-position: -16px -80px; }
|
167 |
+
.ui-icon-extlink { background-position: -32px -80px; }
|
168 |
+
.ui-icon-newwin { background-position: -48px -80px; }
|
169 |
+
.ui-icon-refresh { background-position: -64px -80px; }
|
170 |
+
.ui-icon-shuffle { background-position: -80px -80px; }
|
171 |
+
.ui-icon-transfer-e-w { background-position: -96px -80px; }
|
172 |
+
.ui-icon-transferthick-e-w { background-position: -112px -80px; }
|
173 |
+
.ui-icon-folder-collapsed { background-position: 0 -96px; }
|
174 |
+
.ui-icon-folder-open { background-position: -16px -96px; }
|
175 |
+
.ui-icon-document { background-position: -32px -96px; }
|
176 |
+
.ui-icon-document-b { background-position: -48px -96px; }
|
177 |
+
.ui-icon-note { background-position: -64px -96px; }
|
178 |
+
.ui-icon-mail-closed { background-position: -80px -96px; }
|
179 |
+
.ui-icon-mail-open { background-position: -96px -96px; }
|
180 |
+
.ui-icon-suitcase { background-position: -112px -96px; }
|
181 |
+
.ui-icon-comment { background-position: -128px -96px; }
|
182 |
+
.ui-icon-person { background-position: -144px -96px; }
|
183 |
+
.ui-icon-print { background-position: -160px -96px; }
|
184 |
+
.ui-icon-trash { background-position: -176px -96px; }
|
185 |
+
.ui-icon-locked { background-position: -192px -96px; }
|
186 |
+
.ui-icon-unlocked { background-position: -208px -96px; }
|
187 |
+
.ui-icon-bookmark { background-position: -224px -96px; }
|
188 |
+
.ui-icon-tag { background-position: -240px -96px; }
|
189 |
+
.ui-icon-home { background-position: 0 -112px; }
|
190 |
+
.ui-icon-flag { background-position: -16px -112px; }
|
191 |
+
.ui-icon-calendar { background-position: -32px -112px; }
|
192 |
+
.ui-icon-cart { background-position: -48px -112px; }
|
193 |
+
.ui-icon-pencil { background-position: -64px -112px; }
|
194 |
+
.ui-icon-clock { background-position: -80px -112px; }
|
195 |
+
.ui-icon-disk { background-position: -96px -112px; }
|
196 |
+
.ui-icon-calculator { background-position: -112px -112px; }
|
197 |
+
.ui-icon-zoomin { background-position: -128px -112px; }
|
198 |
+
.ui-icon-zoomout { background-position: -144px -112px; }
|
199 |
+
.ui-icon-search { background-position: -160px -112px; }
|
200 |
+
.ui-icon-wrench { background-position: -176px -112px; }
|
201 |
+
.ui-icon-gear { background-position: -192px -112px; }
|
202 |
+
.ui-icon-heart { background-position: -208px -112px; }
|
203 |
+
.ui-icon-star { background-position: -224px -112px; }
|
204 |
+
.ui-icon-link { background-position: -240px -112px; }
|
205 |
+
.ui-icon-cancel { background-position: 0 -128px; }
|
206 |
+
.ui-icon-plus { background-position: -16px -128px; }
|
207 |
+
.ui-icon-plusthick { background-position: -32px -128px; }
|
208 |
+
.ui-icon-minus { background-position: -48px -128px; }
|
209 |
+
.ui-icon-minusthick { background-position: -64px -128px; }
|
210 |
+
.ui-icon-close { background-position: -80px -128px; }
|
211 |
+
.ui-icon-closethick { background-position: -96px -128px; }
|
212 |
+
.ui-icon-key { background-position: -112px -128px; }
|
213 |
+
.ui-icon-lightbulb { background-position: -128px -128px; }
|
214 |
+
.ui-icon-scissors { background-position: -144px -128px; }
|
215 |
+
.ui-icon-clipboard { background-position: -160px -128px; }
|
216 |
+
.ui-icon-copy { background-position: -176px -128px; }
|
217 |
+
.ui-icon-contact { background-position: -192px -128px; }
|
218 |
+
.ui-icon-image { background-position: -208px -128px; }
|
219 |
+
.ui-icon-video { background-position: -224px -128px; }
|
220 |
+
.ui-icon-script { background-position: -240px -128px; }
|
221 |
+
.ui-icon-alert { background-position: 0 -144px; }
|
222 |
+
.ui-icon-info { background-position: -16px -144px; }
|
223 |
+
.ui-icon-notice { background-position: -32px -144px; }
|
224 |
+
.ui-icon-help { background-position: -48px -144px; }
|
225 |
+
.ui-icon-check { background-position: -64px -144px; }
|
226 |
+
.ui-icon-bullet { background-position: -80px -144px; }
|
227 |
+
.ui-icon-radio-off { background-position: -96px -144px; }
|
228 |
+
.ui-icon-radio-on { background-position: -112px -144px; }
|
229 |
+
.ui-icon-pin-w { background-position: -128px -144px; }
|
230 |
+
.ui-icon-pin-s { background-position: -144px -144px; }
|
231 |
+
.ui-icon-play { background-position: 0 -160px; }
|
232 |
+
.ui-icon-pause { background-position: -16px -160px; }
|
233 |
+
.ui-icon-seek-next { background-position: -32px -160px; }
|
234 |
+
.ui-icon-seek-prev { background-position: -48px -160px; }
|
235 |
+
.ui-icon-seek-end { background-position: -64px -160px; }
|
236 |
+
.ui-icon-seek-start { background-position: -80px -160px; }
|
237 |
+
/* ui-icon-seek-first is deprecated, use ui-icon-seek-start instead */
|
238 |
+
.ui-icon-seek-first { background-position: -80px -160px; }
|
239 |
+
.ui-icon-stop { background-position: -96px -160px; }
|
240 |
+
.ui-icon-eject { background-position: -112px -160px; }
|
241 |
+
.ui-icon-volume-off { background-position: -128px -160px; }
|
242 |
+
.ui-icon-volume-on { background-position: -144px -160px; }
|
243 |
+
.ui-icon-power { background-position: 0 -176px; }
|
244 |
+
.ui-icon-signal-diag { background-position: -16px -176px; }
|
245 |
+
.ui-icon-signal { background-position: -32px -176px; }
|
246 |
+
.ui-icon-battery-0 { background-position: -48px -176px; }
|
247 |
+
.ui-icon-battery-1 { background-position: -64px -176px; }
|
248 |
+
.ui-icon-battery-2 { background-position: -80px -176px; }
|
249 |
+
.ui-icon-battery-3 { background-position: -96px -176px; }
|
250 |
+
.ui-icon-circle-plus { background-position: 0 -192px; }
|
251 |
+
.ui-icon-circle-minus { background-position: -16px -192px; }
|
252 |
+
.ui-icon-circle-close { background-position: -32px -192px; }
|
253 |
+
.ui-icon-circle-triangle-e { background-position: -48px -192px; }
|
254 |
+
.ui-icon-circle-triangle-s { background-position: -64px -192px; }
|
255 |
+
.ui-icon-circle-triangle-w { background-position: -80px -192px; }
|
256 |
+
.ui-icon-circle-triangle-n { background-position: -96px -192px; }
|
257 |
+
.ui-icon-circle-arrow-e { background-position: -112px -192px; }
|
258 |
+
.ui-icon-circle-arrow-s { background-position: -128px -192px; }
|
259 |
+
.ui-icon-circle-arrow-w { background-position: -144px -192px; }
|
260 |
+
.ui-icon-circle-arrow-n { background-position: -160px -192px; }
|
261 |
+
.ui-icon-circle-zoomin { background-position: -176px -192px; }
|
262 |
+
.ui-icon-circle-zoomout { background-position: -192px -192px; }
|
263 |
+
.ui-icon-circle-check { background-position: -208px -192px; }
|
264 |
+
.ui-icon-circlesmall-plus { background-position: 0 -208px; }
|
265 |
+
.ui-icon-circlesmall-minus { background-position: -16px -208px; }
|
266 |
+
.ui-icon-circlesmall-close { background-position: -32px -208px; }
|
267 |
+
.ui-icon-squaresmall-plus { background-position: -48px -208px; }
|
268 |
+
.ui-icon-squaresmall-minus { background-position: -64px -208px; }
|
269 |
+
.ui-icon-squaresmall-close { background-position: -80px -208px; }
|
270 |
+
.ui-icon-grip-dotted-vertical { background-position: 0 -224px; }
|
271 |
+
.ui-icon-grip-dotted-horizontal { background-position: -16px -224px; }
|
272 |
+
.ui-icon-grip-solid-vertical { background-position: -32px -224px; }
|
273 |
+
.ui-icon-grip-solid-horizontal { background-position: -48px -224px; }
|
274 |
+
.ui-icon-gripsmall-diagonal-se { background-position: -64px -224px; }
|
275 |
+
.ui-icon-grip-diagonal-se { background-position: -80px -224px; }
|
276 |
+
|
277 |
+
|
278 |
+
/* Misc visuals
|
279 |
+
----------------------------------*/
|
280 |
+
|
281 |
+
/* Corner radius */
|
282 |
+
.ui-corner-all, .ui-corner-top, .ui-corner-left, .ui-corner-tl { -moz-border-radius-topleft: 3px; -webkit-border-top-left-radius: 3px; -khtml-border-top-left-radius: 3px; border-top-left-radius: 3px; }
|
283 |
+
.ui-corner-all, .ui-corner-top, .ui-corner-right, .ui-corner-tr { -moz-border-radius-topright: 3px; -webkit-border-top-right-radius: 3px; -khtml-border-top-right-radius: 3px; border-top-right-radius: 3px; }
|
284 |
+
.ui-corner-all, .ui-corner-bottom, .ui-corner-left, .ui-corner-bl { -moz-border-radius-bottomleft: 3px; -webkit-border-bottom-left-radius: 3px; -khtml-border-bottom-left-radius: 3px; border-bottom-left-radius: 3px; }
|
285 |
+
.ui-corner-all, .ui-corner-bottom, .ui-corner-right, .ui-corner-br { -moz-border-radius-bottomright: 3px; -webkit-border-bottom-right-radius: 3px; -khtml-border-bottom-right-radius: 3px; border-bottom-right-radius: 3px; }
|
286 |
+
|
287 |
+
/* Overlays */
|
288 |
+
.ui-widget-overlay { background: #000000; opacity: .6;filter:Alpha(Opacity=60); }
|
289 |
+
.ui-widget-shadow { box-shadow: 0 0 16px rgba(0, 0, 0, 0.3); }/*
|
290 |
+
* jQuery UI Resizable 1.8.16
|
291 |
+
*
|
292 |
+
* Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
|
293 |
+
* Dual licensed under the MIT or GPL Version 2 licenses.
|
294 |
+
* http://jquery.org/license
|
295 |
+
*
|
296 |
+
* http://docs.jquery.com/UI/Resizable#theming
|
297 |
+
*/
|
298 |
+
.ui-resizable { position: relative;}
|
299 |
+
.ui-resizable-handle { position: absolute;font-size: 0.1px;z-index: 99999; display: block; }
|
300 |
+
.ui-resizable-disabled .ui-resizable-handle, .ui-resizable-autohide .ui-resizable-handle { display: none; }
|
301 |
+
.ui-resizable-n { cursor: n-resize; height: 7px; width: 100%; top: -5px; left: 0; }
|
302 |
+
.ui-resizable-s { cursor: s-resize; height: 7px; width: 100%; bottom: -5px; left: 0; }
|
303 |
+
.ui-resizable-e { cursor: e-resize; width: 7px; right: -5px; top: 0; height: 100%; }
|
304 |
+
.ui-resizable-w { cursor: w-resize; width: 7px; left: -5px; top: 0; height: 100%; }
|
305 |
+
.ui-resizable-se { cursor: se-resize; width: 12px; height: 12px; right: 1px; bottom: 1px; }
|
306 |
+
.ui-resizable-sw { cursor: sw-resize; width: 9px; height: 9px; left: -5px; bottom: -5px; }
|
307 |
+
.ui-resizable-nw { cursor: nw-resize; width: 9px; height: 9px; left: -5px; top: -5px; }
|
308 |
+
.ui-resizable-ne { cursor: ne-resize; width: 9px; height: 9px; right: -5px; top: -5px;}/*
|
309 |
+
* jQuery UI Selectable 1.8.16
|
310 |
+
*
|
311 |
+
* Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
|
312 |
+
* Dual licensed under the MIT or GPL Version 2 licenses.
|
313 |
+
* http://jquery.org/license
|
314 |
+
*
|
315 |
+
* http://docs.jquery.com/UI/Selectable#theming
|
316 |
+
*/
|
317 |
+
.ui-selectable-helper { position: absolute; z-index: 100; border:1px dotted black; }
|
318 |
+
/*
|
319 |
+
* jQuery UI Accordion 1.8.16
|
320 |
+
*
|
321 |
+
* Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
|
322 |
+
* Dual licensed under the MIT or GPL Version 2 licenses.
|
323 |
+
* http://jquery.org/license
|
324 |
+
*
|
325 |
+
* http://docs.jquery.com/UI/Accordion#theming
|
326 |
+
*/
|
327 |
+
/* IE/Win - Fix animation bug - #4615 */
|
328 |
+
.ui-accordion { width: 100%; }
|
329 |
+
.ui-accordion .ui-accordion-header { cursor: pointer; position: relative; margin-top: 1px; zoom: 1; }
|
330 |
+
.ui-accordion .ui-accordion-li-fix { display: inline; }
|
331 |
+
.ui-accordion .ui-accordion-header-active { border-bottom: 0 !important; }
|
332 |
+
.ui-accordion .ui-accordion-header a { display: block; font-size: 1em; padding: .5em .5em .5em .7em; }
|
333 |
+
.ui-accordion-icons .ui-accordion-header a { padding-left: 2.2em; }
|
334 |
+
.ui-accordion .ui-accordion-header .ui-icon { position: absolute; left: .5em; top: 50%; margin-top: -8px; }
|
335 |
+
.ui-accordion .ui-accordion-content { padding: 1em 2.2em; border-top: 0; margin-top: -2px; position: relative; top: 1px; margin-bottom: 2px; overflow: auto; display: none; zoom: 1; }
|
336 |
+
.ui-accordion .ui-accordion-content-active { display: block; }
|
337 |
+
/*
|
338 |
+
* jQuery UI Autocomplete 1.8.16
|
339 |
+
*
|
340 |
+
* Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
|
341 |
+
* Dual licensed under the MIT or GPL Version 2 licenses.
|
342 |
+
* http://jquery.org/license
|
343 |
+
*
|
344 |
+
* http://docs.jquery.com/UI/Autocomplete#theming
|
345 |
+
*/
|
346 |
+
.ui-autocomplete { position: absolute; cursor: default; }
|
347 |
+
|
348 |
+
/* workarounds */
|
349 |
+
* html .ui-autocomplete { width:1px; } /* without this, the menu expands to 100% in IE6 */
|
350 |
+
|
351 |
+
/*
|
352 |
+
* jQuery UI Menu 1.8.16
|
353 |
+
*
|
354 |
+
* Copyright 2010, AUTHORS.txt (http://jqueryui.com/about)
|
355 |
+
* Dual licensed under the MIT or GPL Version 2 licenses.
|
356 |
+
* http://jquery.org/license
|
357 |
+
*
|
358 |
+
* http://docs.jquery.com/UI/Menu#theming
|
359 |
+
*/
|
360 |
+
.ui-menu {
|
361 |
+
list-style:none;
|
362 |
+
padding: 2px;
|
363 |
+
margin: 0;
|
364 |
+
display:block;
|
365 |
+
float: left;
|
366 |
+
}
|
367 |
+
.ui-menu .ui-menu {
|
368 |
+
margin-top: -3px;
|
369 |
+
}
|
370 |
+
.ui-menu .ui-menu-item {
|
371 |
+
margin:0;
|
372 |
+
padding: 0;
|
373 |
+
zoom: 1;
|
374 |
+
float: left;
|
375 |
+
clear: left;
|
376 |
+
width: 100%;
|
377 |
+
}
|
378 |
+
.ui-menu .ui-menu-item a {
|
379 |
+
text-decoration:none;
|
380 |
+
display:block;
|
381 |
+
padding:.2em .4em;
|
382 |
+
line-height:1.5;
|
383 |
+
zoom:1;
|
384 |
+
}
|
385 |
+
.ui-menu .ui-menu-item a.ui-state-hover,
|
386 |
+
.ui-menu .ui-menu-item a.ui-state-active {
|
387 |
+
font-weight: normal;
|
388 |
+
margin: -1px;
|
389 |
+
}
|
390 |
+
/*
|
391 |
+
* jQuery UI Button 1.8.16
|
392 |
+
*
|
393 |
+
* Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
|
394 |
+
* Dual licensed under the MIT or GPL Version 2 licenses.
|
395 |
+
* http://jquery.org/license
|
396 |
+
*
|
397 |
+
* http://docs.jquery.com/UI/Button#theming
|
398 |
+
*/
|
399 |
+
.ui-button { display: inline-block; position: relative; padding: 0; margin-right: .1em; text-decoration: none !important; cursor: pointer; text-align: center; zoom: 1; overflow: visible; } /* the overflow property removes extra width in IE */
|
400 |
+
.ui-button-icon-only { width: 2.2em; } /* to make room for the icon, a width needs to be set here */
|
401 |
+
button.ui-button-icon-only { width: 2.4em; } /* button elements seem to need a little more width */
|
402 |
+
.ui-button-icons-only { width: 3.4em; }
|
403 |
+
button.ui-button-icons-only { width: 3.7em; }
|
404 |
+
|
405 |
+
/*button text element */
|
406 |
+
.ui-button .ui-button-text { display: block; line-height: 1.4; }
|
407 |
+
.ui-button-text-only .ui-button-text { padding: .4em 1em; }
|
408 |
+
.ui-button-icon-only .ui-button-text, .ui-button-icons-only .ui-button-text { padding: .4em; text-indent: -9999999px; }
|
409 |
+
.ui-button-text-icon-primary .ui-button-text, .ui-button-text-icons .ui-button-text { padding: .4em 1em .4em 2.1em; }
|
410 |
+
.ui-button-text-icon-secondary .ui-button-text, .ui-button-text-icons .ui-button-text { padding: .4em 2.1em .4em 1em; }
|
411 |
+
.ui-button-text-icons .ui-button-text { padding-left: 2.1em; padding-right: 2.1em; }
|
412 |
+
/* no icon support for input elements, provide padding by default */
|
413 |
+
input.ui-button { padding: .4em 1em; }
|
414 |
+
|
415 |
+
/*button icon element(s) */
|
416 |
+
.ui-button-icon-only .ui-icon, .ui-button-text-icon-primary .ui-icon, .ui-button-text-icon-secondary .ui-icon, .ui-button-text-icons .ui-icon, .ui-button-icons-only .ui-icon { position: absolute; top: 50%; margin-top: -8px; }
|
417 |
+
.ui-button-icon-only .ui-icon { left: 50%; margin-left: -8px; }
|
418 |
+
.ui-button-text-icon-primary .ui-button-icon-primary, .ui-button-text-icons .ui-button-icon-primary, .ui-button-icons-only .ui-button-icon-primary { left: .5em; }
|
419 |
+
.ui-button-text-icon-secondary .ui-button-icon-secondary, .ui-button-text-icons .ui-button-icon-secondary, .ui-button-icons-only .ui-button-icon-secondary { right: .5em; }
|
420 |
+
.ui-button-text-icons .ui-button-icon-secondary, .ui-button-icons-only .ui-button-icon-secondary { right: .5em; }
|
421 |
+
|
422 |
+
/*button sets*/
|
423 |
+
.ui-buttonset { margin-right: 7px; }
|
424 |
+
.ui-buttonset .ui-button { margin-left: 0; margin-right: -.3em; }
|
425 |
+
|
426 |
+
/* workarounds */
|
427 |
+
button.ui-button::-moz-focus-inner { border: 0; padding: 0; } /* reset extra padding in Firefox */
|
428 |
+
/*
|
429 |
+
* jQuery UI Dialog 1.8.16
|
430 |
+
*
|
431 |
+
* Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
|
432 |
+
* Dual licensed under the MIT or GPL Version 2 licenses.
|
433 |
+
* http://jquery.org/license
|
434 |
+
*
|
435 |
+
* http://docs.jquery.com/UI/Dialog#theming
|
436 |
+
*/
|
437 |
+
.ui-dialog { position: absolute; padding: .2em; width: 300px; overflow: hidden; }
|
438 |
+
.ui-dialog .ui-dialog-titlebar { padding: .4em 1em; position: relative; }
|
439 |
+
.ui-dialog .ui-dialog-title { float: left; margin: .1em 16px .1em 0; }
|
440 |
+
.ui-dialog .ui-dialog-titlebar-close { position: absolute; right: .3em; top: 50%; width: 19px; margin: -10px 0 0 0; padding: 1px; height: 18px; }
|
441 |
+
.ui-dialog .ui-dialog-titlebar-close span { display: block; margin: 1px; }
|
442 |
+
.ui-dialog .ui-dialog-titlebar-close:hover, .ui-dialog .ui-dialog-titlebar-close:focus { padding: 0; }
|
443 |
+
.ui-dialog .ui-dialog-content { position: relative; border: 0; padding: .5em 1em; background: none; overflow: auto; zoom: 1; }
|
444 |
+
.ui-dialog .ui-dialog-buttonpane { text-align: left; border-width: 1px 0 0 0; background-image: none; margin: .5em 0 0 0; padding: .3em 1em .5em .4em; }
|
445 |
+
.ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset { float: right; }
|
446 |
+
.ui-dialog .ui-dialog-buttonpane button { margin: .5em .4em .5em 0; cursor: pointer; }
|
447 |
+
.ui-dialog .ui-resizable-se { width: 14px; height: 14px; right: 3px; bottom: 3px; }
|
448 |
+
.ui-draggable .ui-dialog-titlebar { cursor: move; }
|
449 |
+
/*
|
450 |
+
* jQuery UI Slider 1.8.16
|
451 |
+
*
|
452 |
+
* Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
|
453 |
+
* Dual licensed under the MIT or GPL Version 2 licenses.
|
454 |
+
* http://jquery.org/license
|
455 |
+
*
|
456 |
+
* http://docs.jquery.com/UI/Slider#theming
|
457 |
+
*/
|
458 |
+
.ui-slider { position: relative; text-align: left; }
|
459 |
+
.ui-slider .ui-slider-handle { position: absolute; z-index: 2; width: 1.2em; height: 1.2em; cursor: default; }
|
460 |
+
.ui-slider .ui-slider-range { position: absolute; z-index: 1; font-size: .7em; display: block; border: 0; background-position: 0 0; }
|
461 |
+
|
462 |
+
.ui-slider-horizontal { height: .8em; }
|
463 |
+
.ui-slider-horizontal .ui-slider-handle { top: -.3em; margin-left: -.6em; }
|
464 |
+
.ui-slider-horizontal .ui-slider-range { top: 0; height: 100%; }
|
465 |
+
.ui-slider-horizontal .ui-slider-range-min { left: 0; }
|
466 |
+
.ui-slider-horizontal .ui-slider-range-max { right: 0; }
|
467 |
+
|
468 |
+
.ui-slider-vertical { width: .8em; height: 100px; }
|
469 |
+
.ui-slider-vertical .ui-slider-handle { left: -.3em; margin-left: 0; margin-bottom: -.6em; }
|
470 |
+
.ui-slider-vertical .ui-slider-range { left: 0; width: 100%; }
|
471 |
+
.ui-slider-vertical .ui-slider-range-min { bottom: 0; }
|
472 |
+
.ui-slider-vertical .ui-slider-range-max { top: 0; }/*
|
473 |
+
* jQuery UI Tabs 1.8.16
|
474 |
+
*
|
475 |
+
* Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
|
476 |
+
* Dual licensed under the MIT or GPL Version 2 licenses.
|
477 |
+
* http://jquery.org/license
|
478 |
+
*
|
479 |
+
* http://docs.jquery.com/UI/Tabs#theming
|
480 |
+
*/
|
481 |
+
.ui-tabs { position: relative; padding: .2em; zoom: 1; } /* position: relative prevents IE scroll bug (element with position: relative inside container with overflow: auto appear as "fixed") */
|
482 |
+
.ui-tabs .ui-tabs-nav { margin: 0; padding: .2em .2em 0; }
|
483 |
+
.ui-tabs .ui-tabs-nav li { list-style: none; float: left; position: relative; top: 1px; margin: 0 .2em 1px 0; border-bottom: 0 !important; padding: 0; white-space: nowrap; }
|
484 |
+
.ui-tabs .ui-tabs-nav li a { float: left; padding: .5em 1em; text-decoration: none; }
|
485 |
+
.ui-tabs .ui-tabs-nav li.ui-tabs-selected { margin-bottom: 0; padding-bottom: 1px; }
|
486 |
+
.ui-tabs .ui-tabs-nav li.ui-tabs-selected a, .ui-tabs .ui-tabs-nav li.ui-state-disabled a, .ui-tabs .ui-tabs-nav li.ui-state-processing a { cursor: text; }
|
487 |
+
.ui-tabs .ui-tabs-nav li a, .ui-tabs.ui-tabs-collapsible .ui-tabs-nav li.ui-tabs-selected a { cursor: pointer; } /* first selector in group seems obsolete, but required to overcome bug in Opera applying cursor: text overall if defined elsewhere... */
|
488 |
+
.ui-tabs .ui-tabs-panel { display: block; border-width: 0; padding: 1em 1.4em; background: none; }
|
489 |
+
.ui-tabs .ui-tabs-hide { display: none !important; }
|
490 |
+
/*
|
491 |
+
* jQuery UI Datepicker 1.8.16
|
492 |
+
*
|
493 |
+
* Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
|
494 |
+
* Dual licensed under the MIT or GPL Version 2 licenses.
|
495 |
+
* http://jquery.org/license
|
496 |
+
*
|
497 |
+
* http://docs.jquery.com/UI/Datepicker#theming
|
498 |
+
*/
|
499 |
+
.ui-datepicker { width: 17em; padding: .2em .2em 0; display: none; }
|
500 |
+
.ui-datepicker .ui-datepicker-header { position:relative; padding:.2em 0; }
|
501 |
+
.ui-datepicker .ui-datepicker-prev, .ui-datepicker .ui-datepicker-next { position:absolute; top: 2px; width: 1.8em; height: 1.8em; }
|
502 |
+
.ui-datepicker .ui-datepicker-prev-hover, .ui-datepicker .ui-datepicker-next-hover { top: 1px; }
|
503 |
+
.ui-datepicker .ui-datepicker-prev { left:2px; }
|
504 |
+
.ui-datepicker .ui-datepicker-next { right:2px; }
|
505 |
+
.ui-datepicker .ui-datepicker-prev-hover { left:1px; }
|
506 |
+
.ui-datepicker .ui-datepicker-next-hover { right:1px; }
|
507 |
+
.ui-datepicker .ui-datepicker-prev span, .ui-datepicker .ui-datepicker-next span { display: block; position: absolute; left: 50%; margin-left: -8px; top: 50%; margin-top: -8px; }
|
508 |
+
.ui-datepicker .ui-datepicker-title { margin: 0 2.3em; line-height: 1.8em; text-align: center; }
|
509 |
+
.ui-datepicker .ui-datepicker-title select { font-size:1em; margin:1px 0; }
|
510 |
+
.ui-datepicker select.ui-datepicker-month-year {width: 100%;}
|
511 |
+
.ui-datepicker select.ui-datepicker-month,
|
512 |
+
.ui-datepicker select.ui-datepicker-year { width: 49%;}
|
513 |
+
.ui-datepicker table {width: 100%; font-size: .9em; border-collapse: collapse; margin:0 0 .4em; }
|
514 |
+
.ui-datepicker th { padding: .7em .3em; text-align: center; font-weight: bold; border: 0; }
|
515 |
+
.ui-datepicker td { border: 0; padding: 1px; }
|
516 |
+
.ui-datepicker td span, .ui-datepicker td a { display: block; padding: .2em; text-align: right; text-decoration: none; }
|
517 |
+
.ui-datepicker .ui-datepicker-buttonpane { background-image: none; margin: .7em 0 0 0; padding:0 .2em; border-left: 0; border-right: 0; border-bottom: 0; }
|
518 |
+
.ui-datepicker .ui-datepicker-buttonpane button { float: right; margin: .5em .2em .4em; cursor: pointer; padding: .2em .6em .3em .6em; width:auto; overflow:visible; }
|
519 |
+
.ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current { float:left; }
|
520 |
+
|
521 |
+
/* with multiple calendars */
|
522 |
+
.ui-datepicker.ui-datepicker-multi { width:auto; }
|
523 |
+
.ui-datepicker-multi .ui-datepicker-group { float:left; }
|
524 |
+
.ui-datepicker-multi .ui-datepicker-group table { width:95%; margin:0 auto .4em; }
|
525 |
+
.ui-datepicker-multi-2 .ui-datepicker-group { width:50%; }
|
526 |
+
.ui-datepicker-multi-3 .ui-datepicker-group { width:33.3%; }
|
527 |
+
.ui-datepicker-multi-4 .ui-datepicker-group { width:25%; }
|
528 |
+
.ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header { border-left-width:0; }
|
529 |
+
.ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header { border-left-width:0; }
|
530 |
+
.ui-datepicker-multi .ui-datepicker-buttonpane { clear:left; }
|
531 |
+
.ui-datepicker-row-break { clear:both; width:100%; font-size:0em; }
|
532 |
+
|
533 |
+
/* RTL support */
|
534 |
+
.ui-datepicker-rtl { direction: rtl; }
|
535 |
+
.ui-datepicker-rtl .ui-datepicker-prev { right: 2px; left: auto; }
|
536 |
+
.ui-datepicker-rtl .ui-datepicker-next { left: 2px; right: auto; }
|
537 |
+
.ui-datepicker-rtl .ui-datepicker-prev:hover { right: 1px; left: auto; }
|
538 |
+
.ui-datepicker-rtl .ui-datepicker-next:hover { left: 1px; right: auto; }
|
539 |
+
.ui-datepicker-rtl .ui-datepicker-buttonpane { clear:right; }
|
540 |
+
.ui-datepicker-rtl .ui-datepicker-buttonpane button { float: left; }
|
541 |
+
.ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current { float:right; }
|
542 |
+
.ui-datepicker-rtl .ui-datepicker-group { float:right; }
|
543 |
+
.ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header { border-right-width:0; border-left-width:1px; }
|
544 |
+
.ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header { border-right-width:0; border-left-width:1px; }
|
545 |
+
|
546 |
+
/* IE6 IFRAME FIX (taken from datepicker 1.5.3 */
|
547 |
+
.ui-datepicker-cover {
|
548 |
+
display: none; /*sorry for IE5*/
|
549 |
+
display/**/: block; /*sorry for IE5*/
|
550 |
+
position: absolute; /*must have*/
|
551 |
+
z-index: -1; /*must have*/
|
552 |
+
filter: mask(); /*must have*/
|
553 |
+
top: -4px; /*must have*/
|
554 |
+
left: -4px; /*must have*/
|
555 |
+
width: 200px; /*must have*/
|
556 |
+
height: 200px; /*must have*/
|
557 |
+
}/*
|
558 |
+
* jQuery UI Progressbar 1.8.16
|
559 |
+
*
|
560 |
+
* Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
|
561 |
+
* Dual licensed under the MIT or GPL Version 2 licenses.
|
562 |
+
* http://jquery.org/license
|
563 |
+
*
|
564 |
+
* http://docs.jquery.com/UI/Progressbar#theming
|
565 |
+
*/
|
566 |
+
.ui-progressbar { height:2em; text-align: left; }
|
567 |
+
.ui-progressbar .ui-progressbar-value {margin: -1px; height:100%; }
|
568 |
+
.ui-progressbar .ui-widget-header {
|
569 |
+
background-color: #83B4D8;
|
570 |
+
background-image: linear-gradient(bottom, rgb(114,167,207) 0%, rgb(144,197,238) 100%);
|
571 |
+
background-image: -o-linear-gradient(bottom, rgb(114,167,207) 0%, rgb(144,197,238) 100%);
|
572 |
+
background-image: -moz-linear-gradient(bottom, rgb(114,167,207) 0%, rgb(144,197,238) 100%);
|
573 |
+
background-image: -webkit-linear-gradient(bottom, rgb(114,167,207) 0%, rgb(144,197,238) 100%);
|
574 |
+
background-image: -ms-linear-gradient(bottom, rgb(114,167,207) 0%, rgb(144,197,238) 100%);
|
575 |
+
}
|
assets/css/jquery-ui-fresh.css
ADDED
@@ -0,0 +1,575 @@
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
1 |
+
/*
|
2 |
+
* jQuery UI CSS Framework 1.8.16
|
3 |
+
*
|
4 |
+
* Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
|
5 |
+
* Dual licensed under the MIT or GPL Version 2 licenses.
|
6 |
+
* http://jquery.org/license
|
7 |
+
*
|
8 |
+
* http://docs.jquery.com/UI/Theming/API
|
9 |
+
*/
|
10 |
+
|
11 |
+
/* Layout helpers
|
12 |
+
----------------------------------*/
|
13 |
+
.ui-helper-hidden { display: none; }
|
14 |
+
.ui-helper-hidden-accessible { position: absolute !important; clip: rect(1px 1px 1px 1px); clip: rect(1px,1px,1px,1px); }
|
15 |
+
.ui-helper-reset { margin: 0; padding: 0; border: 0; outline: 0; line-height: 1.3; text-decoration: none; font-size: 100%; list-style: none; }
|
16 |
+
.ui-helper-clearfix:after { content: "."; display: block; height: 0; clear: both; visibility: hidden; }
|
17 |
+
.ui-helper-clearfix { display: inline-block; }
|
18 |
+
/* required comment for clearfix to work in Opera \*/
|
19 |
+
* html .ui-helper-clearfix { height:1%; }
|
20 |
+
.ui-helper-clearfix { display:block; }
|
21 |
+
/* end clearfix */
|
22 |
+
.ui-helper-zfix { width: 100%; height: 100%; top: 0; left: 0; position: absolute; opacity: 0; filter:Alpha(Opacity=0); }
|
23 |
+
|
24 |
+
|
25 |
+
/* Interaction Cues
|
26 |
+
----------------------------------*/
|
27 |
+
.ui-state-disabled { cursor: default !important; }
|
28 |
+
|
29 |
+
|
30 |
+
/* Icons
|
31 |
+
----------------------------------*/
|
32 |
+
|
33 |
+
/* states and images */
|
34 |
+
.ui-icon { display: block; text-indent: -99999px; overflow: hidden; background-repeat: no-repeat; }
|
35 |
+
|
36 |
+
|
37 |
+
/* Misc visuals
|
38 |
+
----------------------------------*/
|
39 |
+
|
40 |
+
/* Overlays */
|
41 |
+
.ui-widget-overlay { position: absolute; top: 0; left: 0; width: 100%; height: 100%; }
|
42 |
+
|
43 |
+
|
44 |
+
/*
|
45 |
+
* jQuery UI CSS Framework 1.8.16
|
46 |
+
*
|
47 |
+
* Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
|
48 |
+
* Dual licensed under the MIT or GPL Version 2 licenses.
|
49 |
+
* http://jquery.org/license
|
50 |
+
*
|
51 |
+
* http://docs.jquery.com/UI/Theming/API
|
52 |
+
*
|
53 |
+
* To view and modify this theme, visit http://jqueryui.com/themeroller/?ffDefault=sans-serif&fwDefault=normal&fsDefault=12px&cornerRadius=4px&bgColorHeader=ececec&bgTextureHeader=04_highlight_hard.png&bgImgOpacityHeader=75&borderColorHeader=dfdfdf&fcHeader=333333&iconColorHeader=999999&bgColorContent=ffffff&bgTextureContent=01_flat.png&bgImgOpacityContent=75&borderColorContent=dfdfdf&fcContent=333333&iconColorContent=333333&bgColorDefault=ececec&bgTextureDefault=04_highlight_hard.png&bgImgOpacityDefault=75&borderColorDefault=dfdfdf&fcDefault=333333&iconColorDefault=333333&bgColorHover=ececec&bgTextureHover=06_inset_hard.png&bgImgOpacityHover=75&borderColorHover=ccc&fcHover=000000&iconColorHover=333333&bgColorActive=ffffff&bgTextureActive=01_flat.png&bgImgOpacityActive=65&borderColorActive=dfdfdf&fcActive=333333&iconColorActive=333333&bgColorHighlight=ffffe0&bgTextureHighlight=01_flat.png&bgImgOpacityHighlight=55&borderColorHighlight=e6db55&fcHighlight=333333&iconColorHighlight=21759b&bgColorError=ffebe8&bgTextureError=01_flat.png&bgImgOpacityError=95&borderColorError=cc0000&fcError=cc0000&iconColorError=cc0000&bgColorOverlay=aaaaaa&bgTextureOverlay=01_flat.png&bgImgOpacityOverlay=0&opacityOverlay=30&bgColorShadow=aaaaaa&bgTextureShadow=01_flat.png&bgImgOpacityShadow=0&opacityShadow=30&thicknessShadow=8px&offsetTopShadow=-8px&offsetLeftShadow=-8px&cornerRadiusShadow=3px
|
54 |
+
*/
|
55 |
+
|
56 |
+
|
57 |
+
/* Component containers
|
58 |
+
----------------------------------*/
|
59 |
+
.ui-widget { font-family: sans-serif; font-size: 12px; }
|
60 |
+
.ui-widget .ui-widget { font-size: 1em; }
|
61 |
+
.ui-widget input, .ui-widget select, .ui-widget textarea, .ui-widget button { font-family: sans-serif; font-size: 1em; }
|
62 |
+
.ui-widget-content { border: 1px solid #dfdfdf; background: #ffffff; color: #333333; }
|
63 |
+
.ui-widget-header { border: 1px solid #dfdfdf; color: #333333; font-weight: bold; background-color: #f1f1f1; background-image: -ms-linear-gradient(top, #f9f9f9, #ececec); background-image: -moz-linear-gradient(top, #f9f9f9, #ececec); background-image: -o-linear-gradient(top, #f9f9f9, #ececec); background-image: -webkit-gradient(linear, left top, left bottom, from(#f9f9f9), to(#ececec)); background-image: -webkit-linear-gradient(top, #f9f9f9, #ececec); background-image: linear-gradient(top, #f9f9f9, #ececec); }
|
64 |
+
.ui-widget-header a { color: #333333; }
|
65 |
+
|
66 |
+
/* Interaction states
|
67 |
+
----------------------------------*/
|
68 |
+
.ui-state-default, .ui-widget-content .ui-state-default, .ui-widget-header .ui-state-default { border: 1px solid #dfdfdf; background-color: #f1f1f1; background-image: -ms-linear-gradient(top, #f9f9f9, #ececec); background-image: -moz-linear-gradient(top, #f9f9f9, #ececec); background-image: -o-linear-gradient(top, #f9f9f9, #ececec); background-image: -webkit-gradient(linear, left top, left bottom, from(#f9f9f9), to(#ececec)); background-image: -webkit-linear-gradient(top, #f9f9f9, #ececec); background-image: linear-gradient(top, #f9f9f9, #ececec); font-weight: normal; color: #333333; }
|
69 |
+
.ui-state-default a, .ui-state-default a:link, .ui-state-default a:visited { color: #333333; text-decoration: none; }
|
70 |
+
.ui-state-hover, .ui-widget-content .ui-state-hover, .ui-widget-header .ui-state-hover, .ui-state-focus, .ui-widget-content .ui-state-focus, .ui-widget-header .ui-state-focus { border: 1px solid #ccc; background-color: #ececec; background-image: -ms-linear-gradient(top, #ececec, #f9f9f9); background-image: -moz-linear-gradient(top, #ececec, #f9f9f9); background-image: -o-linear-gradient(top, #ececec, #f9f9f9); background-image: -webkit-gradient(linear, left top, left bottom, from(#ececec), to(#f9f9f9)); background-image: -webkit-linear-gradient(top, #ececec, #f9f9f9); background-image: linear-gradient(top, #ececec, #f9f9f9); font-weight: normal; color: #000000; }
|
71 |
+
.ui-state-hover a, .ui-state-hover a:hover { color: #000000; text-decoration: none; }
|
72 |
+
.ui-state-active, .ui-widget-content .ui-state-active, .ui-widget-header .ui-state-active { border: 1px solid #dfdfdf; background: #ffffff; font-weight: normal; color: #333333; }
|
73 |
+
.ui-state-active a, .ui-state-active a:link, .ui-state-active a:visited { color: #333333; text-decoration: none; }
|
74 |
+
.ui-widget :active { outline: none; }
|
75 |
+
|
76 |
+
/* Interaction Cues
|
77 |
+
----------------------------------*/
|
78 |
+
.ui-state-highlight, .ui-widget-content .ui-state-highlight, .ui-widget-header .ui-state-highlight {border: 1px solid #e6db55; background: #ffffe0; color: #333333; }
|
79 |
+
.ui-state-highlight a, .ui-widget-content .ui-state-highlight a,.ui-widget-header .ui-state-highlight a { color: #333333; }
|
80 |
+
.ui-state-error, .ui-widget-content .ui-state-error, .ui-widget-header .ui-state-error {border: 1px solid #cc0000; background: #ffebe8; color: #cc0000; }
|
81 |
+
.ui-state-error a, .ui-widget-content .ui-state-error a, .ui-widget-header .ui-state-error a { color: #cc0000; }
|
82 |
+
.ui-state-error-text, .ui-widget-content .ui-state-error-text, .ui-widget-header .ui-state-error-text { color: #cc0000; }
|
83 |
+
.ui-priority-primary, .ui-widget-content .ui-priority-primary, .ui-widget-header .ui-priority-primary { font-weight: bold; }
|
84 |
+
.ui-priority-secondary, .ui-widget-content .ui-priority-secondary, .ui-widget-header .ui-priority-secondary { opacity: .7; filter:Alpha(Opacity=70); font-weight: normal; }
|
85 |
+
.ui-state-disabled, .ui-widget-content .ui-state-disabled, .ui-widget-header .ui-state-disabled { opacity: .35; filter:Alpha(Opacity=35); background-image: none; }
|
86 |
+
|
87 |
+
/* Icons
|
88 |
+
----------------------------------*/
|
89 |
+
|
90 |
+
/* states and images */
|
91 |
+
.ui-icon { width: 16px; height: 16px; background-image: url(../images/ui-icons_333333_256x240.png); }
|
92 |
+
.ui-widget-content .ui-icon {background-image: url(../images/ui-icons_333333_256x240.png); }
|
93 |
+
.ui-widget-header .ui-icon {background-image: url(../images/ui-icons_999999_256x240.png); }
|
94 |
+
.ui-state-default .ui-icon { background-image: url(../images/ui-icons_333333_256x240.png); }
|
95 |
+
.ui-state-hover .ui-icon, .ui-state-focus .ui-icon {background-image: url(../images/ui-icons_333333_256x240.png); }
|
96 |
+
.ui-state-active .ui-icon {background-image: url(../images/ui-icons_333333_256x240.png); }
|
97 |
+
.ui-state-highlight .ui-icon {background-image: url(../images/ui-icons_21759b_256x240.png); }
|
98 |
+
.ui-state-error .ui-icon, .ui-state-error-text .ui-icon {background-image: url(../images/ui-icons_cc0000_256x240.png); }
|
99 |
+
|
100 |
+
/* positioning */
|
101 |
+
.ui-icon-carat-1-n { background-position: 0 0; }
|
102 |
+
.ui-icon-carat-1-ne { background-position: -16px 0; }
|
103 |
+
.ui-icon-carat-1-e { background-position: -32px 0; }
|
104 |
+
.ui-icon-carat-1-se { background-position: -48px 0; }
|
105 |
+
.ui-icon-carat-1-s { background-position: -64px 0; }
|
106 |
+
.ui-icon-carat-1-sw { background-position: -80px 0; }
|
107 |
+
.ui-icon-carat-1-w { background-position: -96px 0; }
|
108 |
+
.ui-icon-carat-1-nw { background-position: -112px 0; }
|
109 |
+
.ui-icon-carat-2-n-s { background-position: -128px 0; }
|
110 |
+
.ui-icon-carat-2-e-w { background-position: -144px 0; }
|
111 |
+
.ui-icon-triangle-1-n { background-position: 0 -16px; }
|
112 |
+
.ui-icon-triangle-1-ne { background-position: -16px -16px; }
|
113 |
+
.ui-icon-triangle-1-e { background-position: -32px -16px; }
|
114 |
+
.ui-icon-triangle-1-se { background-position: -48px -16px; }
|
115 |
+
.ui-icon-triangle-1-s { background-position: -64px -16px; }
|
116 |
+
.ui-icon-triangle-1-sw { background-position: -80px -16px; }
|
117 |
+
.ui-icon-triangle-1-w { background-position: -96px -16px; }
|
118 |
+
.ui-icon-triangle-1-nw { background-position: -112px -16px; }
|
119 |
+
.ui-icon-triangle-2-n-s { background-position: -128px -16px; }
|
120 |
+
.ui-icon-triangle-2-e-w { background-position: -144px -16px; }
|
121 |
+
.ui-icon-arrow-1-n { background-position: 0 -32px; }
|
122 |
+
.ui-icon-arrow-1-ne { background-position: -16px -32px; }
|
123 |
+
.ui-icon-arrow-1-e { background-position: -32px -32px; }
|
124 |
+
.ui-icon-arrow-1-se { background-position: -48px -32px; }
|
125 |
+
.ui-icon-arrow-1-s { background-position: -64px -32px; }
|
126 |
+
.ui-icon-arrow-1-sw { background-position: -80px -32px; }
|
127 |
+
.ui-icon-arrow-1-w { background-position: -96px -32px; }
|
128 |
+
.ui-icon-arrow-1-nw { background-position: -112px -32px; }
|
129 |
+
.ui-icon-arrow-2-n-s { background-position: -128px -32px; }
|
130 |
+
.ui-icon-arrow-2-ne-sw { background-position: -144px -32px; }
|
131 |
+
.ui-icon-arrow-2-e-w { background-position: -160px -32px; }
|
132 |
+
.ui-icon-arrow-2-se-nw { background-position: -176px -32px; }
|
133 |
+
.ui-icon-arrowstop-1-n { background-position: -192px -32px; }
|
134 |
+
.ui-icon-arrowstop-1-e { background-position: -208px -32px; }
|
135 |
+
.ui-icon-arrowstop-1-s { background-position: -224px -32px; }
|
136 |
+
.ui-icon-arrowstop-1-w { background-position: -240px -32px; }
|
137 |
+
.ui-icon-arrowthick-1-n { background-position: 0 -48px; }
|
138 |
+
.ui-icon-arrowthick-1-ne { background-position: -16px -48px; }
|
139 |
+
.ui-icon-arrowthick-1-e { background-position: -32px -48px; }
|
140 |
+
.ui-icon-arrowthick-1-se { background-position: -48px -48px; }
|
141 |
+
.ui-icon-arrowthick-1-s { background-position: -64px -48px; }
|
142 |
+
.ui-icon-arrowthick-1-sw { background-position: -80px -48px; }
|
143 |
+
.ui-icon-arrowthick-1-w { background-position: -96px -48px; }
|
144 |
+
.ui-icon-arrowthick-1-nw { background-position: -112px -48px; }
|
145 |
+
.ui-icon-arrowthick-2-n-s { background-position: -128px -48px; }
|
146 |
+
.ui-icon-arrowthick-2-ne-sw { background-position: -144px -48px; }
|
147 |
+
.ui-icon-arrowthick-2-e-w { background-position: -160px -48px; }
|
148 |
+
.ui-icon-arrowthick-2-se-nw { background-position: -176px -48px; }
|
149 |
+
.ui-icon-arrowthickstop-1-n { background-position: -192px -48px; }
|
150 |
+
.ui-icon-arrowthickstop-1-e { background-position: -208px -48px; }
|
151 |
+
.ui-icon-arrowthickstop-1-s { background-position: -224px -48px; }
|
152 |
+
.ui-icon-arrowthickstop-1-w { background-position: -240px -48px; }
|
153 |
+
.ui-icon-arrowreturnthick-1-w { background-position: 0 -64px; }
|
154 |
+
.ui-icon-arrowreturnthick-1-n { background-position: -16px -64px; }
|
155 |
+
.ui-icon-arrowreturnthick-1-e { background-position: -32px -64px; }
|
156 |
+
.ui-icon-arrowreturnthick-1-s { background-position: -48px -64px; }
|
157 |
+
.ui-icon-arrowreturn-1-w { background-position: -64px -64px; }
|
158 |
+
.ui-icon-arrowreturn-1-n { background-position: -80px -64px; }
|
159 |
+
.ui-icon-arrowreturn-1-e { background-position: -96px -64px; }
|
160 |
+
.ui-icon-arrowreturn-1-s { background-position: -112px -64px; }
|
161 |
+
.ui-icon-arrowrefresh-1-w { background-position: -128px -64px; }
|
162 |
+
.ui-icon-arrowrefresh-1-n { background-position: -144px -64px; }
|
163 |
+
.ui-icon-arrowrefresh-1-e { background-position: -160px -64px; }
|
164 |
+
.ui-icon-arrowrefresh-1-s { background-position: -176px -64px; }
|
165 |
+
.ui-icon-arrow-4 { background-position: 0 -80px; }
|
166 |
+
.ui-icon-arrow-4-diag { background-position: -16px -80px; }
|
167 |
+
.ui-icon-extlink { background-position: -32px -80px; }
|
168 |
+
.ui-icon-newwin { background-position: -48px -80px; }
|
169 |
+
.ui-icon-refresh { background-position: -64px -80px; }
|
170 |
+
.ui-icon-shuffle { background-position: -80px -80px; }
|
171 |
+
.ui-icon-transfer-e-w { background-position: -96px -80px; }
|
172 |
+
.ui-icon-transferthick-e-w { background-position: -112px -80px; }
|
173 |
+
.ui-icon-folder-collapsed { background-position: 0 -96px; }
|
174 |
+
.ui-icon-folder-open { background-position: -16px -96px; }
|
175 |
+
.ui-icon-document { background-position: -32px -96px; }
|
176 |
+
.ui-icon-document-b { background-position: -48px -96px; }
|
177 |
+
.ui-icon-note { background-position: -64px -96px; }
|
178 |
+
.ui-icon-mail-closed { background-position: -80px -96px; }
|
179 |
+
.ui-icon-mail-open { background-position: -96px -96px; }
|
180 |
+
.ui-icon-suitcase { background-position: -112px -96px; }
|
181 |
+
.ui-icon-comment { background-position: -128px -96px; }
|
182 |
+
.ui-icon-person { background-position: -144px -96px; }
|
183 |
+
.ui-icon-print { background-position: -160px -96px; }
|
184 |
+
.ui-icon-trash { background-position: -176px -96px; }
|
185 |
+
.ui-icon-locked { background-position: -192px -96px; }
|
186 |
+
.ui-icon-unlocked { background-position: -208px -96px; }
|
187 |
+
.ui-icon-bookmark { background-position: -224px -96px; }
|
188 |
+
.ui-icon-tag { background-position: -240px -96px; }
|
189 |
+
.ui-icon-home { background-position: 0 -112px; }
|
190 |
+
.ui-icon-flag { background-position: -16px -112px; }
|
191 |
+
.ui-icon-calendar { background-position: -32px -112px; }
|
192 |
+
.ui-icon-cart { background-position: -48px -112px; }
|
193 |
+
.ui-icon-pencil { background-position: -64px -112px; }
|
194 |
+
.ui-icon-clock { background-position: -80px -112px; }
|
195 |
+
.ui-icon-disk { background-position: -96px -112px; }
|
196 |
+
.ui-icon-calculator { background-position: -112px -112px; }
|
197 |
+
.ui-icon-zoomin { background-position: -128px -112px; }
|
198 |
+
.ui-icon-zoomout { background-position: -144px -112px; }
|
199 |
+
.ui-icon-search { background-position: -160px -112px; }
|
200 |
+
.ui-icon-wrench { background-position: -176px -112px; }
|
201 |
+
.ui-icon-gear { background-position: -192px -112px; }
|
202 |
+
.ui-icon-heart { background-position: -208px -112px; }
|
203 |
+
.ui-icon-star { background-position: -224px -112px; }
|
204 |
+
.ui-icon-link { background-position: -240px -112px; }
|
205 |
+
.ui-icon-cancel { background-position: 0 -128px; }
|
206 |
+
.ui-icon-plus { background-position: -16px -128px; }
|
207 |
+
.ui-icon-plusthick { background-position: -32px -128px; }
|
208 |
+
.ui-icon-minus { background-position: -48px -128px; }
|
209 |
+
.ui-icon-minusthick { background-position: -64px -128px; }
|
210 |
+
.ui-icon-close { background-position: -80px -128px; }
|
211 |
+
.ui-icon-closethick { background-position: -96px -128px; }
|
212 |
+
.ui-icon-key { background-position: -112px -128px; }
|
213 |
+
.ui-icon-lightbulb { background-position: -128px -128px; }
|
214 |
+
.ui-icon-scissors { background-position: -144px -128px; }
|
215 |
+
.ui-icon-clipboard { background-position: -160px -128px; }
|
216 |
+
.ui-icon-copy { background-position: -176px -128px; }
|
217 |
+
.ui-icon-contact { background-position: -192px -128px; }
|
218 |
+
.ui-icon-image { background-position: -208px -128px; }
|
219 |
+
.ui-icon-video { background-position: -224px -128px; }
|
220 |
+
.ui-icon-script { background-position: -240px -128px; }
|
221 |
+
.ui-icon-alert { background-position: 0 -144px; }
|
222 |
+
.ui-icon-info { background-position: -16px -144px; }
|
223 |
+
.ui-icon-notice { background-position: -32px -144px; }
|
224 |
+
.ui-icon-help { background-position: -48px -144px; }
|
225 |
+
.ui-icon-check { background-position: -64px -144px; }
|
226 |
+
.ui-icon-bullet { background-position: -80px -144px; }
|
227 |
+
.ui-icon-radio-off { background-position: -96px -144px; }
|
228 |
+
.ui-icon-radio-on { background-position: -112px -144px; }
|
229 |
+
.ui-icon-pin-w { background-position: -128px -144px; }
|
230 |
+
.ui-icon-pin-s { background-position: -144px -144px; }
|
231 |
+
.ui-icon-play { background-position: 0 -160px; }
|
232 |
+
.ui-icon-pause { background-position: -16px -160px; }
|
233 |
+
.ui-icon-seek-next { background-position: -32px -160px; }
|
234 |
+
.ui-icon-seek-prev { background-position: -48px -160px; }
|
235 |
+
.ui-icon-seek-end { background-position: -64px -160px; }
|
236 |
+
.ui-icon-seek-start { background-position: -80px -160px; }
|
237 |
+
/* ui-icon-seek-first is deprecated, use ui-icon-seek-start instead */
|
238 |
+
.ui-icon-seek-first { background-position: -80px -160px; }
|
239 |
+
.ui-icon-stop { background-position: -96px -160px; }
|
240 |
+
.ui-icon-eject { background-position: -112px -160px; }
|
241 |
+
.ui-icon-volume-off { background-position: -128px -160px; }
|
242 |
+
.ui-icon-volume-on { background-position: -144px -160px; }
|
243 |
+
.ui-icon-power { background-position: 0 -176px; }
|
244 |
+
.ui-icon-signal-diag { background-position: -16px -176px; }
|
245 |
+
.ui-icon-signal { background-position: -32px -176px; }
|
246 |
+
.ui-icon-battery-0 { background-position: -48px -176px; }
|
247 |
+
.ui-icon-battery-1 { background-position: -64px -176px; }
|
248 |
+
.ui-icon-battery-2 { background-position: -80px -176px; }
|
249 |
+
.ui-icon-battery-3 { background-position: -96px -176px; }
|
250 |
+
.ui-icon-circle-plus { background-position: 0 -192px; }
|
251 |
+
.ui-icon-circle-minus { background-position: -16px -192px; }
|
252 |
+
.ui-icon-circle-close { background-position: -32px -192px; }
|
253 |
+
.ui-icon-circle-triangle-e { background-position: -48px -192px; }
|
254 |
+
.ui-icon-circle-triangle-s { background-position: -64px -192px; }
|
255 |
+
.ui-icon-circle-triangle-w { background-position: -80px -192px; }
|
256 |
+
.ui-icon-circle-triangle-n { background-position: -96px -192px; }
|
257 |
+
.ui-icon-circle-arrow-e { background-position: -112px -192px; }
|
258 |
+
.ui-icon-circle-arrow-s { background-position: -128px -192px; }
|
259 |
+
.ui-icon-circle-arrow-w { background-position: -144px -192px; }
|
260 |
+
.ui-icon-circle-arrow-n { background-position: -160px -192px; }
|
261 |
+
.ui-icon-circle-zoomin { background-position: -176px -192px; }
|
262 |
+
.ui-icon-circle-zoomout { background-position: -192px -192px; }
|
263 |
+
.ui-icon-circle-check { background-position: -208px -192px; }
|
264 |
+
.ui-icon-circlesmall-plus { background-position: 0 -208px; }
|
265 |
+
.ui-icon-circlesmall-minus { background-position: -16px -208px; }
|
266 |
+
.ui-icon-circlesmall-close { background-position: -32px -208px; }
|
267 |
+
.ui-icon-squaresmall-plus { background-position: -48px -208px; }
|
268 |
+
.ui-icon-squaresmall-minus { background-position: -64px -208px; }
|
269 |
+
.ui-icon-squaresmall-close { background-position: -80px -208px; }
|
270 |
+
.ui-icon-grip-dotted-vertical { background-position: 0 -224px; }
|
271 |
+
.ui-icon-grip-dotted-horizontal { background-position: -16px -224px; }
|
272 |
+
.ui-icon-grip-solid-vertical { background-position: -32px -224px; }
|
273 |
+
.ui-icon-grip-solid-horizontal { background-position: -48px -224px; }
|
274 |
+
.ui-icon-gripsmall-diagonal-se { background-position: -64px -224px; }
|
275 |
+
.ui-icon-grip-diagonal-se { background-position: -80px -224px; }
|
276 |
+
|
277 |
+
|
278 |
+
/* Misc visuals
|
279 |
+
----------------------------------*/
|
280 |
+
|
281 |
+
/* Corner radius */
|
282 |
+
.ui-corner-all, .ui-corner-top, .ui-corner-left, .ui-corner-tl { -moz-border-radius-topleft: 3px; -webkit-border-top-left-radius: 3px; border-top-left-radius: 3px; }
|
283 |
+
.ui-corner-all, .ui-corner-top, .ui-corner-right, .ui-corner-tr { -moz-border-radius-topright: 3px; -webkit-border-top-right-radius: 3px; border-top-right-radius: 3px; }
|
284 |
+
.ui-corner-all, .ui-corner-bottom, .ui-corner-left, .ui-corner-bl { -moz-border-radius-bottomleft: 3px; -webkit-border-bottom-left-radius: 3px; border-bottom-left-radius: 3px; }
|
285 |
+
.ui-corner-all, .ui-corner-bottom, .ui-corner-right, .ui-corner-br { -moz-border-radius-bottomright: 3px; -webkit-border-bottom-right-radius: 3px; border-bottom-right-radius: 3px; }
|
286 |
+
|
287 |
+
/* Overlays */
|
288 |
+
.ui-widget-overlay { background: #000000; opacity: .6;filter:Alpha(Opacity=60); }
|
289 |
+
.ui-widget-shadow { box-shadow: 0 0 16px rgba(0, 0, 0, 0.3); }/*
|
290 |
+
* jQuery UI Resizable 1.8.16
|
291 |
+
*
|
292 |
+
* Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
|
293 |
+
* Dual licensed under the MIT or GPL Version 2 licenses.
|
294 |
+
* http://jquery.org/license
|
295 |
+
*
|
296 |
+
* http://docs.jquery.com/UI/Resizable#theming
|
297 |
+
*/
|
298 |
+
.ui-resizable { position: relative;}
|
299 |
+
.ui-resizable-handle { position: absolute;font-size: 0.1px;z-index: 99999; display: block; }
|
300 |
+
.ui-resizable-disabled .ui-resizable-handle, .ui-resizable-autohide .ui-resizable-handle { display: none; }
|
301 |
+
.ui-resizable-n { cursor: n-resize; height: 7px; width: 100%; top: -5px; left: 0; }
|
302 |
+
.ui-resizable-s { cursor: s-resize; height: 7px; width: 100%; bottom: -5px; left: 0; }
|
303 |
+
.ui-resizable-e { cursor: e-resize; width: 7px; right: -5px; top: 0; height: 100%; }
|
304 |
+
.ui-resizable-w { cursor: w-resize; width: 7px; left: -5px; top: 0; height: 100%; }
|
305 |
+
.ui-resizable-se { cursor: se-resize; width: 12px; height: 12px; right: 1px; bottom: 1px; }
|
306 |
+
.ui-resizable-sw { cursor: sw-resize; width: 9px; height: 9px; left: -5px; bottom: -5px; }
|
307 |
+
.ui-resizable-nw { cursor: nw-resize; width: 9px; height: 9px; left: -5px; top: -5px; }
|
308 |
+
.ui-resizable-ne { cursor: ne-resize; width: 9px; height: 9px; right: -5px; top: -5px;}/*
|
309 |
+
* jQuery UI Selectable 1.8.16
|
310 |
+
*
|
311 |
+
* Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
|
312 |
+
* Dual licensed under the MIT or GPL Version 2 licenses.
|
313 |
+
* http://jquery.org/license
|
314 |
+
*
|
315 |
+
* http://docs.jquery.com/UI/Selectable#theming
|
316 |
+
*/
|
317 |
+
.ui-selectable-helper { position: absolute; z-index: 100; border:1px dotted black; }
|
318 |
+
/*
|
319 |
+
* jQuery UI Accordion 1.8.16
|
320 |
+
*
|
321 |
+
* Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
|
322 |
+
* Dual licensed under the MIT or GPL Version 2 licenses.
|
323 |
+
* http://jquery.org/license
|
324 |
+
*
|
325 |
+
* http://docs.jquery.com/UI/Accordion#theming
|
326 |
+
*/
|
327 |
+
/* IE/Win - Fix animation bug - #4615 */
|
328 |
+
.ui-accordion { width: 100%; }
|
329 |
+
.ui-accordion .ui-accordion-header { cursor: pointer; position: relative; margin-top: 1px; zoom: 1; }
|
330 |
+
.ui-accordion .ui-accordion-li-fix { display: inline; }
|
331 |
+
.ui-accordion .ui-accordion-header-active { border-bottom: 0 !important; }
|
332 |
+
.ui-accordion .ui-accordion-header a { display: block; font-size: 1em; padding: .5em .5em .5em .7em; }
|
333 |
+
.ui-accordion-icons .ui-accordion-header a { padding-left: 2.2em; }
|
334 |
+
.ui-accordion .ui-accordion-header .ui-icon { position: absolute; left: .5em; top: 50%; margin-top: -8px; }
|
335 |
+
.ui-accordion .ui-accordion-content { padding: 1em 2.2em; border-top: 0; margin-top: -2px; position: relative; top: 1px; margin-bottom: 2px; overflow: auto; display: none; zoom: 1; }
|
336 |
+
.ui-accordion .ui-accordion-content-active { display: block; }
|
337 |
+
/*
|
338 |
+
* jQuery UI Autocomplete 1.8.16
|
339 |
+
*
|
340 |
+
* Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
|
341 |
+
* Dual licensed under the MIT or GPL Version 2 licenses.
|
342 |
+
* http://jquery.org/license
|
343 |
+
*
|
344 |
+
* http://docs.jquery.com/UI/Autocomplete#theming
|
345 |
+
*/
|
346 |
+
.ui-autocomplete { position: absolute; cursor: default; }
|
347 |
+
|
348 |
+
/* workarounds */
|
349 |
+
* html .ui-autocomplete { width:1px; } /* without this, the menu expands to 100% in IE6 */
|
350 |
+
|
351 |
+
/*
|
352 |
+
* jQuery UI Menu 1.8.16
|
353 |
+
*
|
354 |
+
* Copyright 2010, AUTHORS.txt (http://jqueryui.com/about)
|
355 |
+
* Dual licensed under the MIT or GPL Version 2 licenses.
|
356 |
+
* http://jquery.org/license
|
357 |
+
*
|
358 |
+
* http://docs.jquery.com/UI/Menu#theming
|
359 |
+
*/
|
360 |
+
.ui-menu {
|
361 |
+
list-style:none;
|
362 |
+
padding: 2px;
|
363 |
+
margin: 0;
|
364 |
+
display:block;
|
365 |
+
float: left;
|
366 |
+
}
|
367 |
+
.ui-menu .ui-menu {
|
368 |
+
margin-top: -3px;
|
369 |
+
}
|
370 |
+
.ui-menu .ui-menu-item {
|
371 |
+
margin:0;
|
372 |
+
padding: 0;
|
373 |
+
zoom: 1;
|
374 |
+
float: left;
|
375 |
+
clear: left;
|
376 |
+
width: 100%;
|
377 |
+
}
|
378 |
+
.ui-menu .ui-menu-item a {
|
379 |
+
text-decoration:none;
|
380 |
+
display:block;
|
381 |
+
padding:.2em .4em;
|
382 |
+
line-height:1.5;
|
383 |
+
zoom:1;
|
384 |
+
}
|
385 |
+
.ui-menu .ui-menu-item a.ui-state-hover,
|
386 |
+
.ui-menu .ui-menu-item a.ui-state-active {
|
387 |
+
font-weight: normal;
|
388 |
+
margin: -1px;
|
389 |
+
}
|
390 |
+
/*
|
391 |
+
* jQuery UI Button 1.8.16
|
392 |
+
*
|
393 |
+
* Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
|
394 |
+
* Dual licensed under the MIT or GPL Version 2 licenses.
|
395 |
+
* http://jquery.org/license
|
396 |
+
*
|
397 |
+
* http://docs.jquery.com/UI/Button#theming
|
398 |
+
*/
|
399 |
+
.ui-button { display: inline-block; position: relative; padding: 0; margin-right: .1em; text-decoration: none !important; cursor: pointer; text-align: center; zoom: 1; overflow: visible; } /* the overflow property removes extra width in IE */
|
400 |
+
.ui-button-icon-only { width: 2.2em; } /* to make room for the icon, a width needs to be set here */
|
401 |
+
button.ui-button-icon-only { width: 2.4em; } /* button elements seem to need a little more width */
|
402 |
+
.ui-button-icons-only { width: 3.4em; }
|
403 |
+
button.ui-button-icons-only { width: 3.7em; }
|
404 |
+
|
405 |
+
/*button text element */
|
406 |
+
.ui-button .ui-button-text { display: block; line-height: 1.4; }
|
407 |
+
.ui-button-text-only .ui-button-text { padding: .4em 1em; }
|
408 |
+
.ui-button-icon-only .ui-button-text, .ui-button-icons-only .ui-button-text { padding: .4em; text-indent: -9999999px; }
|
409 |
+
.ui-button-text-icon-primary .ui-button-text, .ui-button-text-icons .ui-button-text { padding: .4em 1em .4em 2.1em; }
|
410 |
+
.ui-button-text-icon-secondary .ui-button-text, .ui-button-text-icons .ui-button-text { padding: .4em 2.1em .4em 1em; }
|
411 |
+
.ui-button-text-icons .ui-button-text { padding-left: 2.1em; padding-right: 2.1em; }
|
412 |
+
/* no icon support for input elements, provide padding by default */
|
413 |
+
input.ui-button { padding: .4em 1em; }
|
414 |
+
|
415 |
+
/*button icon element(s) */
|
416 |
+
.ui-button-icon-only .ui-icon, .ui-button-text-icon-primary .ui-icon, .ui-button-text-icon-secondary .ui-icon, .ui-button-text-icons .ui-icon, .ui-button-icons-only .ui-icon { position: absolute; top: 50%; margin-top: -8px; }
|
417 |
+
.ui-button-icon-only .ui-icon { left: 50%; margin-left: -8px; }
|
418 |
+
.ui-button-text-icon-primary .ui-button-icon-primary, .ui-button-text-icons .ui-button-icon-primary, .ui-button-icons-only .ui-button-icon-primary { left: .5em; }
|
419 |
+
.ui-button-text-icon-secondary .ui-button-icon-secondary, .ui-button-text-icons .ui-button-icon-secondary, .ui-button-icons-only .ui-button-icon-secondary { right: .5em; }
|
420 |
+
.ui-button-text-icons .ui-button-icon-secondary, .ui-button-icons-only .ui-button-icon-secondary { right: .5em; }
|
421 |
+
|
422 |
+
/*button sets*/
|
423 |
+
.ui-buttonset { margin-right: 7px; }
|
424 |
+
.ui-buttonset .ui-button { margin-left: 0; margin-right: -.3em; }
|
425 |
+
|
426 |
+
/* workarounds */
|
427 |
+
button.ui-button::-moz-focus-inner { border: 0; padding: 0; } /* reset extra padding in Firefox */
|
428 |
+
/*
|
429 |
+
* jQuery UI Dialog 1.8.16
|
430 |
+
*
|
431 |
+
* Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
|
432 |
+
* Dual licensed under the MIT or GPL Version 2 licenses.
|
433 |
+
* http://jquery.org/license
|
434 |
+
*
|
435 |
+
* http://docs.jquery.com/UI/Dialog#theming
|
436 |
+
*/
|
437 |
+
.ui-dialog { position: fixed; padding: .2em; width: 300px; overflow: hidden; }
|
438 |
+
.ui-dialog .ui-dialog-titlebar { padding: .4em 1em; position: relative; }
|
439 |
+
.ui-dialog .ui-dialog-title { float: left; margin: .1em 16px .1em 0; }
|
440 |
+
.ui-dialog .ui-dialog-titlebar-close { position: absolute; right: .3em; top: 50%; width: 19px; margin: -10px 0 0 0; padding: 1px; height: 18px; }
|
441 |
+
.ui-dialog .ui-dialog-titlebar-close span { display: block; margin: 1px; }
|
442 |
+
.ui-dialog .ui-dialog-titlebar-close:hover, .ui-dialog .ui-dialog-titlebar-close:focus { padding: 0; }
|
443 |
+
.ui-dialog .ui-dialog-content { position: relative; border: 0; padding: .5em 1em; background: none; overflow: auto; zoom: 1; }
|
444 |
+
.ui-dialog .ui-dialog-buttonpane { text-align: left; border-width: 1px 0 0 0; background-image: none; margin: .5em 0 0 0; padding: .3em 1em .5em .4em; }
|
445 |
+
.ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset { float: right; }
|
446 |
+
.ui-dialog .ui-dialog-buttonpane button { margin: .5em .4em .5em 0; cursor: pointer; }
|
447 |
+
.ui-dialog .ui-resizable-se { width: 14px; height: 14px; right: 3px; bottom: 3px; }
|
448 |
+
.ui-draggable .ui-dialog-titlebar { cursor: move; }
|
449 |
+
/*
|
450 |
+
* jQuery UI Slider 1.8.16
|
451 |
+
*
|
452 |
+
* Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
|
453 |
+
* Dual licensed under the MIT or GPL Version 2 licenses.
|
454 |
+
* http://jquery.org/license
|
455 |
+
*
|
456 |
+
* http://docs.jquery.com/UI/Slider#theming
|
457 |
+
*/
|
458 |
+
.ui-slider { position: relative; text-align: left; }
|
459 |
+
.ui-slider .ui-slider-handle { position: absolute; z-index: 2; width: 1.2em; height: 1.2em; cursor: default; }
|
460 |
+
.ui-slider .ui-slider-range { position: absolute; z-index: 1; font-size: .7em; display: block; border: 0; background-position: 0 0; }
|
461 |
+
|
462 |
+
.ui-slider-horizontal { height: .8em; }
|
463 |
+
.ui-slider-horizontal .ui-slider-handle { top: -.3em; margin-left: -.6em; }
|
464 |
+
.ui-slider-horizontal .ui-slider-range { top: 0; height: 100%; }
|
465 |
+
.ui-slider-horizontal .ui-slider-range-min { left: 0; }
|
466 |
+
.ui-slider-horizontal .ui-slider-range-max { right: 0; }
|
467 |
+
|
468 |
+
.ui-slider-vertical { width: .8em; height: 100px; }
|
469 |
+
.ui-slider-vertical .ui-slider-handle { left: -.3em; margin-left: 0; margin-bottom: -.6em; }
|
470 |
+
.ui-slider-vertical .ui-slider-range { left: 0; width: 100%; }
|
471 |
+
.ui-slider-vertical .ui-slider-range-min { bottom: 0; }
|
472 |
+
.ui-slider-vertical .ui-slider-range-max { top: 0; }/*
|
473 |
+
* jQuery UI Tabs 1.8.16
|
474 |
+
*
|
475 |
+
* Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
|
476 |
+
* Dual licensed under the MIT or GPL Version 2 licenses.
|
477 |
+
* http://jquery.org/license
|
478 |
+
*
|
479 |
+
* http://docs.jquery.com/UI/Tabs#theming
|
480 |
+
*/
|
481 |
+
.ui-tabs { position: relative; padding: .2em; zoom: 1; } /* position: relative prevents IE scroll bug (element with position: relative inside container with overflow: auto appear as "fixed") */
|
482 |
+
.ui-tabs .ui-tabs-nav { margin: 0; padding: .2em .2em 0; }
|
483 |
+
.ui-tabs .ui-tabs-nav li { list-style: none; float: left; position: relative; top: 1px; margin: 0 .2em 1px 0; border-bottom: 0 !important; padding: 0; white-space: nowrap; }
|
484 |
+
.ui-tabs .ui-tabs-nav li a { float: left; padding: .5em 1em; text-decoration: none; }
|
485 |
+
.ui-tabs .ui-tabs-nav li.ui-tabs-selected { margin-bottom: 0; padding-bottom: 1px; }
|
486 |
+
.ui-tabs .ui-tabs-nav li.ui-tabs-selected a, .ui-tabs .ui-tabs-nav li.ui-state-disabled a, .ui-tabs .ui-tabs-nav li.ui-state-processing a { cursor: text; }
|
487 |
+
.ui-tabs .ui-tabs-nav li a, .ui-tabs.ui-tabs-collapsible .ui-tabs-nav li.ui-tabs-selected a { cursor: pointer; } /* first selector in group seems obsolete, but required to overcome bug in Opera applying cursor: text overall if defined elsewhere... */
|
488 |
+
.ui-tabs .ui-tabs-panel { display: block; border-width: 0; padding: 1em 1.4em; background: none; }
|
489 |
+
.ui-tabs .ui-tabs-hide { display: none !important; }
|
490 |
+
/*
|
491 |
+
* jQuery UI Datepicker 1.8.16
|
492 |
+
*
|
493 |
+
* Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
|
494 |
+
* Dual licensed under the MIT or GPL Version 2 licenses.
|
495 |
+
* http://jquery.org/license
|
496 |
+
*
|
497 |
+
* http://docs.jquery.com/UI/Datepicker#theming
|
498 |
+
*/
|
499 |
+
.ui-datepicker { width: 17em; padding: .2em .2em 0; display: none; }
|
500 |
+
.ui-datepicker .ui-datepicker-header { position:relative; padding:.2em 0; }
|
501 |
+
.ui-datepicker .ui-datepicker-prev, .ui-datepicker .ui-datepicker-next { position:absolute; top: 2px; width: 1.8em; height: 1.8em; }
|
502 |
+
.ui-datepicker .ui-datepicker-prev-hover, .ui-datepicker .ui-datepicker-next-hover { top: 1px; }
|
503 |
+
.ui-datepicker .ui-datepicker-prev { left:2px; }
|
504 |
+
.ui-datepicker .ui-datepicker-next { right:2px; }
|
505 |
+
.ui-datepicker .ui-datepicker-prev-hover { left:1px; }
|
506 |
+
.ui-datepicker .ui-datepicker-next-hover { right:1px; }
|
507 |
+
.ui-datepicker .ui-datepicker-prev span, .ui-datepicker .ui-datepicker-next span { display: block; position: absolute; left: 50%; margin-left: -8px; top: 50%; margin-top: -8px; }
|
508 |
+
.ui-datepicker .ui-datepicker-title { margin: 0 2.3em; line-height: 1.8em; text-align: center; }
|
509 |
+
.ui-datepicker .ui-datepicker-title select { font-size:1em; margin:1px 0; }
|
510 |
+
.ui-datepicker select.ui-datepicker-month-year {width: 100%;}
|
511 |
+
.ui-datepicker select.ui-datepicker-month,
|
512 |
+
.ui-datepicker select.ui-datepicker-year { width: 49%;}
|
513 |
+
.ui-datepicker table {width: 100%; font-size: .9em; border-collapse: collapse; margin:0 0 .4em; }
|
514 |
+
.ui-datepicker th { padding: .7em .3em; text-align: center; font-weight: bold; border: 0; }
|
515 |
+
.ui-datepicker td { border: 0; padding: 1px; }
|
516 |
+
.ui-datepicker td span, .ui-datepicker td a { display: block; padding: .2em; text-align: right; text-decoration: none; }
|
517 |
+
.ui-datepicker .ui-datepicker-buttonpane { background-image: none; margin: .7em 0 0 0; padding:0 .2em; border-left: 0; border-right: 0; border-bottom: 0; }
|
518 |
+
.ui-datepicker .ui-datepicker-buttonpane button { float: right; margin: .5em .2em .4em; cursor: pointer; padding: .2em .6em .3em .6em; width:auto; overflow:visible; }
|
519 |
+
.ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current { float:left; }
|
520 |
+
|
521 |
+
/* with multiple calendars */
|
522 |
+
.ui-datepicker.ui-datepicker-multi { width:auto; }
|
523 |
+
.ui-datepicker-multi .ui-datepicker-group { float:left; }
|
524 |
+
.ui-datepicker-multi .ui-datepicker-group table { width:95%; margin:0 auto .4em; }
|
525 |
+
.ui-datepicker-multi-2 .ui-datepicker-group { width:50%; }
|
526 |
+
.ui-datepicker-multi-3 .ui-datepicker-group { width:33.3%; }
|
527 |
+
.ui-datepicker-multi-4 .ui-datepicker-group { width:25%; }
|
528 |
+
.ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header { border-left-width:0; }
|
529 |
+
.ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header { border-left-width:0; }
|
530 |
+
.ui-datepicker-multi .ui-datepicker-buttonpane { clear:left; }
|
531 |
+
.ui-datepicker-row-break { clear:both; width:100%; font-size:0em; }
|
532 |
+
|
533 |
+
/* RTL support */
|
534 |
+
.ui-datepicker-rtl { direction: rtl; }
|
535 |
+
.ui-datepicker-rtl .ui-datepicker-prev { right: 2px; left: auto; }
|
536 |
+
.ui-datepicker-rtl .ui-datepicker-next { left: 2px; right: auto; }
|
537 |
+
.ui-datepicker-rtl .ui-datepicker-prev:hover { right: 1px; left: auto; }
|
538 |
+
.ui-datepicker-rtl .ui-datepicker-next:hover { left: 1px; right: auto; }
|
539 |
+
.ui-datepicker-rtl .ui-datepicker-buttonpane { clear:right; }
|
540 |
+
.ui-datepicker-rtl .ui-datepicker-buttonpane button { float: left; }
|
541 |
+
.ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current { float:right; }
|
542 |
+
.ui-datepicker-rtl .ui-datepicker-group { float:right; }
|
543 |
+
.ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header { border-right-width:0; border-left-width:1px; }
|
544 |
+
.ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header { border-right-width:0; border-left-width:1px; }
|
545 |
+
|
546 |
+
/* IE6 IFRAME FIX (taken from datepicker 1.5.3 */
|
547 |
+
.ui-datepicker-cover {
|
548 |
+
display: none; /*sorry for IE5*/
|
549 |
+
display/**/: block; /*sorry for IE5*/
|
550 |
+
position: absolute; /*must have*/
|
551 |
+
z-index: -1; /*must have*/
|
552 |
+
filter: mask(); /*must have*/
|
553 |
+
top: -4px; /*must have*/
|
554 |
+
left: -4px; /*must have*/
|
555 |
+
width: 200px; /*must have*/
|
556 |
+
height: 200px; /*must have*/
|
557 |
+
}/*
|
558 |
+
* jQuery UI Progressbar 1.8.16
|
559 |
+
*
|
560 |
+
* Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
|
561 |
+
* Dual licensed under the MIT or GPL Version 2 licenses.
|
562 |
+
* http://jquery.org/license
|
563 |
+
*
|
564 |
+
* http://docs.jquery.com/UI/Progressbar#theming
|
565 |
+
*/
|
566 |
+
.ui-progressbar { height:2em; text-align: left; }
|
567 |
+
.ui-progressbar .ui-progressbar-value {margin: -1px; height:100%; }
|
568 |
+
.ui-progressbar .ui-widget-header {
|
569 |
+
background-color: #83B4D8;
|
570 |
+
background-image: linear-gradient(bottom, rgb(114,167,207) 0%, rgb(144,197,238) 100%);
|
571 |
+
background-image: -o-linear-gradient(bottom, rgb(114,167,207) 0%, rgb(144,197,238) 100%);
|
572 |
+
background-image: -moz-linear-gradient(bottom, rgb(114,167,207) 0%, rgb(144,197,238) 100%);
|
573 |
+
background-image: -webkit-linear-gradient(bottom, rgb(114,167,207) 0%, rgb(144,197,238) 100%);
|
574 |
+
background-image: -ms-linear-gradient(bottom, rgb(114,167,207) 0%, rgb(144,197,238) 100%);
|
575 |
+
}
|
assets/fonts/genericons-regular-webfont.eot
ADDED
Binary file
|
assets/fonts/genericons-regular-webfont.svg
ADDED
@@ -0,0 +1,135 @@
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
1 |
+
<?xml version="1.0" standalone="no"?>
|
2 |
+
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" >
|
3 |
+
<svg xmlns="http://www.w3.org/2000/svg">
|
4 |
+
<metadata></metadata>
|
5 |
+
<defs>
|
6 |
+
<font id="genericonsregular" horiz-adv-x="2048" >
|
7 |
+
<font-face units-per-em="2048" ascent="1638" descent="-410" />
|
8 |
+
<missing-glyph horiz-adv-x="500" />
|
9 |
+
<glyph unicode="◼" horiz-adv-x="500" d="M0 0z" />
|
10 |
+
<glyph unicode="" d="M512 512v128h768v-128h-768zM512 768v128h256v-128h-256zM512 1024v128h640v-128h-640zM512 1280v128h1024v-128h-1024zM896 768v128h640v-128h-640zM1280 1024v128h256v-128h-256z" />
|
11 |
+
<glyph unicode="" d="M256 1024q0 209 103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5t-103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5zM768 1024q0 -106 75 -181t181 -75t181 75t75 181t-75 181t-181 75t-181 -75t-75 -181z" />
|
12 |
+
<glyph unicode="" d="M128 384v896l512 128l128 256h512l128 -256l512 -128v-896h-1792zM256 1440v160h256v-96zM576 960q0 -185 131.5 -316.5t316.5 -131.5q186 0 317 131.5t131 316.5q0 186 -131 317t-317 131q-185 0 -316.5 -131t-131.5 -317zM704 960q0 133 93.5 226.5t226.5 93.5 t226.5 -93.5t93.5 -226.5q0 -132 -93.5 -226t-226.5 -94t-226.5 94t-93.5 226z" />
|
13 |
+
<glyph unicode="" d="M128 512v384h384v-384h-384zM128 1024v384h896v-384h-896zM640 512v384h384v-384h-384zM1152 512v896h896v-896h-896z" />
|
14 |
+
<glyph unicode="" d="M512 384v1280l1152 -640z" />
|
15 |
+
<glyph unicode="" d="M640 1408q0 159 112.5 271.5t271.5 112.5t271.5 -112.5t112.5 -271.5q0 -124 -71.5 -222t-184.5 -138v-536l-256 -128v664q-113 40 -184.5 138t-71.5 222z" />
|
16 |
+
<glyph unicode="" d="M256 896v640h640v-640q0 -212 -150 -362t-362 -150v256q106 0 181 75t75 181h-384zM1152 896v640h640v-640q0 -212 -150 -362t-362 -150v256q106 0 181 75t75 181h-384z" />
|
17 |
+
<glyph unicode="" d="M512 704v384q0 97 53 176.5t139 116.5v-151q-64 -57 -64 -142v-384q0 -80 56 -136t136 -56t136 56t56 136v384q0 85 -64 142v151q86 -37 139 -116.5t53 -176.5v-384q0 -133 -93.5 -226.5t-226.5 -93.5t-226.5 93.5t-93.5 226.5zM768 1088v384q0 133 93.5 226.5 t226.5 93.5t226.5 -93.5t93.5 -226.5v-384q0 -97 -53 -176.5t-139 -116.5v151q64 57 64 142v384q0 80 -56 136t-136 56t-136 -56t-56 -136v-384q0 -85 64 -142v-151q-86 37 -139 116.5t-53 176.5z" />
|
18 |
+
<glyph unicode="" d="M0 1152v384q0 96 80 176t176 80h1024q96 0 176 -80t80 -176v-384q0 -96 -80 -176t-176 -80h-448l-448 -448v448h-128q-96 0 -176 80t-80 176zM768 640l128 128h384q168 0 276 108t108 276v384q96 0 176 -80t80 -176v-384q0 -96 -80 -176t-176 -80h-128v-448l-448 448 h-320z" />
|
19 |
+
<glyph unicode="" d="M256 768v512h384l384 384v-1280l-384 384h-384zM1205 843q75 75 75 181t-75 181l91 91q26 -27 46.5 -57.5t35 -65t22.5 -72.5t8 -77q0 -78 -29.5 -148t-82.5 -124zM1386 662q71 71 110.5 164.5t39.5 197.5t-39.5 197.5t-110.5 164.5l91 91q88 -89 137.5 -206t49.5 -247 q0 -87 -23 -170t-64.5 -153.5t-99.5 -129.5z" />
|
20 |
+
<glyph unicode="" d="M0 1024q0 208 81 398t218.5 327t327 218t397.5 81q209 0 398.5 -81t326.5 -218t218 -326.5t81 -398.5q0 -335 -195.5 -601.5t-504.5 -369.5q-36 -7 -53 8.5t-17 40.5q0 4 0.5 102t0.5 179q0 130 -69 189q77 9 137.5 24.5t124.5 51.5t107 89t70.5 140t27.5 201 q0 161 -105 274q6 15 11 35t9 56t-3.5 83.5t-26.5 96.5q-4 1 -10.5 2t-32 -1t-55.5 -11t-79.5 -33.5t-104.5 -61.5q-118 33 -256 35q-138 -2 -256 -35q-55 37 -104 61.5t-80 33t-54.5 11.5t-33.5 1l-10 -2q-58 -146 -10 -271q-105 -115 -105 -274q0 -114 27.5 -201 t70.5 -140t107 -89t124.5 -52t136.5 -24q-53 -47 -65 -137q-28 -13 -59.5 -20t-75.5 -6.5t-87.5 28.5t-75.5 83q-2 4 -6.5 10.5t-19 24t-31.5 31t-44 25.5t-56 14h-10t-18.5 -3.5t-17 -9t4 -18.5t34.5 -31q3 -1 7.5 -4t19 -14.5t27.5 -27t30 -43.5t30 -61q1 -3 2.5 -7t8 -17 t15.5 -25.5t24.5 -28t33.5 -28t45 -23.5t57.5 -16t71.5 -3.5t87 11.5q0 -50 0.5 -110t0.5 -64q0 -24 -17 -40t-53 -10q-309 103 -504.5 370t-195.5 602z" />
|
21 |
+
<glyph unicode="" d="M0 1024q0 206 82 395.5t219.5 327t327 219.5t395.5 82t395.5 -82t327 -219.5t219.5 -327t82 -395.5t-82 -395.5t-219.5 -327t-327 -219.5t-395.5 -82t-395.5 82t-327 219.5t-219.5 327t-82 395.5zM128 1024q0 -167 58 -319.5t166 -272.5q125 205 339 360t445 232 q-16 48 -80 176q-282 -86 -481.5 -111t-446.5 -1v-64zM160 1232q194 -22 444 14t388 82q-141 282 -320 528q-194 -85 -329.5 -247.5t-182.5 -376.5zM480 320q216 -192 544 -192q181 0 368 80q-33 300 -208 688q-222 -74 -410 -225.5t-294 -350.5zM832 1904 q102 -166 304 -512q6 2 86 31t118.5 45t108 47t122 64t93.5 69q-126 126 -290.5 199t-349.5 73q-32 0 -96 -8t-96 -8zM1200 1248q22 -29 36.5 -54.5t34 -67.5t25.5 -54q170 33 336 30t288 -30q-26 285 -160 464q-71 -57 -162 -104.5t-214.5 -100.5t-183.5 -83zM1344 928 q14 -27 43 -103t74.5 -231t74.5 -306q156 108 258 278t126 362q-276 46 -576 0z" />
|
22 |
+
<glyph unicode="" d="M128 465q48 -5 88 -5q256 0 456 157q-119 2 -213 73.5t-130 182.5q39 -7 69 -7q47 0 97 13q-127 26 -211 127t-84 233v5q80 -43 167 -46q-76 50 -120 131t-44 175q0 101 50 185q138 -170 335 -271.5t423 -112.5q-10 39 -10 84q0 152 108 259.5t260 107.5q160 0 268 -116 q128 26 233 89q-42 -132 -161 -203q109 13 211 58q-73 -111 -183 -191q0 -7 0.5 -23t0.5 -24q0 -122 -31 -246t-89.5 -241t-149.5 -218.5t-204 -177.5t-260.5 -119.5t-311.5 -43.5q-305 0 -564 165z" />
|
23 |
+
<glyph unicode="" d="M128 384v1280q0 106 75 181t181 75h1280q106 0 181 -75t75 -181v-1280q0 -106 -75 -181t-181 -75h-282v711h270l12 260h-282v192v12q0 60 21.5 87.5t87.5 27.5l166 -1l6 242q-78 10 -183 10q-94 0 -167 -27.5t-117 -74.5t-66 -105.5t-22 -126.5v-236h-254v-260h254v-711 h-724q-106 0 -181 75t-75 181z" />
|
24 |
+
<glyph unicode="" d="M640 969v303h222v258q0 78 26 147t77 124t136.5 87t194.5 32q55 0 108 -3t79 -6l26 -3l-7 -282h-193q-76 0 -101.5 -32t-25.5 -101v-14v-207h329l-14 -303h-315v-841h-320v841h-222z" />
|
25 |
+
<glyph unicode="" d="M128 1024q0 182 71 348t191 286t286 191t348 71t348 -71t286 -191t191 -286t71 -348t-71 -348t-191 -286t-286 -191t-348 -71t-348 71t-286 191t-191 286t-71 348zM218 1024q0 -236 125 -430.5t330 -294.5l-385 1053q-70 -156 -70 -328zM351 1466h52q37 0 91 2.5t89 4.5 l34 3q21 1 30.5 -14.5t2.5 -32.5t-27 -20q-44 -5 -93 -7l294 -873l176 529l-125 344l-85 7q-20 2 -27.5 19t2.5 33t30 15q133 -10 212 -10q38 0 91.5 2.5t88.5 4.5l35 3q16 1 25.5 -8.5t10 -22t-7 -23.5t-23.5 -13q-43 -5 -92 -7l291 -866l81 268q24 79 32.5 107.5 t18.5 74.5t10 79q0 46 -11.5 90.5t-23.5 71t-32 60.5q-2 4 -11.5 19t-12 20t-10.5 18.5t-11 19t-9 17.5t-8.5 19t-6.5 18t-5.5 19.5t-3 18.5t-1.5 20q0 57 39 100t97 43l10 -1q-110 101 -249.5 156.5t-294.5 55.5q-207 0 -385 -98t-288 -266zM796 251q112 -33 228 -33 q138 0 268 46q-4 6 -6 11l-248 679zM1429 328q183 106 292 291.5t109 404.5q0 207 -99 386q5 -40 5 -82q0 -135 -61 -289z" />
|
26 |
+
<glyph unicode="" d="M128 486v485q125 -127 330 -127q30 0 59 3q-32 -61 -32 -118q0 -33 13 -63t28.5 -48.5t45.5 -47.5q-18 0 -54.5 -0.5t-55.5 -0.5q-183 0 -334 -83zM128 1599v65q0 106 75 181t181 75h1280q106 0 181 -75t75 -181v-128h-256v256h-128v-256h-256v-128h256v-256h128v256h256 v-1024q0 -106 -75 -181t-181 -75h-507q5 28 5 50q0 143 -46.5 230t-189.5 194q-3 2 -20.5 15t-25 19t-25.5 20t-27.5 22.5t-24 22t-23 23.5t-17 22t-12.5 22.5t-4 20.5q0 52 23 87t99 94q180 141 180 324q0 113 -45 204.5t-128 139.5h160l135 142h-607q-127 0 -241.5 -49 t-194.5 -132zM139 309q57 85 166 137.5t237 51.5q84 -1 158 -26q19 -13 62 -42.5t61 -42t48 -37t44.5 -41.5t29 -41.5t21.5 -49.5q7 -29 7 -66q0 -16 -1 -24h-588q-85 0 -153 50.5t-92 130.5zM228 1307q-21 161 50.5 269.5t194.5 104.5q121 -4 215.5 -118.5t116.5 -277.5 q21 -160 -43 -256t-187 -92q-125 4 -225.5 108t-121.5 262z" />
|
27 |
+
<glyph unicode="" d="M256 1553q0 -73 50.5 -122t131.5 -49h2q84 0 135 49t51 122q-1 75 -51 123t-133 48t-134.5 -48.5t-51.5 -122.5zM275 256h330v991h-330v-991zM787 256h329v553q0 54 11 81q20 50 63 85t106 35q58 0 96 -29t54.5 -77.5t16.5 -117.5v-530h329v568q0 112 -28.5 198 t-80 139.5t-120 81t-150.5 27.5q-36 0 -69 -5.5t-58.5 -15t-49 -23t-40 -27t-32.5 -31t-26.5 -31.5t-21.5 -31v141h-329q1 -26 1.5 -138t0.5 -252.5t-0.5 -277.5t-1.5 -230v-93z" />
|
28 |
+
<glyph unicode="" d="M128 384v1280q0 106 75 181t181 75h1280q106 0 181 -75t75 -181v-1280q0 -106 -75 -181t-181 -75h-1280q-106 0 -181 75t-75 181zM384 1422q0 -58 40.5 -97.5t105.5 -39.5h1q67 0 108.5 39.5t41.5 97.5q-2 60 -42 98.5t-106 38.5q-67 0 -108 -39t-41 -98zM400 384h263 v793h-263v-793zM809 384h264v443q0 45 8 64q16 40 50.5 68t85.5 28q133 0 133 -179v-424h264v455q0 175 -83.5 266t-220.5 91q-50 0 -90.5 -12t-68.5 -34t-45 -41t-33 -44v112h-264v-793z" />
|
29 |
+
<glyph unicode="" d="M171 1260q0 109 35.5 219t110 213t179 182t254 126.5t323.5 47.5q176 0 327.5 -60.5t253.5 -161t160 -231t58 -270.5q0 -246 -85 -443t-241 -309.5t-355 -112.5q-99 0 -186.5 46.5t-121.5 110.5q-73 -290 -89 -347q-34 -123 -127 -270l-149 54q-7 167 22 290l162 688 q-40 81 -40 200q0 139 70.5 232.5t172.5 93.5q83 0 127 -53.5t44 -135.5q0 -51 -18.5 -124t-49 -170t-44.5 -154q-23 -99 37.5 -171t161.5 -72q117 0 209.5 92t142 244.5t49.5 334.5q0 214 -139 349t-387 135q-139 0 -257.5 -49.5t-197 -133t-122.5 -193t-44 -229.5 q0 -147 83 -247q18 -21 21.5 -34t-3.5 -37q-16 -61 -25 -101q-7 -24 -24.5 -32t-39.5 1q-127 51 -192.5 181.5t-65.5 300.5z" />
|
30 |
+
<glyph unicode="" d="M0 1024q0 208 81 398t218.5 327t327 218t397.5 81q209 0 398.5 -81t326.5 -218t218 -326.5t81 -398.5t-81 -398.5t-218 -326.5t-326.5 -218t-398.5 -81q-147 0 -290 42q74 116 103 219l72 282q28 -53 99 -90.5t151 -37.5q162 0 288.5 91.5t195.5 251t69 359.5 q0 114 -47 220t-130 187.5t-206.5 130.5t-265.5 49q-141 0 -262 -38.5t-205.5 -103t-145.5 -147.5t-89.5 -172.5t-28.5 -178.5q0 -138 53 -243.5t156 -147.5q18 -8 32.5 -1t18.5 26q2 9 10 41t11 41q5 19 2.5 30t-16.5 28q-68 78 -68 200q0 97 35.5 186t99.5 156.5t160 108 t209 40.5q201 0 313.5 -109.5t112.5 -283.5q0 -148 -40 -271.5t-115 -198t-169 -74.5q-82 0 -131.5 58.5t-30.5 138.5q11 46 35.5 125t39.5 138t15 101q0 66 -35.5 109.5t-102.5 43.5q-82 0 -139.5 -76t-57.5 -189q0 -43 8 -83.5t16 -59.5l9 -19q-113 -475 -132 -558 q-24 -97 -18 -235q-275 120 -444 374t-169 564z" />
|
31 |
+
<glyph unicode="" d="M160 1024q0 -172 122 -294t294 -122t294 122t122 294t-122 294t-294 122t-294 -122t-122 -294zM1056 1024q0 -172 122 -294t294 -122t294 122t122 294t-122 294t-294 122t-294 -122t-122 -294z" />
|
32 |
+
<glyph unicode="" d="M128 1379l84 -108q121 84 141 84q92 0 173 -287l144 -525q108 -287 265 -287q253 0 619 471q353 451 365 710q16 347 -260 355q-373 12 -505 -417q69 29 133 29q136 0 120 -152q-8 -92 -120 -268q-113 -176 -169 -176q-73 0 -133 271q-20 79 -72 407q-49 303 -258 284 q-89 -8 -265 -160q-127 -113 -262 -231z" />
|
33 |
+
<glyph unicode="" d="M128 768v512q0 159 112.5 271.5t271.5 112.5h1024q159 0 271.5 -112.5t112.5 -271.5v-512q0 -159 -112.5 -271.5t-271.5 -112.5h-1024q-159 0 -271.5 112.5t-112.5 271.5zM768 640l640 384l-640 384v-768z" />
|
34 |
+
<glyph unicode="" d="M472 1186h198v-629q0 -121 26 -187q26 -65 92 -122t161 -89q93 -31 218 -31q110 0 201 22q88 20 208 76v282q-134 -88 -271 -88q-76 0 -136 36q-44 25 -61 70q-17 46 -17 200v460h426v281h-426v453h-255q-17 -139 -62 -228q-48 -93 -121 -154q-74 -64 -181 -99v-253z" />
|
35 |
+
<glyph unicode="" d="M128 384v1280q0 106 75 181t181 75h1280q106 0 181 -75t75 -181v-1280q0 -106 -75 -181t-181 -75h-1280q-106 0 -181 75t-75 181zM256 384q0 -53 37.5 -90.5t90.5 -37.5h1280q53 0 90.5 37.5t37.5 90.5v768h-272q16 -66 16 -128q0 -212 -150 -362t-362 -150t-362 150 t-150 362q0 62 16 128h-272v-768zM640 1024q0 -159 112.5 -271.5t271.5 -112.5t271.5 112.5t112.5 271.5t-112.5 271.5t-271.5 112.5t-271.5 -112.5t-112.5 -271.5zM1408 1536q0 -53 37.5 -90.5t90.5 -37.5h128q53 0 90.5 37.5t37.5 90.5v128q0 53 -37.5 90.5t-90.5 37.5 h-128q-53 0 -90.5 -37.5t-37.5 -90.5v-128z" />
|
36 |
+
<glyph unicode="" d="M256 790v467q0 31 29 55l702 467q17 11 37 11t37 -11l702 -467q29 -24 29 -55v-467q0 -32 -29 -54l-702 -468q-17 -11 -37 -11q-18 0 -37 11l-702 468q-29 22 -29 54zM388 914l165 110l-165 110v-220zM441 790l517 -344v308l-286 191zM441 1257l231 -154l286 191v307z M791 1024l233 -156l234 156l-234 156zM1090 446l517 344l-231 155l-286 -191v-308zM1090 1294l286 -191l231 154l-517 344v-307zM1495 1024l165 -110v220z" />
|
37 |
+
<glyph unicode="" d="M128 1024q0 182 71 348t191 286t286 191t348 71t348 -71t286 -191t191 -286t71 -348t-71 -348t-191 -286t-286 -191t-348 -71t-348 71t-286 191t-191 286t-71 348zM208 1024q0 -221 109.5 -409t297.5 -297.5t409 -109.5q236 0 432 123.5t298 327.5q59 136 59 266 q0 117 -43.5 221.5t-118.5 182.5t-175.5 131t-215.5 73q116 -48 204 -145t127 -218q54 -151 17.5 -320t-150.5 -289q-111 -123 -276 -179t-332 -27q-168 27 -307 138t-210 270q-74 156 -67.5 338.5t93.5 335.5q88 155 238.5 260t328.5 135q2 0 35 6q-208 -16 -380.5 -128 t-272.5 -293.5t-100 -392.5zM359 998q17 -148 100 -275.5t207 -200.5q120 -71 264 -78.5t267 49.5q-76 -21 -148 -21q-149 0 -275.5 74t-200.5 201t-74 276q0 214 146 373l3 3l14 14l1 1q98 114 235 178t293 64q163 0 306 -70t241 -193q-36 57 -70 96q-104 126 -250 200.5 t-305 80.5q-157 7 -306.5 -51.5t-258.5 -169.5q-109 -107 -159 -254.5t-30 -296.5zM612 1025q8 -119 85 -217t186 -128q110 -33 221.5 8.5t170.5 134.5q61 91 50 204t-86 187q-70 77 -179.5 87t-188.5 -50q-85 -62 -105 -157q-21 -98 30 -182q50 -84 142 -108q92 -23 172 26 q38 23 64 58.5t34 76.5q17 88 -34 159q-52 72 -136 77q-83 6 -142 -54q-57 -55 -45 -138q6 -37 27.5 -68.5t52.5 -47.5q40 -21 87 -16q-46 1 -82 29t-49 71l-2 3q-14 30 -9.5 67t25.5 66q22 30 56.5 46.5t72.5 14.5t73.5 -23.5t54.5 -55.5q46 -76 8 -158 q-18 -39 -53.5 -66.5t-78.5 -35.5q-43 -9 -88.5 3.5t-78.5 43.5q-74 68 -68 169q2 65 45 118.5t109.5 77t132.5 5.5q68 -16 118.5 -70.5t65 -124.5t-9.5 -144q-37 -107 -150 -158.5t-224 -8.5q-114 43 -170 158q-55 117 -17 238q35 121 152 191t246 47q131 -19 223 -128 t95 -246q6 -142 -81 -257q-86 -115 -225 -157q-114 -35 -234 -7q83 -34 174 -34q195 0 333.5 138.5t138.5 333.5v2q-10 107 -63.5 202.5t-137.5 157.5q-102 77 -236 87t-243 -49q-116 -62 -177 -167q-61 -107 -52 -231z" />
|
38 |
+
<glyph unicode="" d="M128 464q0 -66 32 -125.5t92.5 -107t159 -75.5t222.5 -28q117 0 218.5 25t174 68t124 99.5t76.5 120.5t25 131q0 40 -6.5 74.5t-22.5 65t-30.5 53t-41.5 50t-45 43t-51 44.5l-85 66q-19 15 -28.5 24.5t-21 31t-11.5 45.5t12 47.5t21.5 34.5t32.5 33q37 29 59 48t52 52 t46 64t28 75.5t12 94.5q0 43 -8 82t-23.5 70.5t-30.5 55.5t-38 47.5t-35 34.5t-32 27h146l151 85h-485q-264 0 -421 -129q-73 -64 -111.5 -147.5t-38.5 -167.5q0 -56 16 -109.5t49.5 -100.5t79.5 -82.5t109 -56.5t136 -21q19 0 75 5q0 -2 -4 -10.5t-4.5 -10.5t-3.5 -9.5 t-4 -11l-3 -10.5t-2.5 -12.5t-1 -13t-0.5 -14.5q0 -26 5 -48t18.5 -45t20.5 -32.5t26 -34.5q-61 -4 -98 -7.5t-107 -14.5t-131.5 -32.5t-112.5 -53.5q-50 -29 -86.5 -66.5t-56.5 -76.5t-29 -74.5t-9 -69.5zM335 514q0 47 17 87.5t38.5 64.5t54 45t50.5 28.5t42 16.5 q35 11 76.5 19.5t77.5 12t58.5 5t34.5 1.5q35 0 54 -3q51 -36 82 -59t63.5 -50.5t50.5 -48.5t33.5 -46t21.5 -50.5t6 -55.5q0 -113 -91 -183.5t-255 -70.5q-187 0 -300.5 80t-113.5 207zM453 1591q0 110 51 174q28 35 73.5 56t91.5 21q56 0 105.5 -28.5t83.5 -74.5 t59 -103.5t36.5 -115.5t11.5 -110q0 -113 -59 -172q-18 -19 -44 -33.5t-56.5 -23.5t-58.5 -9q-58 0 -108 28.5t-83.5 73.5t-57.5 101.5t-34.5 111.5t-10.5 104zM1408 1024v128h256v256h128v-256h256v-128h-256v-256h-128v256h-256z" />
|
39 |
+
<glyph unicode="" d="M134.5 1267.5q5.5 80.5 41 179.5t102.5 191q70 78 153.5 135t167 86.5t172 45.5t169 15t156.5 -8t137.5 -21t107.5 -26.5t72 -22.5l25 -9q12 -5 32 -14.5t74.5 -45.5t101 -78.5t97 -114.5t78 -153t27.5 -194.5t-40 -238.5q-43 -89 -97 -157.5t-109.5 -110t-115.5 -69 t-115.5 -37t-107.5 -12t-95.5 4t-76 13t-49.5 13.5l-18 6v-277q-1 -3 -2 -9t-6.5 -23t-14 -34t-24.5 -39.5t-36 -42t-51.5 -39.5t-68.5 -33q-52 -19 -107 -20t-97 11.5t-76.5 27.5t-53.5 27l-18 13v280q33 -34 67 -55.5t67.5 -28.5t61.5 11t44 63v946h312v-538l65 -13 q206 -32 329 60q105 78 128 243q2 76 -15.5 141t-49 110.5t-72.5 82.5t-86.5 59.5t-91.5 39t-87.5 24t-73.5 11.5t-52 5h-19l-66 -2q-217 -16 -359 -141q-57 -50 -97 -115q-27 -45 -39.5 -93t-11 -88t10 -78.5t22 -67.5t25.5 -51t21 -33l9 -12l-225 -201q-7 9 -18.5 25 t-40.5 68.5t-49.5 107.5t-34.5 137.5t-8.5 163z" />
|
40 |
+
<glyph unicode="" d="M141 1431q0 133 65.5 245.5t178 178t245.5 65.5q141 0 260 -75q69 12 144 12q171 0 327 -66.5t269 -179.5t179.5 -269t66.5 -327q0 -96 -19 -181q51 -106 50 -217q0 -133 -65.5 -245.5t-178 -178t-244.5 -65.5q-123 0 -231 58q-79 -14 -155 -14q-171 0 -327 67t-269 180 t-179.5 269t-66.5 327q0 86 17 169q-67 116 -67 247zM537 775q0 -75 54 -153q52 -76 139 -123q119 -63 302 -63q150 0 263 46q111 46 171 130q59 85 59 188q0 88 -34 149q-35 62 -96 100q-58 39 -143 66q-77 25 -187 49q-89 20 -116 28q-35 9 -68 27q-33 15 -50 38 q-17 20 -17 49q0 46 52 80q54 36 146 36q97 0 141 -32q43 -32 75 -94q30 -48 51 -67q25 -22 72 -22q53 0 87 36q34 35 34 81t-25 96q-24 47 -82 92q-57 45 -139 70q-86 26 -197 26q-139 0 -247 -40q-107 -39 -164 -113q-57 -73 -57 -170q0 -102 55 -170q52 -65 144 -105 q95 -40 221 -66q93 -20 154 -38q57 -19 90 -50q33 -30 33 -80q0 -64 -62 -105q-65 -44 -170 -44q-78 0 -123 22q-47 22 -70 54q-27 34 -49 86q-21 49 -49 72q-32 26 -75 26q-52 0 -87 -33q-36 -33 -36 -79z" />
|
41 |
+
<glyph unicode="" d="M384 384v640h192q49 0 104 47t103.5 127.5t80.5 204.5t32 261q0 5 0.5 13.5t4 31t9.5 39t19 30.5t31 14q33 0 77.5 -42t79.5 -119t35 -159q0 -85 -8 -165t-16 -117l-8 -38h416q53 0 90.5 -37.5t37.5 -90.5q0 -41 -24 -74t-62 -46q22 -33 22 -72q0 -41 -24 -74t-62 -46 q22 -33 22 -72q0 -53 -37.5 -90.5t-90.5 -37.5h-64q53 0 90.5 -37.5t37.5 -90.5t-37.5 -90.5t-90.5 -37.5h-448q-65 0 -123 20t-93.5 44t-80.5 44t-87 20h-128z" />
|
42 |
+
<glyph unicode="" d="M205 1168q0 83 59 142t142 59q100 0 160 -83q183 97 412 106l92 457q5 22 23 33q18 12 39 7l313 -72q24 41 65.5 65.5t89.5 24.5q74 0 126.5 -52.5t52.5 -126.5t-52.5 -126.5t-126.5 -52.5q-71 0 -122 48.5t-56 119.5l-262 60l-77 -386q222 -12 397 -108q60 86 163 86 q83 0 141.5 -59t58.5 -142q0 -55 -28 -100.5t-74 -72.5q14 -50 14 -99q0 -135 -98.5 -250t-267.5 -181.5t-368 -66.5t-368.5 66.5t-268 181t-98.5 249.5q0 50 16 104q-44 27 -70.5 71.5t-26.5 97.5zM307 1168q0 -47 40 -75q47 75 132 137q-29 36 -73 36q-41 0 -70 -28.5 t-29 -69.5zM388 896q0 -107 85 -198t230.5 -144t317.5 -53q171 0 316.5 53t230.5 143.5t85 197.5q0 108 -85 199t-230.5 144t-316.5 53q-172 0 -317.5 -53t-230.5 -144t-85 -198zM672 982q0 46 32.5 79t78.5 33q47 0 79.5 -33t32.5 -79t-33 -79t-79 -33t-78.5 33t-32.5 79z M737 739.5q0 21.5 15 36.5t36 15t36 -15q56 -56 199 -56q145 0 201 56q15 15 36 15t36 -15t15 -36.5t-15 -36.5q-86 -86 -271 -86q-187 0 -273 86q-15 15 -15 36.5zM1153 982q0 46 32.5 79t79.5 33t79.5 -33t32.5 -79t-33 -79t-79 -33t-79 33t-33 79zM1523 1728 q0 -32 22.5 -54.5t54.5 -22.5t54.5 22.5t22.5 54.5t-22.5 54.5t-54.5 22.5t-54.5 -22.5t-22.5 -54.5zM1567 1227q83 -61 131 -138q43 31 43 79q0 40 -28.5 69t-69.5 29q-45 0 -76 -39z" />
|
43 |
+
<glyph unicode="" d="M256 849v209h263v-206q0 -33 23.5 -56.5t57.5 -23.5t57.5 23.5t23.5 56.5v487q5 136 104.5 230.5t238.5 94.5t238.5 -95.5t104.5 -231.5v-107l-157 -45l-105 48v92q0 34 -23.5 57t-57.5 23t-57.5 -23t-23.5 -57l-1 -481q-1 -138 -101.5 -235t-241.5 -97q-142 0 -242.5 99 t-100.5 238zM1105 846v210l105 -48l157 46v-212q0 -33 23.5 -56.5t57.5 -23.5t57.5 23.5t23.5 56.5v216h263v-209q0 -139 -100.5 -238t-242.5 -99t-242 97.5t-102 236.5z" />
|
44 |
+
<glyph unicode="" d="M256 1152v384q0 106 75 181t181 75h1024q106 0 181 -75t75 -181v-384q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5zM512 1281q0 -53 38 -91l362 -362l4 4q37 -64 108 -64t108 64l5 -4l362 362q37 38 37 91t-37 90t-91 37 q-53 0 -90 -37l-294 -294l-293 294q-37 37 -91 37t-90 -37q-38 -37 -38 -90z" />
|
45 |
+
<glyph unicode="" d="M128 930l365 291l531 -328l-369 -308zM128 1513l527 345l369 -308l-531 -329zM497 508v115l158 -103l370 307l370 -307l158 103v-115l-528 -317zM1024 893l532 328l364 -291l-527 -345zM1024 1550l369 308l527 -345l-364 -292z" />
|
46 |
+
<glyph unicode="" d="M256 896v384q0 106 75 181t181 75h1024q106 0 181 -75t75 -181v-384q0 -106 -75 -181t-181 -75h-448l-448 -448v448h-128q-106 0 -181 75t-75 181z" />
|
47 |
+
<glyph unicode="" d="M384 512v1024h384l64 -128h448v-128h-640l-128 -256h128l64 128h960l-256 -640h-1024z" />
|
48 |
+
<glyph unicode="" d="M256 768l768 768h512v-512l-768 -768zM1152 1280q0 -53 37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5t-37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5z" />
|
49 |
+
<glyph unicode="" d="M256 1088q0 143 55.5 273.5t150 225t225 150t273.5 55.5t273.5 -55.5t225 -150t150 -225t55.5 -273.5t-55.5 -273.5t-150 -225t-225 -150t-273.5 -55.5t-273.5 55.5t-225 150t-150 225t-55.5 273.5zM384 1088q0 -117 45.5 -223.5t123 -184t184 -123t223.5 -45.5 t223.5 45.5t184 123t123 184t45.5 223.5t-45.5 223.5t-123 184t-184 123t-223.5 45.5t-223.5 -45.5t-184 -123t-123 -184t-45.5 -223.5zM896 1062v474h128v-421l298 -298l-90 -91z" />
|
50 |
+
<glyph unicode="" d="M512 384v256q0 159 112.5 271.5t271.5 112.5h256q159 0 271.5 -112.5t112.5 -271.5v-256h-1024zM768 1408q0 106 75 181t181 75t181 -75t75 -181t-75 -181t-181 -75t-181 75t-75 181z" />
|
51 |
+
<glyph unicode="" d="M256 384v1280h256v128h128v-128h640v128h128v-128h256v-1280h-1408zM384 640q0 -53 37.5 -90.5t90.5 -37.5h896q53 0 90.5 37.5t37.5 90.5v640q0 53 -37.5 90.5t-90.5 37.5h-896q-53 0 -90.5 -37.5t-37.5 -90.5v-640zM768 1216q0 26 19 45t45 19h128q26 0 45 -19t19 -45 v-512q0 -26 -19 -45t-45 -19t-45 19t-19 45v448h-64q-26 0 -45 19t-19 45z" />
|
52 |
+
<glyph unicode="" d="M256 384v1280h256v128h128v-128h640v128h128v-128h256v-1280h-1408zM384 640q0 -53 37.5 -90.5t90.5 -37.5h896q53 0 90.5 37.5t37.5 90.5v640q0 53 -37.5 90.5t-90.5 37.5h-896q-53 0 -90.5 -37.5t-37.5 -90.5v-640zM768 1216q0 26 19 45t45 19h256h2h1h3 q22 -2 38.5 -18t19.5 -39v-2v-2v-1v-2q0 -5 -2 -15l-128 -512q-6 -26 -28.5 -40t-48.5 -7q-26 6 -40 28.5t-7 48.5l108 433h-174q-26 0 -45 19t-19 45z" />
|
53 |
+
<glyph unicode="" d="M256 384v1280h256v128h128v-128h640v128h128v-128h256v-1280h-1408zM384 640q0 -53 37.5 -90.5t90.5 -37.5h896q53 0 90.5 37.5t37.5 90.5v640q0 53 -37.5 90.5t-90.5 37.5h-896q-53 0 -90.5 -37.5t-37.5 -90.5v-640zM512 640v128h128v-128h-128zM512 896v128h128v-128 h-128zM768 640v128h128v-128h-128zM768 896v128h128v-128h-128zM768 1152v128h128v-128h-128zM1024 640v128h128v-128h-128zM1024 896v128h128v-128h-128zM1024 1152v128h128v-128h-128zM1280 896v128h128v-128h-128zM1280 1152v128h128v-128h-128z" />
|
54 |
+
<glyph unicode="" d="M342 342q12 45 22 71t38 66.5t76 88.5l395 395l-227 227l181 181q37 -37 90.5 -37t91.5 37l181 181q38 38 38 91t-38 90l181 181l543 -543l-181 -181q-37 38 -90 38t-91 -38l-181 -181q-37 -37 -37 -90t37 -91l-181 -181l-227 226l-395 -395q-68 -68 -113.5 -93 t-112.5 -43z" />
|
55 |
+
<glyph unicode="" d="M256 1216q0 117 45.5 223.5t123 184t184 123t223.5 45.5t223.5 -45.5t184 -123t123 -184t45.5 -223.5q0 -184 -111 -337l495 -495l-128 -128l-495 495q-153 -111 -337 -111q-117 0 -223.5 45.5t-184 123t-123 184t-45.5 223.5zM384 1216q0 -185 131.5 -316.5 t316.5 -131.5q186 0 317 131.5t131 316.5t-131 316.5t-317 131.5q-185 0 -316.5 -131.5t-131.5 -316.5z" />
|
56 |
+
<glyph unicode="" d="M256 1216q0 117 45.5 223.5t123 184t184 123t223.5 45.5t223.5 -45.5t184 -123t123 -184t45.5 -223.5q0 -184 -111 -337l495 -495l-128 -128l-495 495q-153 -111 -337 -111q-117 0 -223.5 45.5t-184 123t-123 184t-45.5 223.5zM384 1216q0 -185 131.5 -316.5 t316.5 -131.5q186 0 317 131.5t131 316.5t-131 316.5t-317 131.5q-185 0 -316.5 -131.5t-131.5 -316.5zM512 1152v128h640v-128h-640z" />
|
57 |
+
<glyph unicode="" d="M256 1216q0 117 45.5 223.5t123 184t184 123t223.5 45.5t223.5 -45.5t184 -123t123 -184t45.5 -223.5q0 -184 -111 -337l495 -495l-128 -128l-495 495q-153 -111 -337 -111q-117 0 -223.5 45.5t-184 123t-123 184t-45.5 223.5zM384 1216q0 -185 131.5 -316.5 t316.5 -131.5q186 0 317 131.5t131 316.5t-131 316.5t-317 131.5q-185 0 -316.5 -131.5t-131.5 -316.5zM512 1152v128h256v256h128v-256h256v-128h-256v-256h-128v256h-256z" />
|
58 |
+
<glyph unicode="" d="M0 1024l506 506q101 103 234.5 160.5t283.5 57.5t283.5 -57.5t233.5 -159.5l507 -507l-506 -507q-101 -103 -234.5 -160t-283.5 -57t-283.5 57.5t-233.5 160.5zM272 1024l370 -371q77 -78 175.5 -119.5t206.5 -41.5t206 41.5t174 118.5l373 372l-371 371 q-158 161 -382 161q-108 0 -206.5 -41t-173.5 -119zM640 1024q0 159 112.5 271.5t271.5 112.5t271.5 -112.5t112.5 -271.5t-112.5 -271.5t-271.5 -112.5t-271.5 112.5t-112.5 271.5zM1024 1152q0 -53 37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5t-37.5 90.5t-90.5 37.5 t-90.5 -37.5t-37.5 -90.5z" />
|
59 |
+
<glyph unicode="" d="M0 1024l506 506q101 103 234.5 160.5t283.5 57.5q193 0 358 -95l-143 -143q-103 46 -215 46q-108 0 -206.5 -41t-173.5 -119l-372 -372l240 -240l-136 -136zM339 429l90 -90l1280 1280l-90 90zM640 1024q0 159 112.5 271.5t271.5 112.5q44 0 98 -14l-468 -468 q-14 54 -14 98zM666 395l143 143q103 -46 215 -46q108 0 206 41.5t174 118.5l373 372l-241 241l136 135l376 -376l-506 -507q-101 -103 -234.5 -160t-283.5 -57q-193 0 -358 95zM926 654l468 468q14 -54 14 -98q0 -159 -112.5 -271.5t-271.5 -112.5q-44 0 -98 14z" />
|
60 |
+
<glyph unicode="" d="M640 768l320 320l-320 320l128 128l320 -320l320 320l128 -128l-320 -320l320 -320l-128 -128l-320 320l-320 -320z" />
|
61 |
+
<glyph unicode="" d="M128 256l832 832l-832 832l128 128l832 -832l832 832l128 -128l-832 -832l832 -832l-128 -128l-832 832l-832 -832z" />
|
62 |
+
<glyph unicode="" d="M384 1280v128l256 128q0 53 37.5 90.5t90.5 37.5h384q53 0 90.5 -37.5t37.5 -90.5l256 -128v-128h-1152zM512 512v704h128v-704h128v704h128v-704h128v704h128v-704h128v704h128v-704q0 -53 -37.5 -90.5t-90.5 -37.5h-640q-53 0 -90.5 37.5t-37.5 90.5zM768 1472 q0 -26 19 -45t45 -19h256q26 0 45 19t19 45t-19 45t-45 19h-256q-26 0 -45 -19t-19 -45z" />
|
63 |
+
<glyph unicode="" d="M256 1151l476 -330l-183 -535l475 332l475 -332l-183 535l476 330l-587 -1l-181 535l-180 -535z" />
|
64 |
+
<glyph unicode="" d="M384 1152l640 512l640 -512l-128 -128v-512h-1024v512zM896 576h256v448h-256v-448z" />
|
65 |
+
<glyph unicode="" d="M256 512v704l768 -384l768 384v-704h-1536zM256 1408v128h1536v-128l-768 -384z" />
|
66 |
+
<glyph unicode="" d="M384 384v448l896 896l448 -448l-896 -896h-448zM512 768l256 -256l128 128l-256 256zM685 941l96 -96l595 595l-96 96zM845 781l96 -96l595 595l-96 96z" />
|
67 |
+
<glyph unicode="" d="M256 640v704l384 384v-704h640v448l640 -640l-640 -640v448h-1024z" />
|
68 |
+
<glyph unicode="" d="M256 448q0 -80 56 -136t136 -56t136 56t56 136t-56 136t-136 56t-136 -56t-56 -136zM256 1024v256q209 0 398.5 -81t326.5 -218t218 -326.5t81 -398.5h-256q0 209 -103 385.5t-279.5 279.5t-385.5 103zM256 1536v256q209 0 408 -55t367.5 -154t310.5 -241t241 -310.5 t154 -367.5t55 -408h-256q0 260 -101.5 497t-273 408.5t-408.5 273t-497 101.5z" />
|
69 |
+
<glyph unicode="" d="M21 358q-57 102 31 244l760 1237q57 93 134.5 126.5t155 0t135.5 -126.5l759 -1237q88 -142 31 -244t-224 -102h-1557q-168 0 -225 102zM883 1536l51 -640h179l52 640h-282zM896 640q0 -53 37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5t-37.5 90.5t-90.5 37.5t-90.5 -37.5 t-37.5 -90.5z" />
|
70 |
+
<glyph unicode="" d="M128 1024v256h310q75 172 233.5 278t352.5 106q130 0 246.5 -50t204.5 -139q37 -37 37 -90t-37 -91t-90 -38t-91 38q-116 114 -270 114q-159 0 -271.5 -112.5t-112.5 -271.5h-512zM536 665q0 53 38 90t91 37t90 -37q113 -115 269 -115q159 0 271.5 112.5t112.5 271.5h512 v-256h-310q-75 -172 -233.5 -278t-352.5 -106q-130 0 -246 50t-205 139l1 1q-38 38 -38 91zM832 1024q0 80 56 136t136 56t136 -56t56 -136t-56 -136t-136 -56t-136 56t-56 136z" />
|
71 |
+
<glyph unicode="" d="M512 832v320h128v-320q0 -133 93.5 -226.5t226.5 -93.5t226.5 93.5t93.5 226.5v640q0 80 -56 136t-136 56t-136 -56t-56 -136v-512q0 -26 19 -45t45 -19t45 19t19 45v452h128v-452q0 -80 -56 -136t-136 -56t-136 56t-56 136v512q0 133 93.5 226.5t226.5 93.5t226.5 -93.5 t93.5 -226.5v-640q0 -185 -131.5 -316.5t-316.5 -131.5t-316.5 131.5t-131.5 316.5z" />
|
72 |
+
<glyph unicode="" d="M384 1216q0 117 45.5 223.5t123 184t184 123t223.5 45.5t223.5 -45.5t184 -123t123 -184t45.5 -223.5t-44.5 -222.5t-124.5 -185.5l-407 -406l-407 406q-80 80 -124.5 185.5t-44.5 222.5zM640 1216q0 -133 93.5 -226.5t226.5 -93.5t226.5 93.5t93.5 226.5t-93.5 226.5 t-226.5 93.5t-226.5 -93.5t-93.5 -226.5z" />
|
73 |
+
<glyph unicode="" d="M608 1056l128 128l224 -192l448 512l128 -96l-512 -768h-128z" />
|
74 |
+
<glyph unicode="" d="M0 256v256h2048v-256h-2048zM0 896v256h2048v-256h-2048zM0 1536v256h2048v-256h-2048z" />
|
75 |
+
<glyph unicode="" d="M256 1024q0 155 60 294.5t167 246.5l-227 227h640v-640l-232 232q-72 -71 -112 -163.5t-40 -196.5q0 -176 108.5 -313.5t275.5 -180.5v-262q-180 30 -326 137t-230 269.5t-84 349.5zM1152 256v640l19 -19l213 -213q71 71 111.5 164t40.5 196q0 176 -108.5 313.5 t-275.5 180.5v263q180 -31 326 -137.5t230 -269.5t84 -350q0 -155 -60 -294.5t-167 -246.5l227 -227h-640z" />
|
76 |
+
<glyph unicode="" d="M384 896v256h1152v-256h-1152z" />
|
77 |
+
<glyph unicode="" d="M384 512v1024h1152v-1024h-1152zM512 640h896v640h-896v-640z" />
|
78 |
+
<glyph unicode="" d="M83 832l373 671l112 -62l-267 -481h403v-384h-128v256h-493zM768 1024q0 87 43 160.5t116.5 116.5t160.5 43t160.5 -43t116.5 -116.5t43 -160.5t-43 -160.5t-116.5 -116.5t-160.5 -43t-160.5 43t-116.5 116.5t-43 160.5zM896 1024q0 -79 56.5 -135.5t135.5 -56.5 t135.5 56.5t56.5 135.5t-56.5 135.5t-135.5 56.5t-135.5 -56.5t-56.5 -135.5zM1427 832l373 671l112 -62l-267 -481h403v-384h-128v256h-493z" />
|
79 |
+
<glyph unicode="" d="M256 640v768l384 384h768l384 -384v-768l-384 -384h-768zM883 1536l51 -640h179l52 640h-282zM896 640q0 -53 37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5t-37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5z" />
|
80 |
+
<glyph unicode="" d="M384 384v1280h256q0 53 37.5 90.5t90.5 37.5h384q53 0 90.5 -37.5t37.5 -90.5h256v-1280h-1152zM512 512h896v1024h-128v-128h-640v128h-128v-1024zM640 704q0 26 19 45t45 19t45 -19t19 -45t-19 -45t-45 -19t-45 19t-19 45zM640 960q0 26 19 45t45 19t45 -19t19 -45 t-19 -45t-45 -19t-45 19t-19 45zM640 1216q0 26 19 45t45 19t45 -19t19 -45t-19 -45t-45 -19t-45 19t-19 45zM768 1600q0 -26 19 -45t45 -19h256q26 0 45 19t19 45t-19 45t-45 19h-256q-26 0 -45 -19t-19 -45zM896 640v128h384v-128h-384zM896 896v128h384v-128h-384z M896 1152v128h384v-128h-384z" />
|
81 |
+
<glyph unicode="" d="M128 768q0 106 75 181t181 75h7q-7 29 -7 64q0 133 93.5 226.5t226.5 93.5q134 0 228 -96q47 101 140.5 162.5t207.5 61.5q159 0 271.5 -112.5t112.5 -271.5q0 -62 -23 -128h23q106 0 181 -75t75 -181t-75 -181t-181 -75h-1280q-106 0 -181 75t-75 181z" />
|
82 |
+
<glyph unicode="" d="M384 384v288l455 455l-1 1q-74 74 -74 180t74 181l233 233q75 74 181 74t180 -74l286 -286q74 -75 74 -180.5t-74 -180.5l-233 -233q-74 -73 -178.5 -74t-179.5 71l-455 -455h-288zM1088 1360l256 -256l160 160l-256 256z" />
|
83 |
+
<glyph unicode="" d="M768 1024q0 106 75 181t181 75t181 -75t75 -181t-75 -181t-181 -75t-181 75t-75 181z" />
|
84 |
+
<glyph unicode="" d="M384 896v128h896l-343 343l87 86l493 -493l-493 -493l-87 86l343 343h-896z" />
|
85 |
+
<glyph unicode="" d="M531 960l493 -493l87 86l-343 343h896v128h-896l343 343l-87 86z" />
|
86 |
+
<glyph unicode="" d="M384 1152l128 128l448 -448l448 448l128 -128l-576 -576z" />
|
87 |
+
<glyph unicode="" d="M384 768l576 576l576 -576l-128 -128l-448 448l-448 -448z" />
|
88 |
+
<glyph unicode="" d="M0 0v896l896 -896h-896z" />
|
89 |
+
<glyph unicode="" d="M1152 0l896 896v-896h-896z" />
|
90 |
+
<glyph unicode="" d="M384 512l640 640l640 -640h-1280zM384 1280v128h1280v-128h-1280z" />
|
91 |
+
<glyph unicode="" d="M512 640v128h128v-128h-128zM512 896v128h128v-128h-128zM512 1152v128h128v-128h-128zM512 1408v128h128v-128h-128zM768 640v128h128v-128h-128zM768 896v128h128v-128h-128zM768 1152v128h128v-128h-128zM768 1408v128h128v-128h-128zM1024 640v128h128v-128h-128z M1024 896v128h128v-128h-128zM1024 1152v128h128v-128h-128zM1024 1408v128h128v-128h-128zM1280 640v128h128v-128h-128zM1280 896v128h128v-128h-128zM1280 1152v128h128v-128h-128zM1280 1408v128h128v-128h-128z" />
|
92 |
+
<glyph unicode="" d="M512 512v1024q0 106 75 181t181 75h512q106 0 181 -75t75 -181v-1024q0 -106 -75 -181t-181 -75h-512q-106 0 -181 75t-75 181zM640 768h768v768h-768v-768zM896 512q0 -53 37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5t-37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5z " />
|
93 |
+
<glyph unicode="" d="M256 1024v256h512v128l384 -256l-384 -256v128h-512zM512 512v384h128v-128h768v768h-768v-128h-128v128q0 106 75 181t181 75h512q106 0 181 -75t75 -181v-1024q0 -106 -75 -181t-181 -75h-512q-106 0 -181 75t-75 181zM896 512q0 -53 37.5 -90.5t90.5 -37.5t90.5 37.5 t37.5 90.5t-37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5z" />
|
94 |
+
<glyph unicode="" d="M384 1152h1280q0 -231 -145.5 -406.5t-366.5 -220.5v-269h-256v269q-221 45 -366.5 220.5t-145.5 406.5zM640 1280v384q0 53 37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5v-384h-256zM1152 1280v384q0 53 37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5v-384h-256z" />
|
95 |
+
<glyph unicode="" d="M128 768q0 106 75 181t181 75h6q-6 32 -6 64q0 133 93.5 226.5t226.5 93.5q134 0 228 -96q47 101 140.5 162.5t207.5 61.5q159 0 271.5 -112.5t112.5 -271.5q0 -62 -23 -128h23q106 0 181 -75t75 -181t-75 -181t-181 -75h-384v256h-512v-256h-384q-106 0 -181 75t-75 181 zM640 384h256v256h256v-256h256l-384 -384z" />
|
96 |
+
<glyph unicode="" d="M128 768q0 106 75 181t181 75h6q-6 32 -6 64q0 133 93.5 226.5t226.5 93.5q134 0 228 -96q47 101 140.5 162.5t207.5 61.5q159 0 271.5 -112.5t112.5 -271.5q0 -62 -23 -128h23q106 0 181 -75t75 -181t-75 -181t-181 -75h-512v256h256l-384 384l-384 -384h256v-256h-512 q-106 0 -181 75t-75 181z" />
|
97 |
+
<glyph unicode="" d="M512 512v896h512l-128 -128h-256v-640h640v256l128 128v-512h-896zM896 987l550 549h-422v128h640v-640h-128v422l-550 -550z" />
|
98 |
+
<glyph unicode="" d="M512 384v1280h640l384 -384v-896h-1024zM640 512h768v640h-384v384h-384v-1024z" />
|
99 |
+
<glyph unicode="" d="M384 512v1024q0 106 75 181t181 75h1024v-1152h-64q-53 0 -90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5h64v-128h-1024q-106 0 -181 75t-75 181zM512 512q0 -53 37.5 -90.5t90.5 -37.5h818q-50 55 -50 128t50 128h-818q-53 0 -90.5 -37.5t-37.5 -90.5z" />
|
100 |
+
<glyph unicode="" d="M160 747l232 201q-8 67 -8 76q0 8 8 75l-232 201l58 139l305 -21q47 60 107 107l-21 305l139 58l201 -232q67 8 75 8t75 -8l201 232l140 -58l-22 -305q56 -44 107 -107l305 22l58 -139l-232 -201q8 -67 8 -76q0 -8 -8 -75l232 -201l-58 -140l-305 22q-44 -56 -107 -107 l22 -305l-139 -58l-201 232q-67 -8 -76 -8q-8 0 -75 8l-201 -232l-139 58l21 305q-56 44 -107 107l-305 -22zM768 1024q0 -106 75 -181t181 -75t181 75t75 181t-75 181t-181 75t-181 -75t-75 -181z" />
|
101 |
+
<glyph unicode="" d="M256 1024q0 209 103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5t-103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5zM512 1024q0 -212 150 -362t362 -150q135 0 259 72l-699 699q-72 -126 -72 -259zM765 1464l699 -699 q72 123 72 259q0 212 -150 362t-362 150q-136 0 -259 -72z" />
|
102 |
+
<glyph unicode="" d="M256 1664v128h384v-256h1152l-256 -640h-896v-128h896v-128h-1024v1024h-256zM512 384q0 53 37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5t-37.5 -90.5t-90.5 -37.5t-90.5 37.5t-37.5 90.5zM1280 384q0 53 37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5t-37.5 -90.5 t-90.5 -37.5t-90.5 37.5t-37.5 90.5z" />
|
103 |
+
<glyph unicode="" d="M512 384v1280h384v-1280h-384zM1152 384v1280h384v-1280h-384z" />
|
104 |
+
<glyph unicode="" d="M512 512v1024h1024v-1024h-1024z" />
|
105 |
+
<glyph unicode="" d="M256 384v1280h384v-1280h-384zM768 1024l1024 640v-1280z" />
|
106 |
+
<glyph unicode="" d="M256 384v1280l1024 -640zM1408 384v1280h384v-1280h-384z" />
|
107 |
+
<glyph unicode="" d="M512 384v1280l1024 -640z" />
|
108 |
+
<glyph unicode="" d="M256 256v1536q0 106 75 181t181 75h1024q106 0 181 -75t75 -181v-1536q0 -106 -75 -181t-181 -75h-1024q-106 0 -181 75t-75 181zM512 512h1024v1280h-1024v-1280zM896 256q0 -53 37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5t-37.5 90.5t-90.5 37.5t-90.5 -37.5 t-37.5 -90.5z" />
|
109 |
+
<glyph unicode="" d="M128 1024v256h512v128l384 -256l-384 -256v128h-512zM256 256v640h256v-384h1024v1280h-1024v-384h-256v384q0 106 75 181t181 75h1024q106 0 181 -75t75 -181v-1536q0 -106 -75 -181t-181 -75h-1024q-106 0 -181 75t-75 181zM896 256q0 -53 37.5 -90.5t90.5 -37.5 t90.5 37.5t37.5 90.5t-37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5z" />
|
110 |
+
<glyph unicode="" d="M256 1024q0 209 103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5t-103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5zM896 1408q0 -53 37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5t-37.5 90.5t-90.5 37.5t-90.5 -37.5 t-37.5 -90.5zM928 512h192v640h-192v-640z" />
|
111 |
+
<glyph unicode="" d="M256 1024q0 209 103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5t-103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5zM883 1536l51 -640h179l52 640h-282zM896 640q0 -53 37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5 t-37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5z" />
|
112 |
+
<glyph unicode="" d="M256 1024q0 209 103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5t-103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5zM720 1442l92 -180q134 71 234 71q38 0 65 -16q26 -17 26 -44q0 -35 -24 -63q-24 -27 -77 -61 q-68 -42 -95 -87q-26 -44 -26 -109v-57h204v34q0 29 17 49q18 21 87 66q83 53 120 111t37 139q0 111 -84 176q-85 65 -232 65q-180 0 -344 -94zM896 640q0 -53 37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5t-37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5z" />
|
113 |
+
<glyph unicode="" d="M128 384v1280l768 -480v480l1024 -640l-1024 -640v480z" />
|
114 |
+
<glyph unicode="" d="M128 1024l1024 -640v480l768 -480v1280l-768 -480v480z" />
|
115 |
+
<glyph unicode="" d="M256 1280h128l86 256h340l86 -256l-256 -768h-128zM533 1280h214l-43 128h-128zM768 512l256 768h128l86 256h340l86 -256h128l-256 -768h-768zM1301 1280h214l-43 128h-128z" />
|
116 |
+
<glyph unicode="" d="M256 1261q8 -158 120 -264l648 -613l648 613q112 106 120 264t-93 276t-251.5 126.5t-262.5 -97.5l-161 -153l-161 153q-112 106 -262.5 97.5t-251.5 -126.5t-93 -276z" />
|
117 |
+
<glyph unicode="" d="M102 1024l304 -455l213 142l-209 313l209 313l-213 142zM772 543l248 -62l256 1024l-248 62zM1430 711l213 -142l303 455l-303 455l-213 -142l208 -313z" />
|
118 |
+
<glyph unicode="" d="M0 512v704l768 -384l256 128v-448h-1024zM0 1408v128h1536v-128l-768 -384zM1152 384v640q0 53 37.5 90.5t90.5 37.5h640q53 0 90.5 -37.5t37.5 -90.5v-640q0 -53 -37.5 -90.5t-90.5 -37.5h-640q-53 0 -90.5 37.5t-37.5 90.5zM1280 640h256v-256h128v256h256v128h-256 v256h-128v-256h-256v-128z" />
|
119 |
+
<glyph unicode="" d="M0 512v704l768 -384l256 128v-448h-1024zM0 1408v128h1536v-128l-768 -384zM1152 384v640q0 53 37.5 90.5t90.5 37.5h640q53 0 90.5 -37.5t37.5 -90.5v-640q0 -53 -37.5 -90.5t-90.5 -37.5h-640q-53 0 -90.5 37.5t-37.5 90.5zM1280 640h640v128h-640v-128z" />
|
120 |
+
<glyph unicode="" d="M0 512v704l768 -384l256 128v-448h-1024zM0 1408v128h1536v-128l-768 -384zM1152 384v640q0 53 37.5 90.5t90.5 37.5h640q53 0 90.5 -37.5t37.5 -90.5v-640q0 -53 -37.5 -90.5t-90.5 -37.5h-640q-53 0 -90.5 37.5t-37.5 90.5zM1260 656l272 -272l452 453l-90 90 l-362 -362l-181 181z" />
|
121 |
+
<glyph unicode="" d="M0 1024l640 640v-320l-320 -320l320 -320v-320zM512 1024l640 640v-384h256q212 0 362 -150t150 -362v-300l-150 150q-74 74 -168 112t-194 38h-256v-384z" />
|
122 |
+
<glyph unicode="" d="M384 1024l640 640v-384h256q212 0 362 -150t150 -362v-300l-150 150q-74 74 -168 112t-194 38h-256v-384z" />
|
123 |
+
<glyph unicode="" d="M256 256v1536h256v-1536h-256zM640 896v768q35 0 63.5 13t54 32t56.5 38t85 32t125 13q70 0 125.5 -13t93 -32l75 -38t93 -32t125.5 -13h256v-768h-256q-70 0 -125.5 13t-93 32l-75 38t-93 32t-125.5 13q-71 0 -125 -13t-85 -32t-56.5 -38t-54 -32t-63.5 -13z" />
|
124 |
+
<glyph unicode="" d="M256 512v768h1536v-768h-256v384h-1024v-384h-256zM640 640v128h768v-128q0 -158 113 -271l112 -113h-768l-112 113q-113 113 -113 271zM640 1408h768v256h-768v-256z" />
|
125 |
+
<glyph unicode="" d="M384 384v640q0 53 37.5 90.5t90.5 37.5v128q0 212 150 362t362 150t362 -150t150 -362v-128q53 0 90.5 -37.5t37.5 -90.5v-640q0 -53 -37.5 -90.5t-90.5 -37.5h-1024q-53 0 -90.5 37.5t-37.5 90.5zM768 1152h512v128q0 106 -75 181t-181 75t-181 -75t-75 -181v-128z" />
|
126 |
+
<glyph unicode="" d="M512 512v1024h512q106 0 181 -75t75 -181q0 -87 -57 -159q83 -39 134 -117t51 -172q0 -133 -93.5 -226.5t-226.5 -93.5h-576zM768 640h192q80 0 136 56t56 136t-56 136t-136 56h-192v-384zM768 1152h128q53 0 90.5 37.5t37.5 90.5t-37.5 90.5t-90.5 37.5h-128v-256z" />
|
127 |
+
<glyph unicode="" d="M640 512l40 128h128l240 768h-128l40 128h448l-40 -128h-128l-240 -768h128l-40 -128h-448z" />
|
128 |
+
<glyph unicode="" d="M384 384v1280h1280v-1280h-1280zM512 512h1024v576l-128 192l-448 -672l-192 288zM640 1280q0 -53 37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5t-37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5z" />
|
129 |
+
<glyph unicode="" d="M128 256v384l154 -154l230 154l-154 -230l154 -154h-384zM128 1408v384h384l-154 -154l154 -230l-230 154zM640 768v512h768v-512h-768zM1536 256l154 154l-154 230l230 -154l154 154v-384h-384zM1536 1408l154 230l-154 154h384v-384l-154 154z" />
|
130 |
+
<glyph unicode="" d="M128 0l960 960l960 -960h-1920z" />
|
131 |
+
<glyph unicode="" d="M0 128l960 960l-960 960v-1920z" />
|
132 |
+
<glyph unicode="" d="M128 2048l960 -960l960 960h-1920z" />
|
133 |
+
<glyph unicode="" d="M1088 1088l960 960v-1920z" />
|
134 |
+
</font>
|
135 |
+
</defs></svg>
|
assets/fonts/genericons-regular-webfont.ttf
ADDED
Binary file
|
assets/fonts/genericons-regular-webfont.woff
ADDED
Binary file
|
assets/images/chosen-sprite.png
ADDED
Binary file
|
assets/images/chosen-sprite@2x.png
ADDED
Binary file
|
assets/images/extensions/custom-login-page-template-300x200.jpg
ADDED
Binary file
|
assets/images/extensions/custom-login-redirects-300x200.jpg
ADDED
Binary file
|
assets/images/extensions/custom-login-stealth-login-300x200.jpg
ADDED
Binary file
|
assets/js/admin.js
ADDED
@@ -0,0 +1,90 @@
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
1 |
+
jQuery(document).ready(function($) {
|
2 |
+
|
3 |
+
var Select = $('select[name="custom_login[logo_background_size]"]');
|
4 |
+
var Custom = $('input[name="custom_login[logo_background_size_custom]"]');
|
5 |
+
|
6 |
+
if ( 'custom' !== Select.val() ) {
|
7 |
+
$(Custom).parent().parent().hide('slow');
|
8 |
+
}
|
9 |
+
|
10 |
+
$(Select).chosen().on('change',function() {
|
11 |
+
var Val = $(this).val();
|
12 |
+
// console.log(Val);
|
13 |
+
|
14 |
+
if ( 'custom' === Val ) {
|
15 |
+
$(Custom).parent().parent().show('fast');
|
16 |
+
}
|
17 |
+
else {
|
18 |
+
$(Custom).parent().parent().hide('slow');
|
19 |
+
}
|
20 |
+
|
21 |
+
});
|
22 |
+
|
23 |
+
// Allow tab key
|
24 |
+
$('textarea[name="custom_login[custom_css]"]').on("keydown",function(e) {
|
25 |
+
if ( e.keyCode == 9 ) {
|
26 |
+
e.preventDefault();
|
27 |
+
insertAtCursor(document.getElementById("custom_login[custom_css]"), " ");
|
28 |
+
}
|
29 |
+
});
|
30 |
+
|
31 |
+
// Allow tab key
|
32 |
+
if ( $('div.img').length ) {
|
33 |
+
$('div.img').each(function() {
|
34 |
+
var $size = $(this).parent().width();
|
35 |
+
$(this).css({
|
36 |
+
'max-width': $size,
|
37 |
+
'width' : $size
|
38 |
+
}).slideDown('fast');
|
39 |
+
});
|
40 |
+
}
|
41 |
+
|
42 |
+
// Remote API helper
|
43 |
+
$('#custom_login_extensions a[data-toggle]').on('click',function(e) {
|
44 |
+
e.preventDefault();
|
45 |
+
$('#' + $(this).data('toggle')).toggle();
|
46 |
+
});
|
47 |
+
|
48 |
+
// Show Purchase button
|
49 |
+
$('a[data-edd-install]').each(function() {
|
50 |
+
var $this = $(this);
|
51 |
+
setTimeout( function() {
|
52 |
+
if ( $this.prev('.eddri-status').text() === 'Not Installed' ) {
|
53 |
+
$this.closest( $this.parent() ).children('a.button').hide();
|
54 |
+
$this.closest( $this.parent() ).children('a.button.show-if-not-purchased').show();
|
55 |
+
}
|
56 |
+
}, 500 );
|
57 |
+
});
|
58 |
+
|
59 |
+
});
|
60 |
+
|
61 |
+
/**
|
62 |
+
* @ref http://alexking.org/blog/2003/06/02/inserting-at-the-cursor-using-javascript#comment-3817
|
63 |
+
*/
|
64 |
+
function insertAtCursor(myField, myValue) {
|
65 |
+
//IE support
|
66 |
+
if (document.selection) {
|
67 |
+
var temp;
|
68 |
+
myField.focus();
|
69 |
+
sel = document.selection.createRange();
|
70 |
+
temp = sel.text.lenght;
|
71 |
+
sel.text = myValue;
|
72 |
+
if (myValue.length == 0) {
|
73 |
+
sel.moveStart('character', myValue.length);
|
74 |
+
sel.moveEnd('character', myValue.length);
|
75 |
+
} else {
|
76 |
+
sel.moveStart('character', -myValue.length + temp);
|
77 |
+
}
|
78 |
+
sel.select();
|
79 |
+
}
|
80 |
+
//MOZILLA/NETSCAPE support
|
81 |
+
else if (myField.selectionStart || myField.selectionStart == '0') {
|
82 |
+
var startPos = myField.selectionStart;
|
83 |
+
var endPos = myField.selectionEnd;
|
84 |
+
myField.value = myField.value.substring(0, startPos) + myValue + myField.value.substring(endPos, myField.value.length);
|
85 |
+
myField.selectionStart = startPos + myValue.length;
|
86 |
+
myField.selectionEnd = startPos + myValue.length;
|
87 |
+
} else {
|
88 |
+
myField.value += myValue;
|
89 |
+
}
|
90 |
+
}
|
assets/js/chosen.jquery.min.js
ADDED
@@ -0,0 +1,2 @@
|
|
Â
|
|
Â
|
1 |
+
/* Chosen v1.0.0 | (c) 2011-2013 by Harvest | MIT License, https://github.com/harvesthq/chosen/blob/master/LICENSE.md */
|
2 |
+
!function(){var a,AbstractChosen,Chosen,SelectParser,b,c={}.hasOwnProperty,d=function(a,b){function d(){this.constructor=a}for(var e in b)c.call(b,e)&&(a[e]=b[e]);return d.prototype=b.prototype,a.prototype=new d,a.__super__=b.prototype,a};SelectParser=function(){function SelectParser(){this.options_index=0,this.parsed=[]}return SelectParser.prototype.add_node=function(a){return"OPTGROUP"===a.nodeName.toUpperCase()?this.add_group(a):this.add_option(a)},SelectParser.prototype.add_group=function(a){var b,c,d,e,f,g;for(b=this.parsed.length,this.parsed.push({array_index:b,group:!0,label:this.escapeExpression(a.label),children:0,disabled:a.disabled}),f=a.childNodes,g=[],d=0,e=f.length;e>d;d++)c=f[d],g.push(this.add_option(c,b,a.disabled));return g},SelectParser.prototype.add_option=function(a,b,c){return"OPTION"===a.nodeName.toUpperCase()?(""!==a.text?(null!=b&&(this.parsed[b].children+=1),this.parsed.push({array_index:this.parsed.length,options_index:this.options_index,value:a.value,text:a.text,html:a.innerHTML,selected:a.selected,disabled:c===!0?c:a.disabled,group_array_index:b,classes:a.className,style:a.style.cssText})):this.parsed.push({array_index:this.parsed.length,options_index:this.options_index,empty:!0}),this.options_index+=1):void 0},SelectParser.prototype.escapeExpression=function(a){var b,c;return null==a||a===!1?"":/[\&\<\>\"\'\`]/.test(a)?(b={"<":"<",">":">",'"':""","'":"'","`":"`"},c=/&(?!\w+;)|[\<\>\"\'\`]/g,a.replace(c,function(a){return b[a]||"&"})):a},SelectParser}(),SelectParser.select_to_array=function(a){var b,c,d,e,f;for(c=new SelectParser,f=a.childNodes,d=0,e=f.length;e>d;d++)b=f[d],c.add_node(b);return c.parsed},AbstractChosen=function(){function AbstractChosen(a,b){this.form_field=a,this.options=null!=b?b:{},AbstractChosen.browser_is_supported()&&(this.is_multiple=this.form_field.multiple,this.set_default_text(),this.set_default_values(),this.setup(),this.set_up_html(),this.register_observers())}return AbstractChosen.prototype.set_default_values=function(){var a=this;return this.click_test_action=function(b){return a.test_active_click(b)},this.activate_action=function(b){return a.activate_field(b)},this.active_field=!1,this.mouse_on_container=!1,this.results_showing=!1,this.result_highlighted=null,this.result_single_selected=null,this.allow_single_deselect=null!=this.options.allow_single_deselect&&null!=this.form_field.options[0]&&""===this.form_field.options[0].text?this.options.allow_single_deselect:!1,this.disable_search_threshold=this.options.disable_search_threshold||0,this.disable_search=this.options.disable_search||!1,this.enable_split_word_search=null!=this.options.enable_split_word_search?this.options.enable_split_word_search:!0,this.group_search=null!=this.options.group_search?this.options.group_search:!0,this.search_contains=this.options.search_contains||!1,this.single_backstroke_delete=null!=this.options.single_backstroke_delete?this.options.single_backstroke_delete:!0,this.max_selected_options=this.options.max_selected_options||1/0,this.inherit_select_classes=this.options.inherit_select_classes||!1,this.display_selected_options=null!=this.options.display_selected_options?this.options.display_selected_options:!0,this.display_disabled_options=null!=this.options.display_disabled_options?this.options.display_disabled_options:!0},AbstractChosen.prototype.set_default_text=function(){return this.default_text=this.form_field.getAttribute("data-placeholder")?this.form_field.getAttribute("data-placeholder"):this.is_multiple?this.options.placeholder_text_multiple||this.options.placeholder_text||AbstractChosen.default_multiple_text:this.options.placeholder_text_single||this.options.placeholder_text||AbstractChosen.default_single_text,this.results_none_found=this.form_field.getAttribute("data-no_results_text")||this.options.no_results_text||AbstractChosen.default_no_result_text},AbstractChosen.prototype.mouse_enter=function(){return this.mouse_on_container=!0},AbstractChosen.prototype.mouse_leave=function(){return this.mouse_on_container=!1},AbstractChosen.prototype.input_focus=function(){var a=this;if(this.is_multiple){if(!this.active_field)return setTimeout(function(){return a.container_mousedown()},50)}else if(!this.active_field)return this.activate_field()},AbstractChosen.prototype.input_blur=function(){var a=this;return this.mouse_on_container?void 0:(this.active_field=!1,setTimeout(function(){return a.blur_test()},100))},AbstractChosen.prototype.results_option_build=function(a){var b,c,d,e,f;for(b="",f=this.results_data,d=0,e=f.length;e>d;d++)c=f[d],b+=c.group?this.result_add_group(c):this.result_add_option(c),(null!=a?a.first:void 0)&&(c.selected&&this.is_multiple?this.choice_build(c):c.selected&&!this.is_multiple&&this.single_set_selected_text(c.text));return b},AbstractChosen.prototype.result_add_option=function(a){var b,c;return a.search_match?this.include_option_in_results(a)?(b=[],a.disabled||a.selected&&this.is_multiple||b.push("active-result"),!a.disabled||a.selected&&this.is_multiple||b.push("disabled-result"),a.selected&&b.push("result-selected"),null!=a.group_array_index&&b.push("group-option"),""!==a.classes&&b.push(a.classes),c=""!==a.style.cssText?' style="'+a.style+'"':"",'<li class="'+b.join(" ")+'"'+c+' data-option-array-index="'+a.array_index+'">'+a.search_text+"</li>"):"":""},AbstractChosen.prototype.result_add_group=function(a){return a.search_match||a.group_match?a.active_options>0?'<li class="group-result">'+a.search_text+"</li>":"":""},AbstractChosen.prototype.results_update_field=function(){return this.set_default_text(),this.is_multiple||this.results_reset_cleanup(),this.result_clear_highlight(),this.result_single_selected=null,this.results_build(),this.results_showing?this.winnow_results():void 0},AbstractChosen.prototype.results_toggle=function(){return this.results_showing?this.results_hide():this.results_show()},AbstractChosen.prototype.results_search=function(){return this.results_showing?this.winnow_results():this.results_show()},AbstractChosen.prototype.winnow_results=function(){var a,b,c,d,e,f,g,h,i,j,k,l,m;for(this.no_results_clear(),e=0,g=this.get_search_text(),a=g.replace(/[-[\]{}()*+?.,\\^$|#\s]/g,"\\$&"),d=this.search_contains?"":"^",c=new RegExp(d+a,"i"),j=new RegExp(a,"i"),m=this.results_data,k=0,l=m.length;l>k;k++)b=m[k],b.search_match=!1,f=null,this.include_option_in_results(b)&&(b.group&&(b.group_match=!1,b.active_options=0),null!=b.group_array_index&&this.results_data[b.group_array_index]&&(f=this.results_data[b.group_array_index],0===f.active_options&&f.search_match&&(e+=1),f.active_options+=1),(!b.group||this.group_search)&&(b.search_text=b.group?b.label:b.html,b.search_match=this.search_string_match(b.search_text,c),b.search_match&&!b.group&&(e+=1),b.search_match?(g.length&&(h=b.search_text.search(j),i=b.search_text.substr(0,h+g.length)+"</em>"+b.search_text.substr(h+g.length),b.search_text=i.substr(0,h)+"<em>"+i.substr(h)),null!=f&&(f.group_match=!0)):null!=b.group_array_index&&this.results_data[b.group_array_index].search_match&&(b.search_match=!0)));return this.result_clear_highlight(),1>e&&g.length?(this.update_results_content(""),this.no_results(g)):(this.update_results_content(this.results_option_build()),this.winnow_results_set_highlight())},AbstractChosen.prototype.search_string_match=function(a,b){var c,d,e,f;if(b.test(a))return!0;if(this.enable_split_word_search&&(a.indexOf(" ")>=0||0===a.indexOf("["))&&(d=a.replace(/\[|\]/g,"").split(" "),d.length))for(e=0,f=d.length;f>e;e++)if(c=d[e],b.test(c))return!0},AbstractChosen.prototype.choices_count=function(){var a,b,c,d;if(null!=this.selected_option_count)return this.selected_option_count;for(this.selected_option_count=0,d=this.form_field.options,b=0,c=d.length;c>b;b++)a=d[b],a.selected&&(this.selected_option_count+=1);return this.selected_option_count},AbstractChosen.prototype.choices_click=function(a){return a.preventDefault(),this.results_showing||this.is_disabled?void 0:this.results_show()},AbstractChosen.prototype.keyup_checker=function(a){var b,c;switch(b=null!=(c=a.which)?c:a.keyCode,this.search_field_scale(),b){case 8:if(this.is_multiple&&this.backstroke_length<1&&this.choices_count()>0)return this.keydown_backstroke();if(!this.pending_backstroke)return this.result_clear_highlight(),this.results_search();break;case 13:if(a.preventDefault(),this.results_showing)return this.result_select(a);break;case 27:return this.results_showing&&this.results_hide(),!0;case 9:case 38:case 40:case 16:case 91:case 17:break;default:return this.results_search()}},AbstractChosen.prototype.container_width=function(){return null!=this.options.width?this.options.width:""+this.form_field.offsetWidth+"px"},AbstractChosen.prototype.include_option_in_results=function(a){return this.is_multiple&&!this.display_selected_options&&a.selected?!1:!this.display_disabled_options&&a.disabled?!1:a.empty?!1:!0},AbstractChosen.browser_is_supported=function(){return"Microsoft Internet Explorer"===window.navigator.appName?document.documentMode>=8:/iP(od|hone)/i.test(window.navigator.userAgent)?!1:/Android/i.test(window.navigator.userAgent)&&/Mobile/i.test(window.navigator.userAgent)?!1:!0},AbstractChosen.default_multiple_text="Select Some Options",AbstractChosen.default_single_text="Select an Option",AbstractChosen.default_no_result_text="No results match",AbstractChosen}(),a=jQuery,a.fn.extend({chosen:function(b){return AbstractChosen.browser_is_supported()?this.each(function(){var c,d;c=a(this),d=c.data("chosen"),"destroy"===b&&d?d.destroy():d||c.data("chosen",new Chosen(this,b))}):this}}),Chosen=function(c){function Chosen(){return b=Chosen.__super__.constructor.apply(this,arguments)}return d(Chosen,c),Chosen.prototype.setup=function(){return this.form_field_jq=a(this.form_field),this.current_selectedIndex=this.form_field.selectedIndex,this.is_rtl=this.form_field_jq.hasClass("chosen-rtl")},Chosen.prototype.set_up_html=function(){var b,c;return b=["chosen-container"],b.push("chosen-container-"+(this.is_multiple?"multi":"single")),this.inherit_select_classes&&this.form_field.className&&b.push(this.form_field.className),this.is_rtl&&b.push("chosen-rtl"),c={"class":b.join(" "),style:"width: "+this.container_width()+";",title:this.form_field.title},this.form_field.id.length&&(c.id=this.form_field.id.replace(/[^\w]/g,"_")+"_chosen"),this.container=a("<div />",c),this.is_multiple?this.container.html('<ul class="chosen-choices"><li class="search-field"><input type="text" value="'+this.default_text+'" class="default" autocomplete="off" style="width:25px;" /></li></ul><div class="chosen-drop"><ul class="chosen-results"></ul></div>'):this.container.html('<a class="chosen-single chosen-default" tabindex="-1"><span>'+this.default_text+'</span><div><b></b></div></a><div class="chosen-drop"><div class="chosen-search"><input type="text" autocomplete="off" /></div><ul class="chosen-results"></ul></div>'),this.form_field_jq.hide().after(this.container),this.dropdown=this.container.find("div.chosen-drop").first(),this.search_field=this.container.find("input").first(),this.search_results=this.container.find("ul.chosen-results").first(),this.search_field_scale(),this.search_no_results=this.container.find("li.no-results").first(),this.is_multiple?(this.search_choices=this.container.find("ul.chosen-choices").first(),this.search_container=this.container.find("li.search-field").first()):(this.search_container=this.container.find("div.chosen-search").first(),this.selected_item=this.container.find(".chosen-single").first()),this.results_build(),this.set_tab_index(),this.set_label_behavior(),this.form_field_jq.trigger("chosen:ready",{chosen:this})},Chosen.prototype.register_observers=function(){var a=this;return this.container.bind("mousedown.chosen",function(b){a.container_mousedown(b)}),this.container.bind("mouseup.chosen",function(b){a.container_mouseup(b)}),this.container.bind("mouseenter.chosen",function(b){a.mouse_enter(b)}),this.container.bind("mouseleave.chosen",function(b){a.mouse_leave(b)}),this.search_results.bind("mouseup.chosen",function(b){a.search_results_mouseup(b)}),this.search_results.bind("mouseover.chosen",function(b){a.search_results_mouseover(b)}),this.search_results.bind("mouseout.chosen",function(b){a.search_results_mouseout(b)}),this.search_results.bind("mousewheel.chosen DOMMouseScroll.chosen",function(b){a.search_results_mousewheel(b)}),this.form_field_jq.bind("chosen:updated.chosen",function(b){a.results_update_field(b)}),this.form_field_jq.bind("chosen:activate.chosen",function(b){a.activate_field(b)}),this.form_field_jq.bind("chosen:open.chosen",function(b){a.container_mousedown(b)}),this.search_field.bind("blur.chosen",function(b){a.input_blur(b)}),this.search_field.bind("keyup.chosen",function(b){a.keyup_checker(b)}),this.search_field.bind("keydown.chosen",function(b){a.keydown_checker(b)}),this.search_field.bind("focus.chosen",function(b){a.input_focus(b)}),this.is_multiple?this.search_choices.bind("click.chosen",function(b){a.choices_click(b)}):this.container.bind("click.chosen",function(a){a.preventDefault()})},Chosen.prototype.destroy=function(){return a(document).unbind("click.chosen",this.click_test_action),this.search_field[0].tabIndex&&(this.form_field_jq[0].tabIndex=this.search_field[0].tabIndex),this.container.remove(),this.form_field_jq.removeData("chosen"),this.form_field_jq.show()},Chosen.prototype.search_field_disabled=function(){return this.is_disabled=this.form_field_jq[0].disabled,this.is_disabled?(this.container.addClass("chosen-disabled"),this.search_field[0].disabled=!0,this.is_multiple||this.selected_item.unbind("focus.chosen",this.activate_action),this.close_field()):(this.container.removeClass("chosen-disabled"),this.search_field[0].disabled=!1,this.is_multiple?void 0:this.selected_item.bind("focus.chosen",this.activate_action))},Chosen.prototype.container_mousedown=function(b){return this.is_disabled||(b&&"mousedown"===b.type&&!this.results_showing&&b.preventDefault(),null!=b&&a(b.target).hasClass("search-choice-close"))?void 0:(this.active_field?this.is_multiple||!b||a(b.target)[0]!==this.selected_item[0]&&!a(b.target).parents("a.chosen-single").length||(b.preventDefault(),this.results_toggle()):(this.is_multiple&&this.search_field.val(""),a(document).bind("click.chosen",this.click_test_action),this.results_show()),this.activate_field())},Chosen.prototype.container_mouseup=function(a){return"ABBR"!==a.target.nodeName||this.is_disabled?void 0:this.results_reset(a)},Chosen.prototype.search_results_mousewheel=function(a){var b,c,d;return b=-(null!=(c=a.originalEvent)?c.wheelDelta:void 0)||(null!=(d=a.originialEvent)?d.detail:void 0),null!=b?(a.preventDefault(),"DOMMouseScroll"===a.type&&(b=40*b),this.search_results.scrollTop(b+this.search_results.scrollTop())):void 0},Chosen.prototype.blur_test=function(){return!this.active_field&&this.container.hasClass("chosen-container-active")?this.close_field():void 0},Chosen.prototype.close_field=function(){return a(document).unbind("click.chosen",this.click_test_action),this.active_field=!1,this.results_hide(),this.container.removeClass("chosen-container-active"),this.clear_backstroke(),this.show_search_field_default(),this.search_field_scale()},Chosen.prototype.activate_field=function(){return this.container.addClass("chosen-container-active"),this.active_field=!0,this.search_field.val(this.search_field.val()),this.search_field.focus()},Chosen.prototype.test_active_click=function(b){return this.container.is(a(b.target).closest(".chosen-container"))?this.active_field=!0:this.close_field()},Chosen.prototype.results_build=function(){return this.parsing=!0,this.selected_option_count=null,this.results_data=SelectParser.select_to_array(this.form_field),this.is_multiple?this.search_choices.find("li.search-choice").remove():this.is_multiple||(this.single_set_selected_text(),this.disable_search||this.form_field.options.length<=this.disable_search_threshold?(this.search_field[0].readOnly=!0,this.container.addClass("chosen-container-single-nosearch")):(this.search_field[0].readOnly=!1,this.container.removeClass("chosen-container-single-nosearch"))),this.update_results_content(this.results_option_build({first:!0})),this.search_field_disabled(),this.show_search_field_default(),this.search_field_scale(),this.parsing=!1},Chosen.prototype.result_do_highlight=function(a){var b,c,d,e,f;if(a.length){if(this.result_clear_highlight(),this.result_highlight=a,this.result_highlight.addClass("highlighted"),d=parseInt(this.search_results.css("maxHeight"),10),f=this.search_results.scrollTop(),e=d+f,c=this.result_highlight.position().top+this.search_results.scrollTop(),b=c+this.result_highlight.outerHeight(),b>=e)return this.search_results.scrollTop(b-d>0?b-d:0);if(f>c)return this.search_results.scrollTop(c)}},Chosen.prototype.result_clear_highlight=function(){return this.result_highlight&&this.result_highlight.removeClass("highlighted"),this.result_highlight=null},Chosen.prototype.results_show=function(){return this.is_multiple&&this.max_selected_options<=this.choices_count()?(this.form_field_jq.trigger("chosen:maxselected",{chosen:this}),!1):(this.container.addClass("chosen-with-drop"),this.form_field_jq.trigger("chosen:showing_dropdown",{chosen:this}),this.results_showing=!0,this.search_field.focus(),this.search_field.val(this.search_field.val()),this.winnow_results())},Chosen.prototype.update_results_content=function(a){return this.search_results.html(a)},Chosen.prototype.results_hide=function(){return this.results_showing&&(this.result_clear_highlight(),this.container.removeClass("chosen-with-drop"),this.form_field_jq.trigger("chosen:hiding_dropdown",{chosen:this})),this.results_showing=!1},Chosen.prototype.set_tab_index=function(){var a;return this.form_field.tabIndex?(a=this.form_field.tabIndex,this.form_field.tabIndex=-1,this.search_field[0].tabIndex=a):void 0},Chosen.prototype.set_label_behavior=function(){var b=this;return this.form_field_label=this.form_field_jq.parents("label"),!this.form_field_label.length&&this.form_field.id.length&&(this.form_field_label=a("label[for='"+this.form_field.id+"']")),this.form_field_label.length>0?this.form_field_label.bind("click.chosen",function(a){return b.is_multiple?b.container_mousedown(a):b.activate_field()}):void 0},Chosen.prototype.show_search_field_default=function(){return this.is_multiple&&this.choices_count()<1&&!this.active_field?(this.search_field.val(this.default_text),this.search_field.addClass("default")):(this.search_field.val(""),this.search_field.removeClass("default"))},Chosen.prototype.search_results_mouseup=function(b){var c;return c=a(b.target).hasClass("active-result")?a(b.target):a(b.target).parents(".active-result").first(),c.length?(this.result_highlight=c,this.result_select(b),this.search_field.focus()):void 0},Chosen.prototype.search_results_mouseover=function(b){var c;return c=a(b.target).hasClass("active-result")?a(b.target):a(b.target).parents(".active-result").first(),c?this.result_do_highlight(c):void 0},Chosen.prototype.search_results_mouseout=function(b){return a(b.target).hasClass("active-result")?this.result_clear_highlight():void 0},Chosen.prototype.choice_build=function(b){var c,d,e=this;return c=a("<li />",{"class":"search-choice"}).html("<span>"+b.html+"</span>"),b.disabled?c.addClass("search-choice-disabled"):(d=a("<a />",{"class":"search-choice-close","data-option-array-index":b.array_index}),d.bind("click.chosen",function(a){return e.choice_destroy_link_click(a)}),c.append(d)),this.search_container.before(c)},Chosen.prototype.choice_destroy_link_click=function(b){return b.preventDefault(),b.stopPropagation(),this.is_disabled?void 0:this.choice_destroy(a(b.target))},Chosen.prototype.choice_destroy=function(a){return this.result_deselect(a[0].getAttribute("data-option-array-index"))?(this.show_search_field_default(),this.is_multiple&&this.choices_count()>0&&this.search_field.val().length<1&&this.results_hide(),a.parents("li").first().remove(),this.search_field_scale()):void 0},Chosen.prototype.results_reset=function(){return this.form_field.options[0].selected=!0,this.selected_option_count=null,this.single_set_selected_text(),this.show_search_field_default(),this.results_reset_cleanup(),this.form_field_jq.trigger("change"),this.active_field?this.results_hide():void 0},Chosen.prototype.results_reset_cleanup=function(){return this.current_selectedIndex=this.form_field.selectedIndex,this.selected_item.find("abbr").remove()},Chosen.prototype.result_select=function(a){var b,c,d;return this.result_highlight?(b=this.result_highlight,this.result_clear_highlight(),this.is_multiple&&this.max_selected_options<=this.choices_count()?(this.form_field_jq.trigger("chosen:maxselected",{chosen:this}),!1):(this.is_multiple?b.removeClass("active-result"):(this.result_single_selected&&(this.result_single_selected.removeClass("result-selected"),d=this.result_single_selected[0].getAttribute("data-option-array-index"),this.results_data[d].selected=!1),this.result_single_selected=b),b.addClass("result-selected"),c=this.results_data[b[0].getAttribute("data-option-array-index")],c.selected=!0,this.form_field.options[c.options_index].selected=!0,this.selected_option_count=null,this.is_multiple?this.choice_build(c):this.single_set_selected_text(c.text),(a.metaKey||a.ctrlKey)&&this.is_multiple||this.results_hide(),this.search_field.val(""),(this.is_multiple||this.form_field.selectedIndex!==this.current_selectedIndex)&&this.form_field_jq.trigger("change",{selected:this.form_field.options[c.options_index].value}),this.current_selectedIndex=this.form_field.selectedIndex,this.search_field_scale())):void 0},Chosen.prototype.single_set_selected_text=function(a){return null==a&&(a=this.default_text),a===this.default_text?this.selected_item.addClass("chosen-default"):(this.single_deselect_control_build(),this.selected_item.removeClass("chosen-default")),this.selected_item.find("span").text(a)},Chosen.prototype.result_deselect=function(a){var b;return b=this.results_data[a],this.form_field.options[b.options_index].disabled?!1:(b.selected=!1,this.form_field.options[b.options_index].selected=!1,this.selected_option_count=null,this.result_clear_highlight(),this.results_showing&&this.winnow_results(),this.form_field_jq.trigger("change",{deselected:this.form_field.options[b.options_index].value}),this.search_field_scale(),!0)},Chosen.prototype.single_deselect_control_build=function(){return this.allow_single_deselect?(this.selected_item.find("abbr").length||this.selected_item.find("span").first().after('<abbr class="search-choice-close"></abbr>'),this.selected_item.addClass("chosen-single-with-deselect")):void 0},Chosen.prototype.get_search_text=function(){return this.search_field.val()===this.default_text?"":a("<div/>").text(a.trim(this.search_field.val())).html()},Chosen.prototype.winnow_results_set_highlight=function(){var a,b;return b=this.is_multiple?[]:this.search_results.find(".result-selected.active-result"),a=b.length?b.first():this.search_results.find(".active-result").first(),null!=a?this.result_do_highlight(a):void 0},Chosen.prototype.no_results=function(b){var c;return c=a('<li class="no-results">'+this.results_none_found+' "<span></span>"</li>'),c.find("span").first().html(b),this.search_results.append(c)},Chosen.prototype.no_results_clear=function(){return this.search_results.find(".no-results").remove()},Chosen.prototype.keydown_arrow=function(){var a;return this.results_showing&&this.result_highlight?(a=this.result_highlight.nextAll("li.active-result").first())?this.result_do_highlight(a):void 0:this.results_show()},Chosen.prototype.keyup_arrow=function(){var a;return this.results_showing||this.is_multiple?this.result_highlight?(a=this.result_highlight.prevAll("li.active-result"),a.length?this.result_do_highlight(a.first()):(this.choices_count()>0&&this.results_hide(),this.result_clear_highlight())):void 0:this.results_show()},Chosen.prototype.keydown_backstroke=function(){var a;return this.pending_backstroke?(this.choice_destroy(this.pending_backstroke.find("a").first()),this.clear_backstroke()):(a=this.search_container.siblings("li.search-choice").last(),a.length&&!a.hasClass("search-choice-disabled")?(this.pending_backstroke=a,this.single_backstroke_delete?this.keydown_backstroke():this.pending_backstroke.addClass("search-choice-focus")):void 0)},Chosen.prototype.clear_backstroke=function(){return this.pending_backstroke&&this.pending_backstroke.removeClass("search-choice-focus"),this.pending_backstroke=null},Chosen.prototype.keydown_checker=function(a){var b,c;switch(b=null!=(c=a.which)?c:a.keyCode,this.search_field_scale(),8!==b&&this.pending_backstroke&&this.clear_backstroke(),b){case 8:this.backstroke_length=this.search_field.val().length;break;case 9:this.results_showing&&!this.is_multiple&&this.result_select(a),this.mouse_on_container=!1;break;case 13:a.preventDefault();break;case 38:a.preventDefault(),this.keyup_arrow();break;case 40:a.preventDefault(),this.keydown_arrow()}},Chosen.prototype.search_field_scale=function(){var b,c,d,e,f,g,h,i,j;if(this.is_multiple){for(d=0,h=0,f="position:absolute; left: -1000px; top: -1000px; display:none;",g=["font-size","font-style","font-weight","font-family","line-height","text-transform","letter-spacing"],i=0,j=g.length;j>i;i++)e=g[i],f+=e+":"+this.search_field.css(e)+";";return b=a("<div />",{style:f}),b.text(this.search_field.val()),a("body").append(b),h=b.width()+25,b.remove(),c=this.container.outerWidth(),h>c-10&&(h=c-10),this.search_field.css({width:h+"px"})}},Chosen}(AbstractChosen)}.call(this);
|
assets/js/functions.js
ADDED
@@ -0,0 +1,3 @@
|
|
Â
|
|
Â
|
|
Â
|
1 |
+
jQuery(document).ready(function($) {
|
2 |
+
|
3 |
+
});
|
classes/changelog.txt
ADDED
@@ -0,0 +1,41 @@
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
1 |
+
Version 1.0.17 (6/23/14)
|
2 |
+
|
3 |
+
Version 1.0.17 (6/23/14)
|
4 |
+
Fix opacity select options from not showing when selected.
|
5 |
+
|
6 |
+
Version 1.0.15 (6/3/14)
|
7 |
+
Added do_action( 'custom_login_admin_enqueue_scripts' ) for extenstions to hook into settings page scripts.
|
8 |
+
|
9 |
+
Version 1.0.14 (5/14/14)
|
10 |
+
One instance.
|
11 |
+
|
12 |
+
Version 1.0.13 (1/28/14)
|
13 |
+
Added image preview on files.
|
14 |
+
|
15 |
+
Version 1.0.12 (1/25/14)
|
16 |
+
Added $cache_time to wp_remote_get_set_transient();
|
17 |
+
|
18 |
+
Version 1.0.11 (1/23/14)
|
19 |
+
Added helper class wp_remote_get_set_transient();
|
20 |
+
|
21 |
+
Version 1.0.10 (1/8/14)
|
22 |
+
|
23 |
+
Updated chosen() class names for 1.0.0
|
24 |
+
Added static $couters to functions to output scripts once.
|
25 |
+
|
26 |
+
Version 1.0.9 (12/17/13)
|
27 |
+
|
28 |
+
Added admin.js
|
29 |
+
Updated chosen().js to version 1.0.0
|
30 |
+
|
31 |
+
Version 1.0.8 (12/3/13)
|
32 |
+
|
33 |
+
Make sure the $announcement isn't empty or has error before caching.
|
34 |
+
|
35 |
+
Version 1.0.7 (5/20/13)
|
36 |
+
|
37 |
+
!empty( $old_message )
|
38 |
+
|
39 |
+
Version 1.0.4 (4/22/13)
|
40 |
+
|
41 |
+
Only enqueue admin scripts on "settings_page_custom-login" $hook
|
classes/class.settings-api.php
ADDED
@@ -0,0 +1,1126 @@
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
1 |
+
<?php
|
2 |
+
|
3 |
+
// Exit if accessed directly
|
4 |
+
if ( ! defined( 'ABSPATH' ) ) exit;
|
5 |
+
|
6 |
+
/**
|
7 |
+
* Extendd Plugin Settings API wrapper class
|
8 |
+
*
|
9 |
+
* @original author: Tareq Hasan <tareq@weDevs.com>
|
10 |
+
*/
|
11 |
+
if ( !class_exists( 'Extendd_Plugin_Settings_API' ) ):
|
12 |
+
class Extendd_Plugin_Settings_API {
|
13 |
+
|
14 |
+
/**
|
15 |
+
* Version
|
16 |
+
*/
|
17 |
+
var $api_version = '1.0.18';
|
18 |
+
|
19 |
+
/**
|
20 |
+
* settings sections array
|
21 |
+
*
|
22 |
+
* @var array
|
23 |
+
*/
|
24 |
+
private $settings_sections = array();
|
25 |
+
|
26 |
+
/**
|
27 |
+
* Settings sections array
|
28 |
+
*
|
29 |
+
* @var array
|
30 |
+
*/
|
31 |
+
private $settings_sidebars = array();
|
32 |
+
|
33 |
+
/**
|
34 |
+
* Settings fields array
|
35 |
+
*
|
36 |
+
* @var array
|
37 |
+
*/
|
38 |
+
private $settings_fields = array();
|
39 |
+
|
40 |
+
/**
|
41 |
+
* The Plugin prefix
|
42 |
+
*
|
43 |
+
* @var string
|
44 |
+
*/
|
45 |
+
private $prefix;
|
46 |
+
|
47 |
+
/**
|
48 |
+
* The Plugin domain
|
49 |
+
*
|
50 |
+
* @var string
|
51 |
+
*/
|
52 |
+
private $domain;
|
53 |
+
|
54 |
+
/**
|
55 |
+
* The Parent Plugin version
|
56 |
+
*
|
57 |
+
* @var string
|
58 |
+
*/
|
59 |
+
private $version;
|
60 |
+
|
61 |
+
/**
|
62 |
+
* Singleton instance
|
63 |
+
*
|
64 |
+
* @var object
|
65 |
+
*/
|
66 |
+
private static $_instance;
|
67 |
+
|
68 |
+
/**
|
69 |
+
* Main Instance
|
70 |
+
*
|
71 |
+
* @staticvar array $instance
|
72 |
+
* @return The one true instance
|
73 |
+
*/
|
74 |
+
public static function instance() {
|
75 |
+
if ( ! isset( self::$_instance ) ) {
|
76 |
+
self::$_instance = new self;
|
77 |
+
self::$_instance->init();
|
78 |
+
}
|
79 |
+
return self::$_instance;
|
80 |
+
}
|
81 |
+
|
82 |
+
function __construct() {}
|
83 |
+
|
84 |
+
/**
|
85 |
+
* Fire
|
86 |
+
*
|
87 |
+
*/
|
88 |
+
function init() {
|
89 |
+
add_action( 'admin_enqueue_scripts', array( $this, 'admin_enqueue_scripts' ) );
|
90 |
+
add_action( 'init', array( $this, 'late_init' ), 89 );
|
91 |
+
}
|
92 |
+
|
93 |
+
/**
|
94 |
+
* Fire any actions needed a little late
|
95 |
+
*
|
96 |
+
* @return void
|
97 |
+
*/
|
98 |
+
function late_init() {
|
99 |
+
if ( function_exists( 'EXTENDD_settings_init' ) ) {
|
100 |
+
$extendd_settings_api = EXTENDD_settings_init();
|
101 |
+
add_action( $this->prefix . '_settings_sidebars', array( $extendd_settings_api, 'extendd_plugins_sidebar' ), 11 );
|
102 |
+
} else {
|
103 |
+
add_action( $this->prefix . '_settings_sidebars', array( $this, 'extendd_plugins_sidebar' ), 11 );
|
104 |
+
}
|
105 |
+
|
106 |
+
add_action( 'admin_notices', array( $this, 'show_notifications' ) );
|
107 |
+
add_action( 'admin_init', array( $this, 'notification_ignore' ) );
|
108 |
+
add_action( 'admin_menu', array( $this, 'modify_transient' ) );
|
109 |
+
}
|
110 |
+
|
111 |
+
/**
|
112 |
+
* Set parent prefix
|
113 |
+
*
|
114 |
+
* @param string $prefix
|
115 |
+
* @return void
|
116 |
+
*/
|
117 |
+
public function set_prefix( $prefix ) {
|
118 |
+
$this->prefix = $prefix;
|
119 |
+
}
|
120 |
+
|
121 |
+
/**
|
122 |
+
* Set parent domain
|
123 |
+
*
|
124 |
+
* @param string $domain
|
125 |
+
* @return void
|
126 |
+
*/
|
127 |
+
public function set_domain( $domain ) {
|
128 |
+
$this->domain = $domain;
|
129 |
+
}
|
130 |
+
|
131 |
+
/**
|
132 |
+
* Set parent version
|
133 |
+
*
|
134 |
+
* @param string $version
|
135 |
+
* @return void
|
136 |
+
*/
|
137 |
+
public function set_version( $version ) {
|
138 |
+
$this->version = $version;
|
139 |
+
}
|
140 |
+
|
141 |
+
/**
|
142 |
+
* Enqueue scripts and styles
|
143 |
+
*/
|
144 |
+
function admin_enqueue_scripts( $hook ) {
|
145 |
+
if ( 'settings_page_' . $this->domain !== $hook )
|
146 |
+
return;
|
147 |
+
|
148 |
+
/* Core */
|
149 |
+
if ( function_exists( 'wp_enqueue_media' ) ) wp_enqueue_media();
|
150 |
+
wp_enqueue_script( 'wp-color-picker' );
|
151 |
+
wp_enqueue_style( 'wp-color-picker' );
|
152 |
+
|
153 |
+
/* jQuery Chosen */
|
154 |
+
wp_enqueue_script( 'jquery-chosen', plugins_url( 'assets/js/chosen.jquery.min.js', CUSTOM_LOGIN_FILE ), array( 'jquery' ), '1.0.0', false );
|
155 |
+
wp_enqueue_style( 'jquery-chosen', plugins_url( 'assets/css/chosen.css', CUSTOM_LOGIN_FILE ), false, '1.0.0', 'screen' );
|
156 |
+
|
157 |
+
/* Admin */
|
158 |
+
wp_enqueue_script( $this->domain, plugins_url( 'assets/js/admin.js', CUSTOM_LOGIN_FILE ), array( 'jquery' ), $this->version, false );
|
159 |
+
wp_enqueue_style( $this->domain, plugins_url( 'assets/css/admin.css', CUSTOM_LOGIN_FILE ), false, $this->version, 'screen' );
|
160 |
+
|
161 |
+
/* Genericons */
|
162 |
+
wp_enqueue_style( 'genericons', plugins_url( 'assets/css/genericons.css', CUSTOM_LOGIN_FILE ), false, '3.0.3', 'screen' );
|
163 |
+
|
164 |
+
do_action( 'custom_login_admin_enqueue_scripts' );
|
165 |
+
}
|
166 |
+
|
167 |
+
/**
|
168 |
+
* Set settings sections
|
169 |
+
*
|
170 |
+
* @param array $sections setting sections array
|
171 |
+
*/
|
172 |
+
function set_sections( $sections ) {
|
173 |
+
$sections = apply_filters( $this->prefix . '_add_settings_sections', $sections );
|
174 |
+
$this->settings_sections = $sections;
|
175 |
+
|
176 |
+
return $this;
|
177 |
+
}
|
178 |
+
|
179 |
+
/**
|
180 |
+
* Add a single section
|
181 |
+
*
|
182 |
+
* @param array $section
|
183 |
+
*/
|
184 |
+
function add_section( $section ) {
|
185 |
+
$this->settings_sections[] = $section;
|
186 |
+
|
187 |
+
return $this;
|
188 |
+
}
|
189 |
+
|
190 |
+
/**
|
191 |
+
* Set settings fields
|
192 |
+
*
|
193 |
+
* @param array $fields settings fields array
|
194 |
+
*/
|
195 |
+
function set_fields( $fields ) {
|
196 |
+
$fields = apply_filters( $this->prefix . '_add_settings_fields', $fields );
|
197 |
+
$this->settings_fields = $fields;
|
198 |
+
|
199 |
+
return $this;
|
200 |
+
}
|
201 |
+
|
202 |
+
function add_field( $section, $field ) {
|
203 |
+
$defaults = array(
|
204 |
+
'name' => '',
|
205 |
+
'label' => '',
|
206 |
+
'desc' => '',
|
207 |
+
'type' => 'text'
|
208 |
+
);
|
209 |
+
|
210 |
+
$args = wp_parse_args( $field, $defaults );
|
211 |
+
$this->settings_fields[$section][] = $args;
|
212 |
+
|
213 |
+
return $this;
|
214 |
+
}
|
215 |
+
|
216 |
+
/**
|
217 |
+
* Add a single section
|
218 |
+
*
|
219 |
+
* @param array $section
|
220 |
+
*/
|
221 |
+
function add_sidebar( $sidebar = array() ) {
|
222 |
+
$sidebar = apply_filters( $this->prefix . '_add_settings_sidebar', $sidebar );
|
223 |
+
if ( !empty( $sidebar ) ) {
|
224 |
+
$this->settings_sidebars[] = $sidebar;
|
225 |
+
}
|
226 |
+
}
|
227 |
+
|
228 |
+
/**
|
229 |
+
* Initialize and registers the settings sections and fileds to WordPress
|
230 |
+
*
|
231 |
+
* Usually this should be called at `admin_init` hook.
|
232 |
+
*
|
233 |
+
* This function gets the initiated settings sections and fields. Then
|
234 |
+
* registers them to WordPress and ready for use.
|
235 |
+
*/
|
236 |
+
function admin_init() {
|
237 |
+
//register settings sections
|
238 |
+
foreach ( $this->settings_sections as $section ) {
|
239 |
+
if ( false == get_option( $section['id'] ) ) {
|
240 |
+
add_option( $section['id'] );
|
241 |
+
}
|
242 |
+
|
243 |
+
add_settings_section( $section['id'], $section['title'], '__return_false', $section['id'] );
|
244 |
+
}
|
245 |
+
|
246 |
+
//register settings fields
|
247 |
+
foreach ( $this->settings_fields as $section => $field ) {
|
248 |
+
foreach ( $field as $option ) {
|
249 |
+
|
250 |
+
$type = isset( $option['type'] ) ? $option['type'] : 'text';
|
251 |
+
|
252 |
+
$args = array(
|
253 |
+
'id' => $option['name'],
|
254 |
+
'desc' => isset( $option['desc'] ) ? $option['desc'] : '',
|
255 |
+
'name' => $option['label'],
|
256 |
+
'section' => $section,
|
257 |
+
'size' => isset( $option['size'] ) ? $option['size'] : null,
|
258 |
+
'options' => isset( $option['options'] ) ? $option['options'] : '',
|
259 |
+
'std' => isset( $option['default'] ) ? $option['default'] : '',
|
260 |
+
'sanitize_callback' => isset( $option['sanitize_callback'] ) ? $option['sanitize_callback'] : '',
|
261 |
+
'class' => isset( $option['class'] ) ? $option['class'] : $this,
|
262 |
+
);
|
263 |
+
$args = wp_parse_args( $args, $option );
|
264 |
+
add_settings_field( $section . '[' . $option['name'] . ']', $option['label'], array( $args['class'], 'callback_' . $type ), $section, $section, $args );
|
265 |
+
}
|
266 |
+
}
|
267 |
+
|
268 |
+
// creates our settings in the options table
|
269 |
+
foreach ( $this->settings_sections as $section ) {
|
270 |
+
register_setting( $section['id'], $section['id'], array( $this, 'sanitize_options' ) );
|
271 |
+
}
|
272 |
+
}
|
273 |
+
|
274 |
+
/**
|
275 |
+
* Displays a text field for a settings field
|
276 |
+
*
|
277 |
+
* @param array $args settings field args
|
278 |
+
*/
|
279 |
+
function callback_text( $args ) {
|
280 |
+
|
281 |
+
$value = esc_attr( $this->get_option( $args['id'], $args['section'], $args['std'] ) );
|
282 |
+
$size = isset( $args['size'] ) && !is_null( $args['size'] ) ? $args['size'] : 'regular';
|
283 |
+
|
284 |
+
$html = sprintf( '<input type="text" class="%1$s-text" id="%2$s[%3$s]" name="%2$s[%3$s]" value="%4$s"/>', $size, $args['section'], $args['id'], $value );
|
285 |
+
$html .= sprintf( '<span class="description"> %s</span>', $args['desc'] );
|
286 |
+
|
287 |
+
echo $html;
|
288 |
+
}
|
289 |
+
|
290 |
+
/**
|
291 |
+
* Displays a text field for a settings field
|
292 |
+
*
|
293 |
+
* @param array $args settings field args
|
294 |
+
*/
|
295 |
+
function callback_text_array( $args ) {
|
296 |
+
static $counter = 0;
|
297 |
+
|
298 |
+
$value = $this->get_option( $args['id'], $args['section'], $args['std'] );
|
299 |
+
$size = isset( $args['size'] ) && !is_null( $args['size'] ) ? $args['size'] : 'regular';
|
300 |
+
|
301 |
+
$html = '<ul style="margin-top:0">';
|
302 |
+
|
303 |
+
if ( is_array( $value ) ) {
|
304 |
+
foreach ( $value as $key => $val ) {
|
305 |
+
$html .= '<li>';
|
306 |
+
$html .= sprintf( '<input type="text" class="%1$s-text" id="%2$s[%3$s]" name="%2$s[%3$s][]" value="%4$s" data-key="%5$s"/>', $size, $args['section'], $args['id'], esc_attr( $val ), $key );
|
307 |
+
$html .= sprintf( '<a href="#" class="button dodelete-%1$s[%2$s]">-</a>', $args['section'], $args['id'] );
|
308 |
+
$html .= '</li>';
|
309 |
+
}
|
310 |
+
} else {
|
311 |
+
$html .= '<li>';
|
312 |
+
$html .= sprintf( '<input type="text" class="%1$s-text" id="%2$s[%3$s]" name="%2$s[%3$s][]" value="%4$s" data-key="0" data-array="false"/>', $size, $args['section'], $args['id'], esc_attr( $value ) );
|
313 |
+
$html .= sprintf( '<a href="#" class="button dodelete-%1$s[%2$s]">-</a>', $args['section'], $args['id'] );
|
314 |
+
$html .= '</li>';
|
315 |
+
}
|
316 |
+
|
317 |
+
$html .= '</ul>';
|
318 |
+
$html .= sprintf( '<a href="#" class="button docopy-%1$s[%2$s]">+</a>', $args['section'], $args['id'] );
|
319 |
+
|
320 |
+
$counter++;
|
321 |
+
ob_start(); ?>
|
322 |
+
<script>
|
323 |
+
jQuery(document).ready(function($) {
|
324 |
+
$('body').on('click', 'a[class^="button docopy-"]', function(e) {
|
325 |
+
e.preventDefault();
|
326 |
+
|
327 |
+
var $this = $(this).prev().children();
|
328 |
+
//console.log($this);return;
|
329 |
+
var clone = $('input[id="' + $this.children().prop('id') + '"]');
|
330 |
+
var value = clone.data('key');
|
331 |
+
var newValue = parseInt(value) + 1;
|
332 |
+
|
333 |
+
//console.log( clone );
|
334 |
+
var newInput = $this.last().clone();
|
335 |
+
newInput.insertAfter( clone.parent().last() );
|
336 |
+
newInput.children().val('').data('key',newValue);
|
337 |
+
return false;
|
338 |
+
});
|
339 |
+
$('body').on('click', 'a[class^="button dodelete-"]', function(e) {
|
340 |
+
e.preventDefault();
|
341 |
+
// console.log(this);
|
342 |
+
|
343 |
+
$(this).parent().remove();
|
344 |
+
});
|
345 |
+
});
|
346 |
+
</script><?php
|
347 |
+
|
348 |
+
$html .= 1 === $counter ? ob_get_clean() : '';
|
349 |
+
|
350 |
+
$html .= sprintf( '<span class="description"> %s</span>', $args['desc'] );
|
351 |
+
|
352 |
+
echo $html;
|
353 |
+
}
|
354 |
+
|
355 |
+
/**
|
356 |
+
* Displays a text field for a settings field
|
357 |
+
*
|
358 |
+
* @param array $args settings field args
|
359 |
+
*/
|
360 |
+
function callback_colorpicker( $args ) {
|
361 |
+
static $counter = 0;
|
362 |
+
|
363 |
+
$value = esc_attr( $this->get_option( $args['id'], $args['section'], $args['std'] ) );
|
364 |
+
$check = esc_attr( $this->get_option( $args['id'] . '_checkbox', $args['section'], $args['std'] ) );
|
365 |
+
$opacity = esc_attr( $this->get_option( $args['id'] . '_opacity', $args['section'], $args['std'] ) );
|
366 |
+
$size = isset( $args['size'] ) && !is_null( $args['size'] ) ? $args['size'] : 'small';
|
367 |
+
$opaque_options = array( '1', '0.9', '0.8', '0.7', '0.6', '0.5', '0.4', '0.3', '0.2', '0.1', '0', );
|
368 |
+
$class = 'on' != $check ? ' hidden' : '';
|
369 |
+
|
370 |
+
/* Color */
|
371 |
+
$html = sprintf( '<input type="text" class="%1$s-text" id="%2$s[%3$s]" name="%2$s[%3$s]" value="%4$s" style="float:left"/>', $size, $args['section'], $args['id'], $value );
|
372 |
+
|
373 |
+
/* Allow Opacity */
|
374 |
+
$html .= '<div class="checkbox-wrap">';
|
375 |
+
$html .= sprintf( '<input type="hidden" name="%1$s[%2$s]" value="off" />', $args['section'], $args['id'] . '_checkbox' );
|
376 |
+
$html .= sprintf( '<input type="checkbox" class="checkbox" id="%1$s[%2$s]" name="%1$s[%2$s]" value="on"%4$s />', $args['section'], $args['id'] . '_checkbox', $check, checked( $check, 'on', false ) );
|
377 |
+
$html .= sprintf( __( '<label for="%1$s[%2$s]">Opacity</label>', $this->domain ), $args['section'], $args['id'] . '_checkbox' );
|
378 |
+
$html .= '</div>';
|
379 |
+
|
380 |
+
/* Opacity */
|
381 |
+
// $html .= sprintf( '<input type="text" class="%1$s-text" id="%2$s[%3$s]" name="%2$s[%3$s]" value="%4$s" style="margin-left:70px;%5$s" />', $size, $args['section'], $args['id'] . '_opacity', $opacity, ( 'on' !== $check ? 'display:none;' : '' ) );
|
382 |
+
$html .= sprintf( '<select class="%1$s%4$s" name="%2$s[%3$s]" id="%2$s[%3$s]" style="margin-left:70px;">', $size, $args['section'], $args['id'] . '_opacity', $class );
|
383 |
+
foreach ( $opaque_options as $key ) {
|
384 |
+
$html .= sprintf( '<option value="%s"%s>%s</option>', $key, selected( $opacity, $key, false ), $key );
|
385 |
+
}
|
386 |
+
$html .= sprintf( '</select>' );
|
387 |
+
|
388 |
+
$counter++;
|
389 |
+
ob_start(); ?>
|
390 |
+
<script>
|
391 |
+
jQuery(document).ready(function($) {
|
392 |
+
var myOptions = {
|
393 |
+
// you can declare a default color here,
|
394 |
+
// or in the data-default-color attribute on the input
|
395 |
+
defaultColor: false,
|
396 |
+
// a callback to fire whenever the color changes to a valid color
|
397 |
+
change: function(event, ui){},
|
398 |
+
// a callback to fire when the input is emptied or an invalid color
|
399 |
+
clear: function() {},
|
400 |
+
// hide the color picker controls on load
|
401 |
+
hide: true,
|
402 |
+
// show a group of common colors beneath the square
|
403 |
+
// or, supply an array of colors to customize further
|
404 |
+
palettes: true
|
405 |
+
};
|
406 |
+
$('input[name="<?php echo $args['section'] . '[' . $args['id'] . ']'; ?>"]').wpColorPicker();
|
407 |
+
|
408 |
+
if ( $('select[name="<?php echo $args['section'] . '[' . $args['id'] . '_opacity]'; ?>"]').hasClass('hidden') ) {
|
409 |
+
$('select[name="<?php echo $args['section'] . '[' . $args['id'] . '_opacity]'; ?>"]').removeClass('hidden').chosen().addClass('hidden');
|
410 |
+
} else {
|
411 |
+
$('select[name="<?php echo $args['section'] . '[' . $args['id'] . '_opacity]'; ?>"]').chosen();
|
412 |
+
}
|
413 |
+
|
414 |
+
if ( $('select[name="<?php echo $args['section'] . '[' . $args['id'] . '_opacity]'; ?>"]').hasClass('hidden') ) {
|
415 |
+
$('#<?php echo str_replace( '[', '_', $args['section'] . '[' . $args['id'] . '_opacity' ); ?>__chosen').hide();
|
416 |
+
}
|
417 |
+
|
418 |
+
$('input[name="<?php echo $args['section'] . '[' . $args['id'] . '_checkbox]'; ?>"]').on('change', function() {
|
419 |
+
$('#<?php echo str_replace( '[', '_', $args['section'] . '[' . $args['id'] . '_opacity' ); ?>__chosen').toggle();
|
420 |
+
});
|
421 |
+
});
|
422 |
+
</script><?php
|
423 |
+
$html .= 1 === $counter ? ob_get_clean() : '';
|
424 |
+
|
425 |
+
/* Description */
|
426 |
+
if ( !empty( $args['desc'] ) )
|
427 |
+
$html .= sprintf( '<span class="description"> %s</span>', $args['desc'] );
|
428 |
+
|
429 |
+
echo $html;
|
430 |
+
}
|
431 |
+
|
432 |
+
/**
|
433 |
+
* Displays a checkbox for a settings field
|
434 |
+
*
|
435 |
+
* @param array $args settings field args
|
436 |
+
*/
|
437 |
+
function callback_checkbox( $args ) {
|
438 |
+
|
439 |
+
$value = esc_attr( $this->get_option( $args['id'], $args['section'], $args['std'] ) );
|
440 |
+
|
441 |
+
$html = '<div class="checkbox-wrap">';
|
442 |
+
$html .= sprintf( '<input type="hidden" name="%1$s[%2$s]" value="off" />', $args['section'], $args['id'] );
|
443 |
+
$html .= sprintf( '<input type="checkbox" class="checkbox" id="%1$s[%2$s]" name="%1$s[%2$s]" value="on"%4$s />', $args['section'], $args['id'], $value, checked( $value, 'on', false ) );
|
444 |
+
$html .= sprintf( '<label for="%1$s[%2$s]"></label>', $args['section'], $args['id'] );
|
445 |
+
$html .= '</div>';
|
446 |
+
$html .= sprintf( '<span class="description"> %s</label>', $args['desc'] );
|
447 |
+
|
448 |
+
echo $html;
|
449 |
+
}
|
450 |
+
|
451 |
+
/**
|
452 |
+
* Displays a multicheckbox a settings field
|
453 |
+
*
|
454 |
+
* @param array $args settings field args
|
455 |
+
*/
|
456 |
+
function callback_multicheck( $args ) {
|
457 |
+
|
458 |
+
$value = $this->get_option( $args['id'], $args['section'], $args['std'] );
|
459 |
+
|
460 |
+
$html = '<div class="checkbox-wrap">';
|
461 |
+
$html .= '<ul>';
|
462 |
+
foreach ( $args['options'] as $key => $label ) {
|
463 |
+
$checked = isset( $value[$key] ) ? $value[$key] : '0';
|
464 |
+
$html .= '<li>';
|
465 |
+
$html .= sprintf( '<input type="checkbox" class="checkbox" id="%1$s[%2$s][%3$s]" name="%1$s[%2$s][%3$s]" value="%3$s"%4$s />', $args['section'], $args['id'], $key, checked( $checked, $key, false ) );
|
466 |
+
$html .= sprintf( '<label for="%1$s[%2$s][%4$s]" title="%3$s"> %3$s</label>', $args['section'], $args['id'], $label, $key );
|
467 |
+
$html .= '</li>';
|
468 |
+
}
|
469 |
+
$html .= '</ul>';
|
470 |
+
$html .= '</div>';
|
471 |
+
$html .= sprintf( '<span class="description"> %s</label>', $args['desc'] );
|
472 |
+
|
473 |
+
echo $html;
|
474 |
+
}
|
475 |
+
|
476 |
+
/**
|
477 |
+
* Displays a multicheckbox a settings field
|
478 |
+
*
|
479 |
+
* @param array $args settings field args
|
480 |
+
*/
|
481 |
+
function callback_radio( $args ) {
|
482 |
+
|
483 |
+
$value = $this->get_option( $args['id'], $args['section'], $args['std'] );
|
484 |
+
|
485 |
+
$html = '<div class="radio-wrap">';
|
486 |
+
$html .= '<ul>';
|
487 |
+
foreach ( $args['options'] as $key => $label ) {
|
488 |
+
$html .= '<li>';
|
489 |
+
$html .= sprintf( '<input type="radio" class="radio" id="%1$s[%2$s][%3$s]" name="%1$s[%2$s]" value="%3$s"%4$s />', $args['section'], $args['id'], $key, checked( $value, $key, false ) );
|
490 |
+
$html .= sprintf( '<label for="%1$s[%2$s][%4$s]" title="%3$s"> %3$s</label><br>', $args['section'], $args['id'], $label, $key );
|
491 |
+
$html .= '</li>';
|
492 |
+
}
|
493 |
+
$html .= '</ul>';
|
494 |
+
$html .= '</div>';
|
495 |
+
|
496 |
+
|
497 |
+
$html .= sprintf( '<span class="description"> %s</label>', $args['desc'] );
|
498 |
+
|
499 |
+
echo $html;
|
500 |
+
}
|
501 |
+
|
502 |
+
/**
|
503 |
+
* Displays a selectbox for a settings field
|
504 |
+
*
|
505 |
+
* @param array $args settings field args
|
506 |
+
*/
|
507 |
+
function callback_select( $args ) {
|
508 |
+
|
509 |
+
$value = esc_attr( $this->get_option( $args['id'], $args['section'], $args['std'] ) );
|
510 |
+
$size = isset( $args['size'] ) && !is_null( $args['size'] ) ? $args['size'] : 'regular';
|
511 |
+
|
512 |
+
$html = sprintf( '<select class="%1$s" name="%2$s[%3$s]" id="%2$s[%3$s]">', $size, $args['section'], $args['id'] );
|
513 |
+
foreach ( $args['options'] as $key => $label ) {
|
514 |
+
$html .= sprintf( '<option value="%s"%s>%s</option>', $key, selected( $value, $key, false ), $label );
|
515 |
+
}
|
516 |
+
$html .= sprintf( '</select>' );
|
517 |
+
|
518 |
+
ob_start(); ?>
|
519 |
+
<script>
|
520 |
+
jQuery(document).ready(function($) {
|
521 |
+
$('select[name="<?php echo $args['section'] . '[' . $args['id'] . ']'; ?>"]').chosen();
|
522 |
+
});
|
523 |
+
</script><?php
|
524 |
+
|
525 |
+
$html .= ob_get_clean();
|
526 |
+
$html .= sprintf( '<span class="description"> %s</span>', $args['desc'] );
|
527 |
+
|
528 |
+
echo $html;
|
529 |
+
}
|
530 |
+
|
531 |
+
/**
|
532 |
+
* Displays a textarea for a settings field
|
533 |
+
*
|
534 |
+
* @param array $args settings field args
|
535 |
+
*/
|
536 |
+
function callback_textarea( $args ) {
|
537 |
+
|
538 |
+
$value = esc_textarea( $this->get_option( $args['id'], $args['section'], $args['std'] ) );
|
539 |
+
//$value = wp_specialchars_decode( stripslashes( $this->get_option( $args['id'], $args['section'], $args['std'] ) ), 1, 0, 1 );
|
540 |
+
$size = isset( $args['size'] ) && !is_null( $args['size'] ) ? $args['size'] : 'regular';
|
541 |
+
|
542 |
+
$html = sprintf( '<textarea rows="5" cols="55" class="%1$s-text" id="%2$s[%3$s]" name="%2$s[%3$s]">%4$s</textarea>', $size, $args['section'], $args['id'], stripslashes( $value ) );
|
543 |
+
$html .= sprintf( '<br><span class="description"> %s</span>', $args['desc'] );
|
544 |
+
|
545 |
+
echo $html;
|
546 |
+
}
|
547 |
+
|
548 |
+
/**
|
549 |
+
* Displays a textarea for a settings field
|
550 |
+
*
|
551 |
+
* @param array $args settings field args
|
552 |
+
*/
|
553 |
+
function callback_html( $args ) {
|
554 |
+
echo $args['desc'];
|
555 |
+
}
|
556 |
+
|
557 |
+
/**
|
558 |
+
* Displays a rich text textarea for a settings field
|
559 |
+
*
|
560 |
+
* @param array $args settings field args
|
561 |
+
*/
|
562 |
+
function callback_wysiwyg( $args ) {
|
563 |
+
|
564 |
+
$value = wpautop( $this->get_option( $args['id'], $args['section'], $args['std'] ) );
|
565 |
+
$size = isset( $args['size'] ) && !is_null( $args['size'] ) ? $args['size'] : '500px';
|
566 |
+
|
567 |
+
echo '<div style="width: ' . $size . ';">';
|
568 |
+
|
569 |
+
wp_editor( $value, $args['section'] . '[' . $args['id'] . ']', array( 'teeny' => true, 'textarea_rows' => 10 ) );
|
570 |
+
|
571 |
+
echo '</div>';
|
572 |
+
|
573 |
+
echo sprintf( '<br><span class="description"> %s</span>', $args['desc'] );
|
574 |
+
}
|
575 |
+
|
576 |
+
/**
|
577 |
+
* Displays a file upload field for a settings field
|
578 |
+
*
|
579 |
+
* @param array $args settings field args
|
580 |
+
*/
|
581 |
+
function callback_file( $args ) {
|
582 |
+
static $counter = 0;
|
583 |
+
|
584 |
+
$value = esc_attr( $this->get_option( $args['id'], $args['section'], $args['std'] ) );
|
585 |
+
$size = isset( $args['size'] ) && !is_null( $args['size'] ) ? $args['size'] : 'regular';
|
586 |
+
$id = $args['section'] . '[' . $args['id'] . ']';
|
587 |
+
$html = sprintf( '<input type="text" class="%1$s-text" id="%2$s[%3$s]" name="%2$s[%3$s]" value="%4$s"/>', $size, $args['section'], $args['id'], $value );
|
588 |
+
$html .= '<input type="button" class="button extendd-browse" id="'. $id .'_button" value="Browse" style="margin-left:5px" />';
|
589 |
+
$html .= '<input type="button" class="button extendd-clear" id="'. $id .'_clear" value="Clear" style="margin-left:5px" />';
|
590 |
+
|
591 |
+
$counter++;
|
592 |
+
if ( 1 === $counter ) {
|
593 |
+
ob_start(); ?>
|
594 |
+
<script>
|
595 |
+
jQuery(document).ready(function($) {
|
596 |
+
// WP 3.5+ uploader
|
597 |
+
var file_frame;
|
598 |
+
var wp_media_post_id = wp.media.model.settings.post.id; // Store the old id
|
599 |
+
var set_to_post_id = <?php echo isset( $args['page_id'] ) ? $args['page_id'] : '0'; ?>; // Set this
|
600 |
+
window.formfield = '';
|
601 |
+
|
602 |
+
$(document.body).on('click', 'input[type="button"].button.extendd-browse', function(e) {
|
603 |
+
|
604 |
+
e.preventDefault();
|
605 |
+
|
606 |
+
var button = $(this);
|
607 |
+
|
608 |
+
window.formfield = $(this).closest('td');
|
609 |
+
|
610 |
+
// If the media frame already exists, reopen it.
|
611 |
+
if ( file_frame ) {
|
612 |
+
file_frame.uploader.uploader.param( 'post_id', set_to_post_id );
|
613 |
+
file_frame.open();
|
614 |
+
return;
|
615 |
+
} else {
|
616 |
+
// Set the wp.media post id so the uploader grabs the ID we want when initialised
|
617 |
+
wp.media.model.settings.post.id = set_to_post_id;
|
618 |
+
}
|
619 |
+
|
620 |
+
// Create the media frame.
|
621 |
+
file_frame = wp.media.frames.file_frame = wp.media({
|
622 |
+
frame: 'post',
|
623 |
+
state: 'insert',
|
624 |
+
title: button.data( 'uploader_title' ),
|
625 |
+
button: {
|
626 |
+
text: button.data( 'uploader_button_text' ),
|
627 |
+
},
|
628 |
+
library: {
|
629 |
+
type: 'image',
|
630 |
+
},
|
631 |
+
multiple: false // Set to true to allow multiple files to be selected
|
632 |
+
});
|
633 |
+
|
634 |
+
file_frame.on( 'menu:render:default', function(view) {
|
635 |
+
// Store our views in an object.
|
636 |
+
var views = {};
|
637 |
+
|
638 |
+
// Unset default menu items
|
639 |
+
view.unset('library-separator');
|
640 |
+
view.unset('gallery');
|
641 |
+
view.unset('featured-image');
|
642 |
+
view.unset('embed');
|
643 |
+
|
644 |
+
// Initialize the views in our view object.
|
645 |
+
view.set(views);
|
646 |
+
});
|
647 |
+
|
648 |
+
// When an image is selected, run a callback.
|
649 |
+
file_frame.on( 'insert', function() {
|
650 |
+
var attachment = file_frame.state().get('selection').first().toJSON();
|
651 |
+
// console.log(attachment);
|
652 |
+
|
653 |
+
window.formfield.find('input[type="text"]').val(attachment.url);
|
654 |
+
window.formfield.find('#<?php echo $id; ?>_preview').html('<div class="img" style="width:250px"><img src="'+attachment.url+'" alt="" /><a href="#" class="remove_file_button" rel="<?php echo $id; ?>">Remove Image</a></div>');
|
655 |
+
});
|
656 |
+
|
657 |
+
// Finally, open the modal
|
658 |
+
file_frame.open();
|
659 |
+
});
|
660 |
+
|
661 |
+
// WP 3.5+ uploader
|
662 |
+
var file_frame;
|
663 |
+
window.formfield = '';
|
664 |
+
|
665 |
+
$('input[type="button"].button.extendd-clear').on('click', function(e) {
|
666 |
+
e.preventDefault();
|
667 |
+
$(this).closest('td').find('input[type="text"]').val('');
|
668 |
+
$(this).closest('td').find('#' + $(this).prop('id').replace( '_clear', '_preview') + ' div.image').remove();
|
669 |
+
});
|
670 |
+
$('a.remove_file_button').on( 'click', function(e) {
|
671 |
+
e.preventDefault();
|
672 |
+
$(this).closest('td').find('input[type="text"]').val('');
|
673 |
+
$(this).parent().slideUp().remove();
|
674 |
+
});
|
675 |
+
});
|
676 |
+
</script><?php
|
677 |
+
$html .= ob_get_clean();
|
678 |
+
}
|
679 |
+
$html .= sprintf( '<br><span class="description"> %s</span>', $args['desc'] );
|
680 |
+
|
681 |
+
/* Image */
|
682 |
+
$html .= '<div id="' . $id . '_preview" class="' . $id . '_preview">';
|
683 |
+
if ( $value != '' ) {
|
684 |
+
$check_image = preg_match( '/(^.*\.jpg|jpeg|png|gif|ico*)/i', $value );
|
685 |
+
if ( $check_image ) {
|
686 |
+
$html .= '<div class="img" style="display:none">';
|
687 |
+
$html .= '<img src="' . $value . '" alt="" />';
|
688 |
+
$html .= '<a href="#" class="remove_file_button" rel="' . $id . '">Remove Image</a>';
|
689 |
+
$html .= '</div>';
|
690 |
+
}
|
691 |
+
}
|
692 |
+
$html .= '</div>';
|
693 |
+
|
694 |
+
echo $html;
|
695 |
+
}
|
696 |
+
|
697 |
+
/**
|
698 |
+
* Displays a password field for a settings field
|
699 |
+
*
|
700 |
+
* @param array $args settings field args
|
701 |
+
*/
|
702 |
+
function callback_password( $args ) {
|
703 |
+
|
704 |
+
$value = esc_attr( $this->get_option( $args['id'], $args['section'], $args['std'] ) );
|
705 |
+
$size = isset( $args['size'] ) && !is_null( $args['size'] ) ? $args['size'] : 'regular';
|
706 |
+
|
707 |
+
$html = sprintf( '<input type="password" class="%1$s-text" id="%2$s[%3$s]" name="%2$s[%3$s]" value="%4$s"/>', $size, $args['section'], $args['id'], $value );
|
708 |
+
$html .= sprintf( '<span class="description"> %s</span>', $args['desc'] );
|
709 |
+
|
710 |
+
echo $html;
|
711 |
+
}
|
712 |
+
|
713 |
+
/**
|
714 |
+
* Sanitize callback for Settings API
|
715 |
+
*/
|
716 |
+
function sanitize_options( $options ) {
|
717 |
+
delete_transient( $this->prefix . '_style' );
|
718 |
+
delete_transient( $this->prefix . '_script' );
|
719 |
+
|
720 |
+
foreach( $options as $option_slug => $option_value ) {
|
721 |
+
$sanitize_callback = $this->get_sanitize_callback( $option_slug );
|
722 |
+
|
723 |
+
// If callback is set, call it
|
724 |
+
if ( $sanitize_callback ) {
|
725 |
+
$options[ $option_slug ] = call_user_func( $sanitize_callback, $option_value );
|
726 |
+
continue;
|
727 |
+
}
|
728 |
+
|
729 |
+
// Treat everything that's not an array as a string
|
730 |
+
if ( !is_array( $option_value ) ) {
|
731 |
+
$options[ $option_slug ] = sanitize_text_field( $option_value );
|
732 |
+
continue;
|
733 |
+
}
|
734 |
+
}
|
735 |
+
return $options;
|
736 |
+
}
|
737 |
+
|
738 |
+
/**
|
739 |
+
* Get sanitization callback for given option slug
|
740 |
+
*
|
741 |
+
* @param string $slug option slug
|
742 |
+
*
|
743 |
+
* @return mixed string or bool false
|
744 |
+
*/
|
745 |
+
function get_sanitize_callback( $slug = '' ) {
|
746 |
+
if ( empty( $slug ) )
|
747 |
+
return false;
|
748 |
+
// Iterate over registered fields and see if we can find proper callback
|
749 |
+
foreach( $this->settings_fields as $section => $options ) {
|
750 |
+
foreach ( $options as $option ) {
|
751 |
+
if ( $option['name'] != $slug )
|
752 |
+
continue;
|
753 |
+
// Return the callback name
|
754 |
+
return isset( $option['sanitize_callback'] ) && is_callable( $option['sanitize_callback'] ) ? $option['sanitize_callback'] : false;
|
755 |
+
}
|
756 |
+
}
|
757 |
+
return false;
|
758 |
+
}
|
759 |
+
|
760 |
+
/**
|
761 |
+
* Get the value of a settings field
|
762 |
+
*
|
763 |
+
* @param string $option settings field name
|
764 |
+
* @param string $section the section name this field belongs to
|
765 |
+
* @param string $default default text if it's not found
|
766 |
+
* @return string
|
767 |
+
*/
|
768 |
+
function get_option( $option, $section, $default = '' ) {
|
769 |
+
|
770 |
+
$options = get_option( $section );
|
771 |
+
|
772 |
+
if ( isset( $options[$option] ) ) {
|
773 |
+
return $options[$option];
|
774 |
+
}
|
775 |
+
|
776 |
+
return $default;
|
777 |
+
}
|
778 |
+
|
779 |
+
/**
|
780 |
+
* Show navigations as tab
|
781 |
+
*
|
782 |
+
* Shows all the settings section labels as tab
|
783 |
+
*/
|
784 |
+
function show_navigation() {
|
785 |
+
$html = '<h2 class="nav-tab-wrapper">';
|
786 |
+
|
787 |
+
foreach ( $this->settings_sections as $tab ) {
|
788 |
+
$html .= sprintf( '<a href="#%1$s" class="nav-tab" id="%1$s-tab">%2$s</a>', $tab['id'], $tab['title'] );
|
789 |
+
}
|
790 |
+
|
791 |
+
$html .= '</h2>';
|
792 |
+
|
793 |
+
echo $html;
|
794 |
+
}
|
795 |
+
|
796 |
+
/**
|
797 |
+
* Helper function to make remote calls
|
798 |
+
*
|
799 |
+
* @since 2.2
|
800 |
+
*/
|
801 |
+
function wp_remote_get_set_transient( $url = false, $transient, $type = 'message', $cache_time = null ) {
|
802 |
+
if ( !$url ) return;
|
803 |
+
|
804 |
+
if ( is_null( $cache_time ) ) {
|
805 |
+
if ( defined( 'DAY_IN_SECONDS' ) )
|
806 |
+
$cache_time = DAY_IN_SECONDS;
|
807 |
+
else
|
808 |
+
$cache_time = 24 * 60 * 60;
|
809 |
+
}
|
810 |
+
|
811 |
+
if ( false === ( $output = get_transient( $transient ) ) ) {
|
812 |
+
$site = wp_remote_get( $url, array( 'timeout' => 15, 'sslverify' => false ) );
|
813 |
+
if ( !is_wp_error( $site ) ) {
|
814 |
+
if ( isset( $site['body'] ) && strlen( $site['body'] ) > 0 ) {
|
815 |
+
$output = json_decode( wp_remote_retrieve_body( $site ) );
|
816 |
+
|
817 |
+
// For when I mess up the JSON or github is down.
|
818 |
+
if ( is_wp_error( $output ) || empty( $output->$type ) )
|
819 |
+
return false;
|
820 |
+
|
821 |
+
set_transient( $transient, $output, $cache_time ); // Cache for two weeks
|
822 |
+
update_option( $transient . '_message', $output->$type ); // Update the message
|
823 |
+
|
824 |
+
// Return the data
|
825 |
+
return $output;
|
826 |
+
}
|
827 |
+
} else {
|
828 |
+
// Error, lets return!
|
829 |
+
return false;
|
830 |
+
}
|
831 |
+
}
|
832 |
+
return $output;
|
833 |
+
|
834 |
+
}
|
835 |
+
|
836 |
+
/**
|
837 |
+
* Show the section settings forms
|
838 |
+
*
|
839 |
+
* This function displays every sections in a different form
|
840 |
+
*
|
841 |
+
* @uses http://codex.wordpress.org/Transients_API#Using_Time_Constants
|
842 |
+
*/
|
843 |
+
function show_notifications() {
|
844 |
+
$transient = $this->prefix . '_announcement';
|
845 |
+
$ignore = $this->prefix . '_ignore_announcement';
|
846 |
+
$old_message = get_option( $transient . '_message' );
|
847 |
+
$user_meta = get_user_meta( get_current_user_id(), $ignore, true );
|
848 |
+
|
849 |
+
// delete_user_meta( get_current_user_id(), $ignore, 1 );
|
850 |
+
// delete_transient( $transient );
|
851 |
+
// delete_option( $this->prefix . '_announcement_message' );
|
852 |
+
|
853 |
+
/* Current user can */
|
854 |
+
if ( !current_user_can( 'manage_options' ) )
|
855 |
+
return;
|
856 |
+
|
857 |
+
$announcement = $this->wp_remote_get_set_transient( 'https://raw.github.com/thefrosty/custom-login/master/extensions.json', $transient, 'message' );
|
858 |
+
|
859 |
+
//print_r( $announcement );
|
860 |
+
|
861 |
+
if ( false === $announcement ) return;
|
862 |
+
|
863 |
+
if ( trim( $old_message ) !== trim( $announcement->message ) && !empty( $old_message ) ) {
|
864 |
+
delete_user_meta( get_current_user_id(), $ignore, 1 );
|
865 |
+
delete_transient( $transient );
|
866 |
+
delete_option( $transient . '_message' );
|
867 |
+
//echo 'test';
|
868 |
+
}
|
869 |
+
|
870 |
+
$html = '<div class="updated" data-old-message="' . esc_attr( $old_message ) . '" data-announcement="' . esc_attr( $announcement->message ) . '"><p>';
|
871 |
+
$html .= sprintf( __( '%1$s | <a href="%2$s">Dismiss notice</a>', $this->domain ), $announcement->message, esc_url( add_query_arg( $ignore, wp_create_nonce( $ignore ), admin_url( 'options-general.php?page=custom-login' ) ) ) );
|
872 |
+
$html .= '</p></div>';
|
873 |
+
|
874 |
+
if ( !$user_meta && 1 !== $user_meta )
|
875 |
+
echo $html;
|
876 |
+
}
|
877 |
+
|
878 |
+
/**
|
879 |
+
* Remove notification
|
880 |
+
*
|
881 |
+
* @return void
|
882 |
+
*/
|
883 |
+
function notification_ignore() {
|
884 |
+
$ignore = $this->prefix . '_ignore_announcement';
|
885 |
+
|
886 |
+
//if ( isset( $_GET[$ignore] ) ) echo $_GET[$ignore]; exit;
|
887 |
+
|
888 |
+
if ( !isset( $_GET[$ignore] ) )
|
889 |
+
return;
|
890 |
+
|
891 |
+
// Check nonce
|
892 |
+
check_admin_referer( $ignore, $ignore );
|
893 |
+
|
894 |
+
/* If user clicks to ignore the notice, add that to their user meta */
|
895 |
+
add_user_meta( get_current_user_id(), $ignore, 1, true );
|
896 |
+
}
|
897 |
+
|
898 |
+
/**
|
899 |
+
*/
|
900 |
+
function load_edd_add_ons_page() {
|
901 |
+
if ( ! class_exists( 'Easy_Digital_Downloads' ) )
|
902 |
+
return;
|
903 |
+
|
904 |
+
global $edd_add_ons_page;
|
905 |
+
add_action( 'load-' . $edd_add_ons_page, array( $this, 'modify_transient' ), 11 );
|
906 |
+
}
|
907 |
+
|
908 |
+
/**
|
909 |
+
*/
|
910 |
+
function modify_transient() {
|
911 |
+
|
912 |
+
if ( false !== ( $cache = get_transient( 'easydigitaldownloads_add_ons_feed' ) ) ) {
|
913 |
+
|
914 |
+
if ( false === ( $cl = get_transient( 'custom_login_edd_add_ons_feed' ) ) ) {
|
915 |
+
// Replace ?utm_* link
|
916 |
+
//$cache = preg_replace( '/(\?|\&|&)utm_[a-z]+=[a-zA-Z0-9-]+/', '', $cache );
|
917 |
+
//var_dump( $cache ); exit;
|
918 |
+
// Replace 'ref=1' on "Get the Add On" link.
|
919 |
+
$cache = preg_replace( '/ref=(\d+)/i', 'ref=116', $cache );
|
920 |
+
//echo( $cache ); exit;
|
921 |
+
delete_transient( 'easydigitaldownloads_add_ons_feed' );
|
922 |
+
set_transient( 'easydigitaldownloads_add_ons_feed', $cache, WEEK_IN_SECONDS * 2 );
|
923 |
+
set_transient( 'custom_login_edd_add_ons_feed', '1', WEEK_IN_SECONDS * 2 );
|
924 |
+
}
|
925 |
+
}
|
926 |
+
|
927 |
+
}
|
928 |
+
|
929 |
+
/**
|
930 |
+
* Show the section settings forms
|
931 |
+
*
|
932 |
+
* This function displays every sections in a different form
|
933 |
+
*/
|
934 |
+
function show_forms() { ?>
|
935 |
+
<div class="section col-group">
|
936 |
+
<div class="postbox col span_2_of_3">
|
937 |
+
<?php foreach ( $this->settings_sections as $form ) { ?>
|
938 |
+
<div id="<?php echo $form['id']; ?>" class="group">
|
939 |
+
<form method="post" action="options.php">
|
940 |
+
|
941 |
+
<?php do_action( $this->prefix . '_form_top_' . $form['id'], $form ); ?>
|
942 |
+
<?php settings_fields( $form['id'] ); ?>
|
943 |
+
<div class="inside"><?php do_settings_sections( $form['id'] ); ?></div>
|
944 |
+
<?php do_action( $this->prefix . '_form_bottom_' . $form['id'], $form ); ?>
|
945 |
+
|
946 |
+
<div style="padding-left: 10px">
|
947 |
+
<?php submit_button(); ?>
|
948 |
+
</div>
|
949 |
+
</form>
|
950 |
+
</div>
|
951 |
+
<?php } ?>
|
952 |
+
</div>
|
953 |
+
<div class="col span_1_of_3" style="margin-top:0">
|
954 |
+
<?php do_action( $this->prefix . '_settings_sidebars', $this->settings_sidebars ); ?>
|
955 |
+
</div>
|
956 |
+
|
957 |
+
</div>
|
958 |
+
<br class="clear">
|
959 |
+
<?php
|
960 |
+
}
|
961 |
+
|
962 |
+
/**
|
963 |
+
* Tabbable JavaScript codes
|
964 |
+
*
|
965 |
+
* This code uses localstorage for displaying active tabs
|
966 |
+
*/
|
967 |
+
function inline_jquery() { ?>
|
968 |
+
<script type="text/javascript">
|
969 |
+
jQuery(document).ready(function($) {
|
970 |
+
// Switches option sections
|
971 |
+
$('.group').hide();
|
972 |
+
var activetab = '';
|
973 |
+
if (typeof(localStorage) != 'undefined' ) {
|
974 |
+
activetab = localStorage.getItem("activetab");
|
975 |
+
}
|
976 |
+
if (activetab != '' && $(activetab).length ) {
|
977 |
+
$(activetab).fadeIn();
|
978 |
+
$(activetab + '_sidebar').fadeIn();
|
979 |
+
} else {
|
980 |
+
$('.group:first').fadeIn();
|
981 |
+
$('.metabox-holder.group:first').fadeIn();
|
982 |
+
}
|
983 |
+
$('.group .collapsed').each(function(){
|
984 |
+
$(this).find('input:checked').parent().parent().parent().nextAll().each(
|
985 |
+
function(){
|
986 |
+
if ($(this).hasClass('last')) {
|
987 |
+
$(this).removeClass('hidden');
|
988 |
+
return false;
|
989 |
+
}
|
990 |
+
$(this).filter('.hidden').removeClass('hidden');
|
991 |
+
});
|
992 |
+
});
|
993 |
+
|
994 |
+
if (activetab != '' && $(activetab + '-tab').length ) {
|
995 |
+
$(activetab + '-tab').addClass('nav-tab-active');
|
996 |
+
}
|
997 |
+
else {
|
998 |
+
$('.nav-tab-wrapper a:first').addClass('nav-tab-active');
|
999 |
+
}
|
1000 |
+
$('.nav-tab-wrapper a').on('click',function(e) {
|
1001 |
+
$('.nav-tab-wrapper a').removeClass('nav-tab-active');
|
1002 |
+
$(this).addClass('nav-tab-active').blur();
|
1003 |
+
var clicked_group = $(this).attr('href');
|
1004 |
+
if (typeof(localStorage) != 'undefined' ) {
|
1005 |
+
localStorage.setItem("activetab", $(this).attr('href'));
|
1006 |
+
}
|
1007 |
+
$('.group').hide();
|
1008 |
+
$(clicked_group).fadeIn();
|
1009 |
+
$(clicked_group + '_sidebar').fadeIn();
|
1010 |
+
e.preventDefault();
|
1011 |
+
});
|
1012 |
+
<?php if ( isset( $_GET['settings-updated'] ) && 'true' === $_GET['settings-updated'] ) { ?>
|
1013 |
+
|
1014 |
+
setTimeout( function() {
|
1015 |
+
$('#setting-error-settings_updated, #setting-error-transitent_deleted').fadeOut('slow');
|
1016 |
+
}, 4000 );
|
1017 |
+
<?php } ?>
|
1018 |
+
});
|
1019 |
+
</script><?php
|
1020 |
+
}
|
1021 |
+
|
1022 |
+
/**
|
1023 |
+
* Create a potbox widget.
|
1024 |
+
*
|
1025 |
+
* @param string $id ID of the postbox.
|
1026 |
+
* @param string $title Title of the postbox.
|
1027 |
+
* @param string $content Content of the postbox.
|
1028 |
+
*/
|
1029 |
+
public function postbox( $id, $title, $content, $group = false ) {
|
1030 |
+
?>
|
1031 |
+
<div class="metabox-holder<?php if ( $group ) echo ' group'; ?>" id="<?php echo $id; ?>">
|
1032 |
+
<div class="postbox">
|
1033 |
+
<h3><?php echo $title; ?></h3>
|
1034 |
+
<div class="inside"><?php echo $content; ?></div>
|
1035 |
+
</div>
|
1036 |
+
</div>
|
1037 |
+
<?php
|
1038 |
+
}
|
1039 |
+
|
1040 |
+
/**
|
1041 |
+
* Fetch RSS items from the feed.
|
1042 |
+
*
|
1043 |
+
* @param int $num Number of items to fetch.
|
1044 |
+
* @param string $feed The feed to fetch.
|
1045 |
+
* @return array|bool False on error, array of RSS items on success.
|
1046 |
+
*/
|
1047 |
+
public function fetch_rss_items( $num, $feed ) {
|
1048 |
+
if ( !function_exists( 'fetch_feed' ) )
|
1049 |
+
include_once( ABSPATH . WPINC . '/feed.php' );
|
1050 |
+
|
1051 |
+
$rss = fetch_feed( $feed );
|
1052 |
+
|
1053 |
+
// Bail if feed doesn't work
|
1054 |
+
if ( !$rss || is_wp_error( $rss ) )
|
1055 |
+
return false;
|
1056 |
+
|
1057 |
+
$rss_items = $rss->get_items( 0, $rss->get_item_quantity( $num ) );
|
1058 |
+
|
1059 |
+
// If the feed was erroneous
|
1060 |
+
if ( !$rss_items ) {
|
1061 |
+
$md5 = md5( $feed );
|
1062 |
+
delete_transient( 'feed_' . $md5 );
|
1063 |
+
delete_transient( 'feed_mod_' . $md5 );
|
1064 |
+
$rss = fetch_feed( $feed );
|
1065 |
+
$rss_items = $rss->get_items( 0, $rss->get_item_quantity( $num ) );
|
1066 |
+
}
|
1067 |
+
|
1068 |
+
return $rss_items;
|
1069 |
+
}
|
1070 |
+
|
1071 |
+
/**
|
1072 |
+
* Box with latest plugins from Extendd.com for sidebar
|
1073 |
+
*/
|
1074 |
+
function extendd_plugins_sidebar( $args ) {
|
1075 |
+
|
1076 |
+
$defaults = array(
|
1077 |
+
'items' => 6,
|
1078 |
+
'feed' => 'https://extendd.com/feed/?post_type=download',
|
1079 |
+
);
|
1080 |
+
|
1081 |
+
$args = wp_parse_args( $args, $defaults );
|
1082 |
+
|
1083 |
+
$rss_items = $this->fetch_rss_items( $args['items'], $args['feed'] );
|
1084 |
+
|
1085 |
+
$content = '<ul>';
|
1086 |
+
if ( !$rss_items ) {
|
1087 |
+
$content .= '<li>' . __( 'Error fetching feed', $this->domain ) . '</li>';
|
1088 |
+
} else {
|
1089 |
+
foreach ( $rss_items as $item ) {
|
1090 |
+
$url = preg_replace( '/#.*/', '', esc_url( $item->get_permalink(), null, 'display' ) );
|
1091 |
+
$content .= '<li>';
|
1092 |
+
$content .= '<a class="rsswidget" href="' . $url . '#utm_source=wpadmin&utm_medium=sidebarwidget&utm_term=newsitem&utm_campaign=' . $this->prefix . 'settingsapi">' . esc_html( $item->get_title() ) . '</a> ';
|
1093 |
+
$content .= '</li>';
|
1094 |
+
}
|
1095 |
+
}
|
1096 |
+
$content .= '</ul>';
|
1097 |
+
$content .= '<ul class="social">';
|
1098 |
+
$content .= '<li class="facebook"><span class="genericon genericon-facebook"></span><a href="https://www.facebook.com/WPExtendd">' . __( 'Like Extendd on Facebook', $this->domain ) . '</a></li>';
|
1099 |
+
$content .= '<li class="twitter"><span class="genericon genericon-twitter"></span><a href="https://twitter.com/WPExtendd">' . __( 'Follow Extendd on Twitter', $this->domain ) . '</a></li>';
|
1100 |
+
$content .= '<li class="twitter"><span class="genericon genericon-twitter"></span><a href="http://twitter.com/TheFrosty">' . __( 'Follow Austin on Twitter', $this->domain ) . '</a></li>';
|
1101 |
+
$content .= '<li class="googleplus"><span class="genericon genericon-googleplus"></span><a href="https://plus.google.com/113609352601311785002/">' . __( 'Circle Extendd on Google+', $this->domain ) . '</a></li>';
|
1102 |
+
$content .= '<li class="email"><span class="genericons genericons-mail"></span><a href="http://eepurl.com/vi0bz">' . __( 'Subscribe via email', $this->domain ) . '</a></li>';
|
1103 |
+
|
1104 |
+
$content .= '</ul>';
|
1105 |
+
$this->postbox( 'extenddlatest', __( 'Latest plugins from Extendd.com', $this->domain ), $content );
|
1106 |
+
}
|
1107 |
+
|
1108 |
+
}
|
1109 |
+
endif;
|
1110 |
+
|
1111 |
+
/**
|
1112 |
+
* The main function responsible for returning the one true
|
1113 |
+
* Instance to functions everywhere.
|
1114 |
+
*
|
1115 |
+
* Use this function like you would a global variable, except without needing
|
1116 |
+
* to declare the global.
|
1117 |
+
*
|
1118 |
+
* Example: <?php $custom_login = CUSTOMLOGIN(); ?>
|
1119 |
+
*
|
1120 |
+
* @return The one true Instance
|
1121 |
+
*/
|
1122 |
+
if ( !function_exists( 'EXTENDD_PLUGIN_SETTINGS_API' ) ) {
|
1123 |
+
function EXTENDD_PLUGIN_SETTINGS_API() {
|
1124 |
+
return Extendd_Plugin_Settings_API::instance();
|
1125 |
+
}
|
1126 |
+
}
|
classes/edd-remote-install-client/EDD_Remote_Install_Client.php
ADDED
@@ -0,0 +1,395 @@
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
1 |
+
<?php
|
2 |
+
|
3 |
+
/**
|
4 |
+
* Allows plugins to install new plugins or upgrades
|
5 |
+
*
|
6 |
+
* @author Mindshare Studios, Inc.
|
7 |
+
* @version 1.7.2 (FROSTY HACK)
|
8 |
+
*/
|
9 |
+
|
10 |
+
class Extendd_Remote_Install_Client {
|
11 |
+
private $api_url = '';
|
12 |
+
private $options = array(
|
13 |
+
'skipplugincheck' => false
|
14 |
+
);
|
15 |
+
|
16 |
+
/**
|
17 |
+
* Class constructor.
|
18 |
+
*
|
19 |
+
*
|
20 |
+
* @param string $_api_url The URL pointing to the custom API endpoint.
|
21 |
+
* @param string $_plugin_file Path to the plugin file.
|
22 |
+
* @param array $_api_data Optional data to send with API calls.
|
23 |
+
* @return void
|
24 |
+
*/
|
25 |
+
function __construct( $_api_url, $page, $options = array() ) {
|
26 |
+
$this->api_url = trailingslashit( $_api_url );
|
27 |
+
|
28 |
+
if(isset($options['skipplugincheck']) && $options['skipplugincheck'] == true) {
|
29 |
+
$this->options['skipplugincheck'] = true;
|
30 |
+
}
|
31 |
+
|
32 |
+
$options['page'] = $page;
|
33 |
+
$this->options = $options;
|
34 |
+
|
35 |
+
add_action( 'load-' . $page, array($this, 'register_scripts' ));
|
36 |
+
|
37 |
+
add_action('wp_ajax_edd-activate-plugin-' . $page, array($this, 'activate_plugin'));
|
38 |
+
add_action('wp_ajax_edd-deactivate-plugin-' . $page, array($this, 'deactivate_plugin'));
|
39 |
+
add_action('wp_ajax_edd-check-plugin-status-' . $page, array($this, 'check_plugin_status'));
|
40 |
+
add_action('wp_ajax_edd-check-remote-install-' . $page, array($this, 'check_remote_install'));
|
41 |
+
add_action('wp_ajax_edd-do-remote-install-' . $page, array($this, 'do_remote_install'));
|
42 |
+
|
43 |
+
add_action('wp_ajax_edd-do-manual-install-' . $page, array($this, 'do_manual_install'));
|
44 |
+
add_action( 'plugins_api', array($this, 'plugins_api'), 100, 3 );
|
45 |
+
|
46 |
+
add_action('eddri-install-complete-' . $page, array($this, 'install_complete'), 0, 1);
|
47 |
+
}
|
48 |
+
|
49 |
+
/**
|
50 |
+
* Try to convert plugin name to slug
|
51 |
+
*
|
52 |
+
* @param $str Download name
|
53 |
+
* @return $str Slug
|
54 |
+
*/
|
55 |
+
|
56 |
+
private function slug($str) {
|
57 |
+
$str = strtolower( $str );
|
58 |
+
$str = preg_replace("/[\s_]/", "-", $str);
|
59 |
+
|
60 |
+
return $str;
|
61 |
+
}
|
62 |
+
|
63 |
+
/**
|
64 |
+
* Register scripts and styles
|
65 |
+
*
|
66 |
+
* @return void
|
67 |
+
*/
|
68 |
+
|
69 |
+
public function register_scripts() {
|
70 |
+
wp_enqueue_script('edd-remote-install-script', plugin_dir_url( __FILE__ ) . '/js/edd-remote-install-admin.js', array('jquery'));
|
71 |
+
wp_enqueue_style('edd-remote-install-style', plugin_dir_url( __FILE__ ) . '/css/edd-remote-install-admin.css');
|
72 |
+
|
73 |
+
wp_localize_script( 'edd-remote-install-script', 'edd_ri_options', $this->options );
|
74 |
+
}
|
75 |
+
|
76 |
+
/**
|
77 |
+
* Do manual install
|
78 |
+
*
|
79 |
+
* If a plugin was unable to be installed automatically, generate an install URL and redirect to the plugins API
|
80 |
+
*
|
81 |
+
* @param string $_POST['download'] Download requested
|
82 |
+
* @param string $_POST['license'] License key
|
83 |
+
* @return string $url
|
84 |
+
*/
|
85 |
+
|
86 |
+
public function do_manual_install() {
|
87 |
+
|
88 |
+
$download_name = urlencode($_POST['download']);
|
89 |
+
$download_slug = $this->slug($_POST['download']);
|
90 |
+
|
91 |
+
$license = '';
|
92 |
+
if(isset($_POST['license']))
|
93 |
+
$license = $_POST['license'];
|
94 |
+
|
95 |
+
$nonce = wp_create_nonce('install-plugin_' . $download_slug);
|
96 |
+
|
97 |
+
$url = admin_url('update.php?action=install-plugin&plugin=' . $download_slug . '&name=' . $download_name . '&license=' . $license . '&_wpnonce=' . $nonce . '&eddri=' . $this->options['page']);
|
98 |
+
|
99 |
+
die($url);
|
100 |
+
|
101 |
+
}
|
102 |
+
|
103 |
+
/**
|
104 |
+
* Plugins API
|
105 |
+
*
|
106 |
+
* Overrides the plugins API parameters for download URLs originated by EDDRI
|
107 |
+
*
|
108 |
+
* @param string $_GET['eddri'] EDDRI page that originated the request
|
109 |
+
* @param string $_GET['license'] License key
|
110 |
+
* @param string $_GET['name'] Name of the plugin requested
|
111 |
+
* @return obj $api
|
112 |
+
*/
|
113 |
+
|
114 |
+
public function plugins_api($api, $action, $args) {
|
115 |
+
|
116 |
+
if($action = 'plugin_information') {
|
117 |
+
|
118 |
+
if(isset($_GET['eddri']) && $_GET['eddri'] == $this->options['page']) {
|
119 |
+
|
120 |
+
$api_params = array(
|
121 |
+
'edd_action' => 'get_download',
|
122 |
+
'item_name' => urlencode( $_GET['name'] ),
|
123 |
+
'license' => urlencode( $_GET['license'] )
|
124 |
+
);
|
125 |
+
|
126 |
+
$download_link = add_query_arg($api_params, $this->api_url);
|
127 |
+
|
128 |
+
///////////// NEW /////////////////
|
129 |
+
$download_id = $this->get_remote_download_id( $_GET['name'] );
|
130 |
+
$download_link = $this->get_encoded_download_package_url( $download_id, $_GET['license'] );
|
131 |
+
///////////// NEW /////////////////
|
132 |
+
|
133 |
+
$api = new stdClass();
|
134 |
+
$api->name = $args->slug;
|
135 |
+
$api->version = "";
|
136 |
+
$api->download_link = $download_link;
|
137 |
+
|
138 |
+
}
|
139 |
+
|
140 |
+
}
|
141 |
+
|
142 |
+
return $api;
|
143 |
+
|
144 |
+
}
|
145 |
+
|
146 |
+
/**
|
147 |
+
* Callback action that's fired when an install is completed successfully
|
148 |
+
*
|
149 |
+
* @param array $args Install complete arguments
|
150 |
+
* @return void
|
151 |
+
*/
|
152 |
+
|
153 |
+
public function install_complete($args) {
|
154 |
+
|
155 |
+
|
156 |
+
}
|
157 |
+
|
158 |
+
/**
|
159 |
+
* Check plugin status
|
160 |
+
*
|
161 |
+
* Checks to see if a plugin is currently installed and disables the install button if so
|
162 |
+
*
|
163 |
+
* @param string $_POST['download'] Download requested
|
164 |
+
* @return string $response
|
165 |
+
*/
|
166 |
+
|
167 |
+
public function check_plugin_status() {
|
168 |
+
|
169 |
+
$plugin = $this->slug($_POST['download']);
|
170 |
+
|
171 |
+
if (is_plugin_active($plugin . '/' . $plugin . '.php')) {
|
172 |
+
die("active");
|
173 |
+
} elseif (file_exists(WP_PLUGIN_DIR . '/' . $plugin . '/' . $plugin . '.php')) {
|
174 |
+
die("installed");
|
175 |
+
} {
|
176 |
+
die(false);
|
177 |
+
}
|
178 |
+
}
|
179 |
+
|
180 |
+
/**
|
181 |
+
* Check remote install
|
182 |
+
*
|
183 |
+
* Checks remote server for the specified Download
|
184 |
+
*
|
185 |
+
* @param string $_POST['download'] Download requested
|
186 |
+
* @return string $response
|
187 |
+
*/
|
188 |
+
|
189 |
+
public function check_remote_install() {
|
190 |
+
|
191 |
+
if ( ! current_user_can('install_plugins') )
|
192 |
+
die( 'You do not have sufficient permissions to install plugins on this site.' );
|
193 |
+
|
194 |
+
$api_params = array(
|
195 |
+
'edd_action' => 'check_download',
|
196 |
+
'item_name' => urlencode( $_POST['download'] )
|
197 |
+
);
|
198 |
+
|
199 |
+
$request = wp_remote_post( $this->api_url, array( 'timeout' => 15, 'sslverify' => false, 'body' => $api_params ) );
|
200 |
+
|
201 |
+
if ( ! is_wp_error( $request ) ):
|
202 |
+
$request = json_decode( wp_remote_retrieve_body( $request ) );
|
203 |
+
$request = maybe_unserialize( $request );
|
204 |
+
|
205 |
+
if($request->download == "free") {
|
206 |
+
|
207 |
+
$response = "0";
|
208 |
+
|
209 |
+
} else if ($request->download == "not-free") {
|
210 |
+
|
211 |
+
$response = "1";
|
212 |
+
|
213 |
+
} else {
|
214 |
+
|
215 |
+
$response = "does not exist";
|
216 |
+
|
217 |
+
}
|
218 |
+
|
219 |
+
else:
|
220 |
+
|
221 |
+
$response = "Error occurred while trying to reach remote server. Please try again or contact support.";
|
222 |
+
|
223 |
+
endif;
|
224 |
+
|
225 |
+
die(json_encode($response));
|
226 |
+
}
|
227 |
+
|
228 |
+
/**
|
229 |
+
* Activate plugin
|
230 |
+
*
|
231 |
+
* Attemps to activate a plugin which is installed and inactive. Triggered by user clicking "Activate".
|
232 |
+
*
|
233 |
+
* @param string $_POST['download'] Download requested
|
234 |
+
* @return response
|
235 |
+
*/
|
236 |
+
|
237 |
+
public function activate_plugin() {
|
238 |
+
|
239 |
+
$slug = $this->slug($_POST['download']);
|
240 |
+
$path = WP_PLUGIN_DIR . "/" . $slug . "/" . $slug . ".php";
|
241 |
+
activate_plugin( $path );
|
242 |
+
|
243 |
+
if(is_plugin_active( $slug . '/' . $slug . '.php' )) {
|
244 |
+
die('activated');
|
245 |
+
} else {
|
246 |
+
die('error');
|
247 |
+
}
|
248 |
+
|
249 |
+
}
|
250 |
+
|
251 |
+
/**
|
252 |
+
* Deactivate plugin
|
253 |
+
*
|
254 |
+
* Attemps to deactivate a plugin. Triggered by user clicking "Deactivate".
|
255 |
+
*
|
256 |
+
* @param string $_POST['download'] Download requested
|
257 |
+
* @return response
|
258 |
+
*/
|
259 |
+
|
260 |
+
public function deactivate_plugin() {
|
261 |
+
|
262 |
+
$slug = $this->slug($_POST['download']);
|
263 |
+
$path = WP_PLUGIN_DIR . "/" . $slug . "/" . $slug . ".php";
|
264 |
+
deactivate_plugins( $path );
|
265 |
+
|
266 |
+
if(!is_plugin_active( $slug . '/' . $slug . '.php' )) {
|
267 |
+
die('deactivated');
|
268 |
+
} else {
|
269 |
+
die('error');
|
270 |
+
}
|
271 |
+
|
272 |
+
}
|
273 |
+
|
274 |
+
/**
|
275 |
+
* Manual install
|
276 |
+
*
|
277 |
+
* Outputs full install log in cases where auto-install failed
|
278 |
+
*
|
279 |
+
* @param string $_POST['download'] Download requested
|
280 |
+
* @return response
|
281 |
+
*/
|
282 |
+
|
283 |
+
public function manual_install() {
|
284 |
+
|
285 |
+
echo "Hi";
|
286 |
+
|
287 |
+
}
|
288 |
+
|
289 |
+
/**
|
290 |
+
* Do remote install
|
291 |
+
*
|
292 |
+
* Passes the download and license key (if specified) to the server and receives and installs the plugin package
|
293 |
+
*
|
294 |
+
* @param string $_POST['license'] License key (if specified)
|
295 |
+
* @param string $_POST['download'] Download requested
|
296 |
+
* @return response
|
297 |
+
*/
|
298 |
+
|
299 |
+
public function do_remote_install() {
|
300 |
+
|
301 |
+
if ( ! current_user_can('install_plugins') )
|
302 |
+
wp_die( 'You do not have sufficient permissions to install plugins on this site.' );
|
303 |
+
|
304 |
+
$download = $_POST['download'];
|
305 |
+
|
306 |
+
if(isset($_POST['license'])) {
|
307 |
+
$license = $_POST['license'];
|
308 |
+
|
309 |
+
$api_params = array(
|
310 |
+
'edd_action'=> 'activate_license',
|
311 |
+
'license' => $license,
|
312 |
+
'item_name' => urlencode( $download ) // the name of our product in EDD
|
313 |
+
);
|
314 |
+
|
315 |
+
// Call the custom API.
|
316 |
+
$response = wp_remote_get( add_query_arg( $api_params, $this->api_url ), array( 'timeout' => 15, 'sslverify' => false ) );
|
317 |
+
|
318 |
+
// make sure the response came back okay
|
319 |
+
if ( is_wp_error( $response ) )
|
320 |
+
return false;
|
321 |
+
|
322 |
+
// decode the license data
|
323 |
+
$license_data = json_decode( wp_remote_retrieve_body( $response ) );
|
324 |
+
|
325 |
+
if($license_data->license != "valid")
|
326 |
+
die("invalid");
|
327 |
+
|
328 |
+
} else {
|
329 |
+
|
330 |
+
// If its a free download, don't send a license
|
331 |
+
$license = null;
|
332 |
+
|
333 |
+
}
|
334 |
+
|
335 |
+
$api_params = array(
|
336 |
+
'edd_action' => 'get_download',
|
337 |
+
'item_name' => urlencode( $download ),
|
338 |
+
'license' => urlencode( $license )
|
339 |
+
);
|
340 |
+
|
341 |
+
//$download_link = add_query_arg($api_params, $this->api_url);
|
342 |
+
|
343 |
+
// decode the license data
|
344 |
+
$download_id = $this->get_remote_download_id( $download );
|
345 |
+
|
346 |
+
$download_link = $this->get_encoded_download_package_url( $download_id, $license );
|
347 |
+
//var_dump( $download_link ); exit;
|
348 |
+
|
349 |
+
include_once ABSPATH . 'wp-admin/includes/class-wp-upgrader.php'; //for plugins_api..
|
350 |
+
|
351 |
+
$upgrader = new Plugin_Upgrader();
|
352 |
+
|
353 |
+
$result = $upgrader->install($download_link);
|
354 |
+
|
355 |
+
if($result == 1) {
|
356 |
+
$slug = $this->slug($download);
|
357 |
+
$path = WP_PLUGIN_DIR . "/" . $slug . "/" . $slug . ".php";
|
358 |
+
$result = activate_plugin( $path );
|
359 |
+
|
360 |
+
$args['slug'] = $slug;
|
361 |
+
$args['license'] = $license;
|
362 |
+
do_action('eddri-install-complete-' . $this->options['page'], $args);
|
363 |
+
}
|
364 |
+
|
365 |
+
die();
|
366 |
+
}
|
367 |
+
|
368 |
+
private function get_remote_download_id( $download_title, $download_id = null ) {
|
369 |
+
|
370 |
+
$api_params = array(
|
371 |
+
'edd_action' => 'get_download_id',
|
372 |
+
'item_name' => urlencode( $download_title )
|
373 |
+
);
|
374 |
+
|
375 |
+
$response = wp_remote_get( add_query_arg( $api_params, $this->api_url ), array( 'timeout' => 15, 'sslverify' => false ) );
|
376 |
+
|
377 |
+
if ( !is_wp_error( $response ) )
|
378 |
+
$download_id = json_decode( wp_remote_retrieve_body( $response ) );
|
379 |
+
|
380 |
+
return $download_id;
|
381 |
+
}
|
382 |
+
|
383 |
+
private function get_encoded_download_package_url( $download_id, $license ) {
|
384 |
+
|
385 |
+
$package_url = add_query_arg( array(
|
386 |
+
'edd_action' => 'package_download',
|
387 |
+
'id' => $download_id,
|
388 |
+
'key' => $license,
|
389 |
+
'expires' => rawurlencode( base64_encode( strtotime( '+1 hour' ) ) )
|
390 |
+
), $this->api_url );
|
391 |
+
|
392 |
+
return apply_filters( 'edd_sl_encoded_package_url', $package_url );
|
393 |
+
|
394 |
+
}
|
395 |
+
}
|
classes/edd-remote-install-client/css/edd-remote-install-admin.css
ADDED
@@ -0,0 +1,210 @@
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
1 |
+
.edd-remote-install{
|
2 |
+
display: inline-block;
|
3 |
+
font-size:14px;
|
4 |
+
color:#fff !important;
|
5 |
+
text-decoration: none !important;
|
6 |
+
padding:14px 60px;
|
7 |
+
line-height:1;
|
8 |
+
overflow: hidden;
|
9 |
+
position:relative;
|
10 |
+
|
11 |
+
box-shadow:0 1px 1px #ccc;
|
12 |
+
border-radius:2px;
|
13 |
+
|
14 |
+
background-color: #21759b;
|
15 |
+
background-image: -webkit-gradient(linear,left top,left bottom,from(#2a95c5),to(#21759b));
|
16 |
+
background-image: -webkit-linear-gradient(top,#2a95c5,#21759b);
|
17 |
+
background-image: -moz-linear-gradient(top,#2a95c5,#21759b);
|
18 |
+
background-image: -ms-linear-gradient(top,#2a95c5,#21759b);
|
19 |
+
background-image: -o-linear-gradient(top,#2a95c5,#21759b);
|
20 |
+
background-image: linear-gradient(to bottom,#2a95c5,#21759b);
|
21 |
+
border: 1px solid #21759b;
|
22 |
+
border-bottom-color: #1e6a8d;
|
23 |
+
border-radius: 3px;
|
24 |
+
-webkit-box-shadow: inset 0 1px 0 rgba(120,200,230,0.5);
|
25 |
+
box-shadow: inset 0 1px 0 rgba(120,200,230,0.5);
|
26 |
+
text-decoration: none;
|
27 |
+
text-shadow: 0 1px 0 rgba(0,0,0,0.1);
|
28 |
+
|
29 |
+
cursor: pointer;
|
30 |
+
|
31 |
+
}
|
32 |
+
|
33 |
+
.edd-remote-install.disabled {
|
34 |
+
pointer-events: none;
|
35 |
+
cursor: default;
|
36 |
+
background-color: #9c9c9c;
|
37 |
+
background-image: -webkit-gradient(linear,left top,left bottom,from(#c4c4c4),to(#9c9c9c));
|
38 |
+
background-image: -webkit-linear-gradient(top,#c4c4c4,#9c9c9c);
|
39 |
+
background-image: -moz-linear-gradient(top,#c4c4c4,#9c9c9c);
|
40 |
+
background-image: -ms-linear-gradient(top,#c4c4c4,#9c9c9c);
|
41 |
+
background-image: -o-linear-gradient(top,#c4c4c4,#9c9c9c);
|
42 |
+
background-image: linear-gradient(to bottom,#c4c4c4,#9c9c9c);
|
43 |
+
border: 1px solid #9c9c9c;
|
44 |
+
border-bottom-color: #8c8c8c;
|
45 |
+
box-shadow: inset 0 1px 0 rgba(0,0,0,0.2);
|
46 |
+
}
|
47 |
+
|
48 |
+
.eddri-addon {
|
49 |
+
vertical-align: top;
|
50 |
+
border: 1px solid #CCC;
|
51 |
+
-moz-box-shadow: 0 0 5px rgba(0,0,0,0.25);
|
52 |
+
-webkit-box-shadow: 0 0 5px rgba(0, 0, 0, 0.25);
|
53 |
+
box-shadow: 0 0 5px rgba(0, 0, 0, 0.25);
|
54 |
+
width: auto;
|
55 |
+
margin-bottom: 10px;
|
56 |
+
}
|
57 |
+
|
58 |
+
.eddri-addon .eddri-addon-container {
|
59 |
+
margin: 5px;
|
60 |
+
}
|
61 |
+
|
62 |
+
.eddri-addon .eddri-img-wrap {
|
63 |
+
border: 1px solid #efefef;
|
64 |
+
overflow: hidden;
|
65 |
+
position: relative;
|
66 |
+
}
|
67 |
+
.eddri-addon .eddri-img-wrap > p {
|
68 |
+
background: #fff;
|
69 |
+
bottom: 0;
|
70 |
+
margin: 0 0 -25px 0;
|
71 |
+
padding: 10px;
|
72 |
+
position: absolute;
|
73 |
+
opacity: 0.1;
|
74 |
+
|
75 |
+
-webkit-transition: all 0.15s linear;
|
76 |
+
-moz-transition: all 0.15s linear;
|
77 |
+
-o-transition: all 0.15s linear;
|
78 |
+
transition: all 0.15s linear;
|
79 |
+
}
|
80 |
+
.eddri-addon .eddri-img-wrap:hover > p {
|
81 |
+
margin: 0;
|
82 |
+
opacity: 0.98;
|
83 |
+
}
|
84 |
+
|
85 |
+
.eddri-addon .eddri-thumbnail {
|
86 |
+
width: 100%;
|
87 |
+
height: auto;
|
88 |
+
}
|
89 |
+
|
90 |
+
.eddri-addon a.button {
|
91 |
+
margin-top: 12px;
|
92 |
+
}
|
93 |
+
|
94 |
+
.eddri-addon span.eddri-status {
|
95 |
+
background-color: #EEE;
|
96 |
+
border: 1px solid #DADADA;
|
97 |
+
padding: 6px;
|
98 |
+
display: block;
|
99 |
+
position: relative;
|
100 |
+
font-weight: bold;
|
101 |
+
color: #424242;
|
102 |
+
-webkit-border-radius: 3px;
|
103 |
+
-moz-border-radius: 3px;
|
104 |
+
border-radius: 3px;
|
105 |
+
}
|
106 |
+
|
107 |
+
.eddri-addon span.eddri-status.eddri-inactive {
|
108 |
+
background-color: #FFFBCC;
|
109 |
+
border: 1px solid #E6DB55;
|
110 |
+
}
|
111 |
+
|
112 |
+
.eddri-addon span.eddri-status.eddri-active {
|
113 |
+
background-color: #CBECA0;
|
114 |
+
border: 1px solid #97B48A;
|
115 |
+
color: #2D5312;
|
116 |
+
}
|
117 |
+
|
118 |
+
.eddri-addon span.eddri-status.eddri-error {
|
119 |
+
color: #A94442;
|
120 |
+
background-color: #F2DEDE;
|
121 |
+
border: 1px solid #EBCCD1;
|
122 |
+
}
|
123 |
+
|
124 |
+
.eddri-status.in-progress {
|
125 |
+
cursor: progress;
|
126 |
+
background-color: #D9EDF7 !important;
|
127 |
+
}
|
128 |
+
|
129 |
+
.eddri-status.stopped {
|
130 |
+
cursor: pointer;
|
131 |
+
background-color: #D9EDF7 !important;
|
132 |
+
}
|
133 |
+
|
134 |
+
.eddri-status.success {
|
135 |
+
background-color: #D9EDF7 !important;
|
136 |
+
}
|
137 |
+
|
138 |
+
.eddri-status.failure {
|
139 |
+
|
140 |
+
}
|
141 |
+
/* Hide the original text of the button. Then the loading or finished
|
142 |
+
text will be shown in the :after element above it. */
|
143 |
+
|
144 |
+
.eddri-status.in-progress,
|
145 |
+
.eddri-status.finished{
|
146 |
+
color:transparent !important;
|
147 |
+
text-shadow: none;
|
148 |
+
}
|
149 |
+
|
150 |
+
.eddri-status.in-progress:after,
|
151 |
+
.eddri-status.finished:after{
|
152 |
+
position: absolute;
|
153 |
+
z-index: 2;
|
154 |
+
width: 100%;
|
155 |
+
height: 100%;
|
156 |
+
top: 6px;
|
157 |
+
left: 6px;
|
158 |
+
color: #424242;
|
159 |
+
}
|
160 |
+
|
161 |
+
/* If the .in-progress class is set on the button, show the
|
162 |
+
contents of the data-loading attribute on the butotn */
|
163 |
+
|
164 |
+
.eddri-status.in-progress:after{
|
165 |
+
content:attr(data-loading);
|
166 |
+
}
|
167 |
+
|
168 |
+
/* The same goes for the .finished class */
|
169 |
+
|
170 |
+
.eddri-status.finished:after{
|
171 |
+
content:attr(data-finished);
|
172 |
+
}
|
173 |
+
|
174 |
+
.eddri-status.eddri-error:after{
|
175 |
+
color: #A94442;
|
176 |
+
}
|
177 |
+
|
178 |
+
/* The colorful bar that grows depending on the progress */
|
179 |
+
|
180 |
+
.eddri-status .tz-bar{
|
181 |
+
background-color: #428BCA;
|
182 |
+
height:3px;
|
183 |
+
bottom:0;
|
184 |
+
left:0;
|
185 |
+
width:0;
|
186 |
+
position:absolute;
|
187 |
+
z-index:1;
|
188 |
+
|
189 |
+
border-radius:0 0 2px 2px;
|
190 |
+
|
191 |
+
-webkit-transition: width 0.5s, height 0.5s;
|
192 |
+
-moz-transition: width 0.5s, height 0.5s;
|
193 |
+
transition: width 0.5s, height 0.5s;
|
194 |
+
}
|
195 |
+
|
196 |
+
/* The bar can be either horizontal, or vertical */
|
197 |
+
|
198 |
+
.eddri-status .tz-bar.background-horizontal{
|
199 |
+
height:100%;
|
200 |
+
border-radius:2px;
|
201 |
+
}
|
202 |
+
|
203 |
+
#license-input {
|
204 |
+
display: block;
|
205 |
+
position: relative;
|
206 |
+
margin-top: 4px;
|
207 |
+
outline: none;
|
208 |
+
width: 100%;
|
209 |
+
line-height: 18px;
|
210 |
+
}
|
classes/edd-remote-install-client/js/edd-remote-install-admin.js
ADDED
@@ -0,0 +1,362 @@
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
1 |
+
jQuery(document).ready(function ($) {
|
2 |
+
|
3 |
+
if(edd_ri_options.skipplugincheck != true) {
|
4 |
+
|
5 |
+
$('a[data-edd-install]').each(function() {
|
6 |
+
|
7 |
+
var downloadButton = $(this);
|
8 |
+
|
9 |
+
var data = {
|
10 |
+
action: 'edd-check-plugin-status-' + edd_ri_options.page,
|
11 |
+
download: downloadButton.data('edd-install')
|
12 |
+
}
|
13 |
+
|
14 |
+
$.post(ajaxurl, data, function (res) {
|
15 |
+
|
16 |
+
if(res) {
|
17 |
+
if(res == 'installed') {
|
18 |
+
$(downloadButton).prev(".eddri-status").text("Inactive").addClass('eddri-inactive');
|
19 |
+
$(downloadButton).text('Activate');
|
20 |
+
}
|
21 |
+
if(res == 'active') {
|
22 |
+
$(downloadButton).prev(".eddri-status").text("Active").addClass('eddri-active');
|
23 |
+
$(downloadButton).text('Deactivate');
|
24 |
+
}
|
25 |
+
|
26 |
+
}
|
27 |
+
|
28 |
+
});
|
29 |
+
|
30 |
+
});
|
31 |
+
}
|
32 |
+
|
33 |
+
$('body').on('click', 'a[data-edd-install]', function (e) {
|
34 |
+
e.preventDefault();
|
35 |
+
|
36 |
+
var downloadButton = $(this);
|
37 |
+
var statusContainer = $(this).prev(".eddri-status");
|
38 |
+
|
39 |
+
if(downloadButton.text() == 'Activate') {
|
40 |
+
|
41 |
+
var data = {
|
42 |
+
action: 'edd-activate-plugin-' + edd_ri_options.page,
|
43 |
+
download: downloadButton.data('edd-install')
|
44 |
+
}
|
45 |
+
|
46 |
+
$.post(ajaxurl, data, function (res) {
|
47 |
+
|
48 |
+
if(res == 'activated') {
|
49 |
+
|
50 |
+
$(statusContainer).text("Active").addClass('eddri-active');
|
51 |
+
$(downloadButton).text('Deactivate');
|
52 |
+
|
53 |
+
} else {
|
54 |
+
|
55 |
+
$(statusContainer).addClass('eddri-error').text("Error activating. Try activating manually from the plugins screen.");
|
56 |
+
|
57 |
+
}
|
58 |
+
|
59 |
+
});
|
60 |
+
|
61 |
+
} else if(downloadButton.text() == 'Deactivate') {
|
62 |
+
|
63 |
+
var data = {
|
64 |
+
action: 'edd-deactivate-plugin-' + edd_ri_options.page,
|
65 |
+
download: downloadButton.data('edd-install')
|
66 |
+
}
|
67 |
+
|
68 |
+
$.post(ajaxurl, data, function (res) {
|
69 |
+
|
70 |
+
if(res == 'deactivated') {
|
71 |
+
|
72 |
+
$(statusContainer).text("Inactive").removeClass('eddri-active success finished').addClass('eddri-inactive');
|
73 |
+
$(downloadButton).text('Activate');
|
74 |
+
|
75 |
+
} else {
|
76 |
+
|
77 |
+
$(statusContainer).addClass('eddri-error').text("Error deactivating. Try deactivating manually from the plugins screen.");
|
78 |
+
|
79 |
+
}
|
80 |
+
|
81 |
+
});
|
82 |
+
|
83 |
+
} else {
|
84 |
+
|
85 |
+
var data = {
|
86 |
+
action: 'edd-check-remote-install-' + edd_ri_options.page,
|
87 |
+
download: downloadButton.data('edd-install')
|
88 |
+
}
|
89 |
+
|
90 |
+
statusContainer.progressInitialize()
|
91 |
+
.progressStart()
|
92 |
+
.attr({'data-loading': "Requesting package..."});
|
93 |
+
|
94 |
+
$.post(ajaxurl, data, function (res) {
|
95 |
+
res = $.parseJSON( res );
|
96 |
+
if (res == '0') {
|
97 |
+
// Free download found
|
98 |
+
|
99 |
+
var data = {
|
100 |
+
action: 'edd-do-remote-install-' + edd_ri_options.page,
|
101 |
+
download: downloadButton.data('edd-install')
|
102 |
+
};
|
103 |
+
|
104 |
+
statusContainer.progressSet(50)
|
105 |
+
.attr({'data-loading': "Found package. Installing..."});
|
106 |
+
|
107 |
+
$.post(ajaxurl, data, function (res) {
|
108 |
+
$(downloadButton).text('Deactivate');
|
109 |
+
return statusContainer.progressFinish(res, downloadButton);
|
110 |
+
});
|
111 |
+
|
112 |
+
} else if (res == '1') {
|
113 |
+
// License key required to continue
|
114 |
+
statusContainer.validateLicense(downloadButton);
|
115 |
+
} else {
|
116 |
+
|
117 |
+
return statusContainer.progressFinish(res, downloadButton);
|
118 |
+
}
|
119 |
+
|
120 |
+
});
|
121 |
+
}
|
122 |
+
});
|
123 |
+
|
124 |
+
// Progress meter functionality defined in jQuery plugins.
|
125 |
+
|
126 |
+
$.fn.validateLicense = function(downloadButton) {
|
127 |
+
var statusContainer = $(downloadButton).prev(".eddri-status");
|
128 |
+
var licenseInput;
|
129 |
+
|
130 |
+
// Pause auto-updating of progress bar and create license key input field
|
131 |
+
statusContainer.progressStop(40)
|
132 |
+
.attr({'data-loading': "Enter license key to continue:"})
|
133 |
+
.after("<input id='license-input' placeholder='License key'></input>")
|
134 |
+
.off('click')
|
135 |
+
.removeClass('success failure');
|
136 |
+
|
137 |
+
licenseInput = $('#license-input');
|
138 |
+
|
139 |
+
licenseInput.click(function() {
|
140 |
+
|
141 |
+
statusContainer.attr({'data-loading': "Click to proceed."})
|
142 |
+
|
143 |
+
statusContainer.click(function (e) {
|
144 |
+
e.stopPropagation();
|
145 |
+
validPost();
|
146 |
+
});
|
147 |
+
|
148 |
+
downloadButton.click(function (e) {
|
149 |
+
e.stopPropagation();
|
150 |
+
validPost();
|
151 |
+
});
|
152 |
+
|
153 |
+
$(document).keypress(function (e) {
|
154 |
+
if(e.which == 13) {
|
155 |
+
e.preventDefault();
|
156 |
+
validPost();
|
157 |
+
}
|
158 |
+
});
|
159 |
+
|
160 |
+
function validPost() {
|
161 |
+
var license = licenseInput.val();
|
162 |
+
if (!license) return false;
|
163 |
+
|
164 |
+
var data = {
|
165 |
+
action: 'edd-do-remote-install-' + edd_ri_options.page,
|
166 |
+
download: downloadButton.data('edd-install'),
|
167 |
+
license: license,
|
168 |
+
url: edd_ri_options.url
|
169 |
+
}
|
170 |
+
|
171 |
+
licenseInput.remove();
|
172 |
+
|
173 |
+
statusContainer.progressStart().progressSet(50)
|
174 |
+
.attr({'data-loading': "Validating license..."});
|
175 |
+
|
176 |
+
$.post(ajaxurl, data, function (res) {
|
177 |
+
statusContainer.progressFinish(res, downloadButton, license);
|
178 |
+
});
|
179 |
+
};
|
180 |
+
});
|
181 |
+
}
|
182 |
+
|
183 |
+
$.fn.progressInitialize = function() {
|
184 |
+
var button = this;
|
185 |
+
var progress = 0;
|
186 |
+
|
187 |
+
// Add markup for the progress bar.
|
188 |
+
var bar = $('<span class="tz-bar background-horizontal">').appendTo(button);
|
189 |
+
|
190 |
+
button.on('progress', function (e, val, absolute, finished) {
|
191 |
+
var finished = finished;
|
192 |
+
|
193 |
+
// Make sure button has `in-progress` class when initialized.
|
194 |
+
// And that local var `progress` = 0 to start.
|
195 |
+
// Then show the progress bar.
|
196 |
+
if (!button.hasClass('in-progress')) {
|
197 |
+
button.removeClass('finished').addClass('in-progress');
|
198 |
+
progress = 0;
|
199 |
+
bar.show();
|
200 |
+
}
|
201 |
+
|
202 |
+
if (absolute) {
|
203 |
+
progress = val;
|
204 |
+
} else if (progress >= 100) {
|
205 |
+
progress = 100;
|
206 |
+
finished = true;
|
207 |
+
} else {
|
208 |
+
progress += val;
|
209 |
+
}
|
210 |
+
|
211 |
+
if (finished) {
|
212 |
+
button.removeClass('in-progress').addClass('finished');
|
213 |
+
|
214 |
+
bar.delay(500).fadeOut(function() {
|
215 |
+
button.trigger('progress-finish');
|
216 |
+
setProgress(0);
|
217 |
+
});
|
218 |
+
}
|
219 |
+
|
220 |
+
setProgress(progress);
|
221 |
+
});
|
222 |
+
|
223 |
+
function setProgress (percentage) {
|
224 |
+
bar.filter('.background-horizontal,.background-bar').width(percentage+'%');
|
225 |
+
bar.filter('.background-vertical').height(percentage+'%');
|
226 |
+
}
|
227 |
+
|
228 |
+
return button;
|
229 |
+
};
|
230 |
+
|
231 |
+
$.fn.progressStart = function() {
|
232 |
+
var button = this;
|
233 |
+
var last_progress = new Date().getTime();
|
234 |
+
|
235 |
+
if (button.hasClass('in-progress')) {
|
236 |
+
// Don't start it a second time!
|
237 |
+
return button;
|
238 |
+
}
|
239 |
+
|
240 |
+
button.on('progress', function() {
|
241 |
+
last_progress = new Date().getTime();
|
242 |
+
});
|
243 |
+
|
244 |
+
// Every half a second check whether the progress
|
245 |
+
// has been incremented in the last two seconds
|
246 |
+
|
247 |
+
var interval = window.setInterval(function() {
|
248 |
+
|
249 |
+
// Check every half-second to see whether
|
250 |
+
// progress has incremented in past 2 seconds.
|
251 |
+
if ( new Date().getTime() > 2000+last_progress && !button.hasClass('stopped')) {
|
252 |
+
|
253 |
+
// There has been no activity for 2s. Increment the progress
|
254 |
+
// bar a little bit to show that something is happening.
|
255 |
+
button.progressIncrement(5);
|
256 |
+
}
|
257 |
+
|
258 |
+
}, 500);
|
259 |
+
|
260 |
+
button.on('progress-finish', function() {
|
261 |
+
window.clearInterval(interval);
|
262 |
+
}).progressIncrement(10);
|
263 |
+
return button;
|
264 |
+
};
|
265 |
+
|
266 |
+
$.fn.progressSet = function (val) {
|
267 |
+
var button = this;
|
268 |
+
var finished = false;
|
269 |
+
val = val || 10;
|
270 |
+
|
271 |
+
if (button.hasClass('stopped')) {
|
272 |
+
button.removeClass('stopped');
|
273 |
+
}
|
274 |
+
|
275 |
+
if (val >= 100) {
|
276 |
+
finished = true;
|
277 |
+
}
|
278 |
+
|
279 |
+
button.trigger('progress', [val, true, finished]);
|
280 |
+
return button;
|
281 |
+
};
|
282 |
+
|
283 |
+
$.fn.progressIncrement = function (val) {
|
284 |
+
var button = this;
|
285 |
+
val = val || 10;
|
286 |
+
button.trigger('progress', [val]);
|
287 |
+
return button;
|
288 |
+
};
|
289 |
+
|
290 |
+
$.fn.progressStop = function (val) {
|
291 |
+
var button = this;
|
292 |
+
button.progressSet(val).addClass('stopped');
|
293 |
+
return button;
|
294 |
+
};
|
295 |
+
|
296 |
+
$.fn.progressFinish = function (res, downloadButton, license) {
|
297 |
+
// alert(res);
|
298 |
+
|
299 |
+
var statusContainer = $(downloadButton).prev(".eddri-status");
|
300 |
+
|
301 |
+
statusContainer.progressSet(100);
|
302 |
+
|
303 |
+
if (res === 'invalid') {
|
304 |
+
statusContainer.attr({'data-finished': "Invalid License"});
|
305 |
+
|
306 |
+
setTimeout(function() {
|
307 |
+
statusContainer.validateLicense(downloadButton);
|
308 |
+
}, 1200);
|
309 |
+
|
310 |
+
} else if (res.search('error') > 0) {
|
311 |
+
|
312 |
+
// If there was an unknown error, try to run the install manually
|
313 |
+
|
314 |
+
statusContainer.attr({'data-finished': "Unknown error. Redirecting..."})
|
315 |
+
.addClass('eddri-error');
|
316 |
+
|
317 |
+
var data = {
|
318 |
+
action: 'edd-do-manual-install-' + edd_ri_options.page,
|
319 |
+
download: downloadButton.data('edd-install'),
|
320 |
+
license: license
|
321 |
+
}
|
322 |
+
|
323 |
+
$.post(ajaxurl, data, function (res) {
|
324 |
+
window.location.href = res;
|
325 |
+
});
|
326 |
+
|
327 |
+
} else if (res.search('already exists') > 0) {
|
328 |
+
statusContainer.attr({'data-finished': "Error: Already installed"})
|
329 |
+
.addClass('eddri-error');
|
330 |
+
|
331 |
+
} else if (res.search('not exist') > 0) {
|
332 |
+
statusContainer.attr({'data-finished': "Error: Plugin file does not exist."})
|
333 |
+
.addClass('eddri-error');
|
334 |
+
|
335 |
+
} else if (res.search('installed successfully') > 0) {
|
336 |
+
statusContainer.attr({'data-finished': "Success!"})
|
337 |
+
.addClass('success');
|
338 |
+
$(downloadButton).text('Deactivate');
|
339 |
+
|
340 |
+
} else {
|
341 |
+
|
342 |
+
// If there was an unknown error, try to run the install manually
|
343 |
+
|
344 |
+
statusContainer.attr({'data-finished': "Unknown error. Redirecting..."})
|
345 |
+
.addClass('eddri-error');
|
346 |
+
|
347 |
+
var data = {
|
348 |
+
action: 'edd-do-manual-install-' + edd_ri_options.page,
|
349 |
+
download: downloadButton.data('edd-install'),
|
350 |
+
license: license
|
351 |
+
}
|
352 |
+
|
353 |
+
$.post(ajaxurl, data, function (res) {
|
354 |
+
window.location.href = res;
|
355 |
+
});
|
356 |
+
|
357 |
+
}
|
358 |
+
|
359 |
+
return statusContainer;
|
360 |
+
};
|
361 |
+
|
362 |
+
});
|
classes/scripts-styles.php
ADDED
@@ -0,0 +1,173 @@
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
1 |
+
<?php
|
2 |
+
|
3 |
+
/**
|
4 |
+
* Weclome Page Class
|
5 |
+
*
|
6 |
+
* @package Custom Login
|
7 |
+
* @subpackage Welcome Page
|
8 |
+
* @copyright Copyright (c) 2013, Austin Passy
|
9 |
+
* @license http://opensource.org/licenses/gpl-2.0.php GNU Public License
|
10 |
+
* @since 2.0
|
11 |
+
*/
|
12 |
+
|
13 |
+
// Exit if accessed directly
|
14 |
+
if ( ! defined( 'ABSPATH' ) ) exit;
|
15 |
+
|
16 |
+
/**
|
17 |
+
* Custom Login Welcome Page Class
|
18 |
+
*
|
19 |
+
* A general class for About and Credits page.
|
20 |
+
*
|
21 |
+
* @access public
|
22 |
+
* @since 2.0
|
23 |
+
* @return void
|
24 |
+
*/
|
25 |
+
class Custom_Login_Scripts_Styles {
|
26 |
+
|
27 |
+
/** Singleton *************************************************************/
|
28 |
+
private static $instance;
|
29 |
+
|
30 |
+
/**
|
31 |
+
* Main Instance
|
32 |
+
*
|
33 |
+
* @staticvar array $instance
|
34 |
+
* @return The one true instance
|
35 |
+
*/
|
36 |
+
public static function instance() {
|
37 |
+
if ( ! isset( self::$instance ) ) {
|
38 |
+
self::$instance = new self;
|
39 |
+
}
|
40 |
+
return self::$instance;
|
41 |
+
}
|
42 |
+
|
43 |
+
/**
|
44 |
+
* Helper function to convert HEX to RGB
|
45 |
+
*
|
46 |
+
* @ref http://css-tricks.com/snippets/php/convert-hex-to-rgb/#comment-355641
|
47 |
+
* @return array
|
48 |
+
*/
|
49 |
+
public function hex2rgb( $color ) {
|
50 |
+
if ( $color[0] == '#' ) {
|
51 |
+
$color = substr( $color, 1 );
|
52 |
+
}
|
53 |
+
if ( strlen( $color ) == 6 ) {
|
54 |
+
list( $r, $g, $b ) = array( $color[0] . $color[1], $color[2] . $color[3], $color[4] . $color[5] );
|
55 |
+
} elseif ( strlen( $color ) == 3 ) {
|
56 |
+
list( $r, $g, $b ) = array( $color[0] . $color[0], $color[1] . $color[1], $color[2] . $color[2] );
|
57 |
+
} else {
|
58 |
+
return false;
|
59 |
+
}
|
60 |
+
$r = hexdec( $r );
|
61 |
+
$g = hexdec( $g );
|
62 |
+
$b = hexdec( $b );
|
63 |
+
return array( 'red' => $r, 'green' => $g, 'blue' => $b );
|
64 |
+
}
|
65 |
+
|
66 |
+
/**
|
67 |
+
* Helper function to convert RGB to HEX
|
68 |
+
*
|
69 |
+
* @ref http://bavotasan.com/2011/convert-hex-color-to-rgb-using-php/
|
70 |
+
* @return string
|
71 |
+
*/
|
72 |
+
public function rgb2hex( $rgb ) {
|
73 |
+
$hex = "#";
|
74 |
+
$hex .= str_pad( dechex( $rgb[0] ), 2, "0", STR_PAD_LEFT );
|
75 |
+
$hex .= str_pad( dechex( $rgb[1] ), 2, "0", STR_PAD_LEFT );
|
76 |
+
$hex .= str_pad( dechex( $rgb[2] ), 2, "0", STR_PAD_LEFT );
|
77 |
+
|
78 |
+
return $hex; // returns the hex value including the number sign (#)
|
79 |
+
}
|
80 |
+
|
81 |
+
/**
|
82 |
+
* Helper function to convert RGBA to HEX
|
83 |
+
*
|
84 |
+
* @ref http://stackoverflow.com/questions/5798129/regular-expression-to-only-allow-whole-numbers-and-commas-in-a-string
|
85 |
+
* @return string
|
86 |
+
*/
|
87 |
+
public function rgba2hex( $rgba ) {
|
88 |
+
// $rgba = str_replace( array( 'rgb', 'rgba', '(', ')' ), '', $rgba );
|
89 |
+
$rgba = preg_replace(
|
90 |
+
array(
|
91 |
+
'/[^\d,]/', // Matches anything that's not a comma or number.
|
92 |
+
'/(?<=,),+/', // Matches consecutive commas.
|
93 |
+
'/^,+/', // Matches leading commas.
|
94 |
+
'/,+$/' // Matches trailing commas.
|
95 |
+
), '', $rgba );
|
96 |
+
$rgba = explode( ',', $rgba );
|
97 |
+
|
98 |
+
$hex = "#";
|
99 |
+
$hex .= str_pad( dechex( $rgba[0] ), 2, "0", STR_PAD_LEFT );
|
100 |
+
$hex .= str_pad( dechex( $rgba[1] ), 2, "0", STR_PAD_LEFT );
|
101 |
+
$hex .= str_pad( dechex( $rgba[2] ), 2, "0", STR_PAD_LEFT );
|
102 |
+
|
103 |
+
return $hex; // returns the hex value including the number sign (#)
|
104 |
+
}
|
105 |
+
|
106 |
+
/**
|
107 |
+
* Helper function to convert RGB(A) to array
|
108 |
+
*
|
109 |
+
* @return bool
|
110 |
+
*/
|
111 |
+
public function is_rgba( $str ) {
|
112 |
+
$is_rgba = strpos( $str, 'rgba' );
|
113 |
+
|
114 |
+
if ( false === $is_rgba )
|
115 |
+
return false;
|
116 |
+
|
117 |
+
return true;
|
118 |
+
}
|
119 |
+
|
120 |
+
/**
|
121 |
+
* Browser prefixes
|
122 |
+
*
|
123 |
+
* @since 1.1 (1/8/13)
|
124 |
+
*/
|
125 |
+
public function prefixit( $input, $option ) {
|
126 |
+
$prefixs = array( '-webkit-', '-moz-', '-ms-', '-o-', '' );
|
127 |
+
|
128 |
+
$output = "\n\t";
|
129 |
+
|
130 |
+
foreach ( $prefixs as $prefix ) {
|
131 |
+
$output .= $this->trailingsemicolonit( $prefix . $input . ': ' . esc_attr( $option ) );
|
132 |
+
}
|
133 |
+
|
134 |
+
return $output;
|
135 |
+
}
|
136 |
+
|
137 |
+
/**
|
138 |
+
* Add a semi colon
|
139 |
+
*
|
140 |
+
* Remove esc_attr since it's encoding single quotes in image urls with quotes.
|
141 |
+
*
|
142 |
+
* @since 1.1 (1/8/13)
|
143 |
+
* @updated 1.1.1 (1/9/13)
|
144 |
+
*/
|
145 |
+
public function trailingsemicolonit( $input ) {
|
146 |
+
$output = rtrim( $input, ';' );
|
147 |
+
$output .= ';' . "\n\t";
|
148 |
+
|
149 |
+
return $output;
|
150 |
+
}
|
151 |
+
|
152 |
+
/**
|
153 |
+
* Open a new CSS rule
|
154 |
+
*
|
155 |
+
* @since 2.0
|
156 |
+
*/
|
157 |
+
public function cssrule( $rule ) {
|
158 |
+
$output = rtrim( $rule, '{' );
|
159 |
+
$output .= " {\n\t";
|
160 |
+
|
161 |
+
return $output;
|
162 |
+
}
|
163 |
+
|
164 |
+
}
|
165 |
+
|
166 |
+
/**
|
167 |
+
* Funky fresh.
|
168 |
+
*/
|
169 |
+
if ( !function_exists( 'CUSTOM_LOGIN_SCRIPT_STYLES' ) ) :
|
170 |
+
function CUSTOM_LOGIN_SCRIPT_STYLES() {
|
171 |
+
return Custom_Login_Scripts_Styles::instance();
|
172 |
+
}
|
173 |
+
endif;
|
classes/templates.php
ADDED
@@ -0,0 +1,112 @@
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
1 |
+
<?php
|
2 |
+
|
3 |
+
// Exit if accessed directly
|
4 |
+
if ( ! defined( 'ABSPATH' ) ) exit;
|
5 |
+
|
6 |
+
if ( !class_exists( 'Custom_Login_Templates' ) ) :
|
7 |
+
class Custom_Login_Templates {
|
8 |
+
|
9 |
+
/**
|
10 |
+
* Returns the path to the CL templates directory
|
11 |
+
*
|
12 |
+
* @access private
|
13 |
+
* @since 2.0
|
14 |
+
* @return string
|
15 |
+
*/
|
16 |
+
function get_templates_dir() {
|
17 |
+
return CUSTOM_LOGIN_DIR . 'templates';
|
18 |
+
}
|
19 |
+
|
20 |
+
/**
|
21 |
+
* Returns the URL to the CL templates directory
|
22 |
+
*
|
23 |
+
* @access private
|
24 |
+
* @since 2.0
|
25 |
+
* @return string
|
26 |
+
*/
|
27 |
+
function get_templates_url() {
|
28 |
+
return CUSTOM_LOGIN_URL . 'templates';
|
29 |
+
}
|
30 |
+
|
31 |
+
/**
|
32 |
+
* Retrieves a template part
|
33 |
+
*
|
34 |
+
* @since 2.0
|
35 |
+
*
|
36 |
+
* @param string $slug
|
37 |
+
* @param string $name Optional. Default null
|
38 |
+
*
|
39 |
+
* @uses custom_login_locate_template()
|
40 |
+
* @uses load_template()
|
41 |
+
* @uses get_template_part()
|
42 |
+
*/
|
43 |
+
function get_template_part( $slug, $name = null, $load = true ) {
|
44 |
+
// Execute code for this part
|
45 |
+
do_action( 'get_template_part_' . $slug, $slug, $name );
|
46 |
+
|
47 |
+
// Setup possible parts
|
48 |
+
$templates = array();
|
49 |
+
if ( isset( $name ) )
|
50 |
+
$templates[] = $slug . '-' . $name . '.php';
|
51 |
+
$templates[] = $slug . '.php';
|
52 |
+
|
53 |
+
// Allow template parst to be filtered
|
54 |
+
$templates = apply_filters( 'custom_login_get_template_part', $templates, $slug, $name );
|
55 |
+
|
56 |
+
// Return the part that is found
|
57 |
+
return self::locate_template( $templates, $load, false );
|
58 |
+
}
|
59 |
+
|
60 |
+
/**
|
61 |
+
* Retrieve the name of the highest priority template file that exists.
|
62 |
+
*
|
63 |
+
* Searches in the STYLESHEETPATH before TEMPLATEPATH so that themes which
|
64 |
+
* inherit from a parent theme can just overload one file. If the template is
|
65 |
+
* not found in either of those, it looks in the theme-compat folder last.
|
66 |
+
*
|
67 |
+
* @since 2.0
|
68 |
+
*
|
69 |
+
* @param string|array $template_names Template file(s) to search for, in order.
|
70 |
+
* @param bool $load If true the template file will be loaded if it is found.
|
71 |
+
* @param bool $require_once Whether to require_once or require. Default true.
|
72 |
+
* Has no effect if $load is false.
|
73 |
+
* @return string The template filename if one is located.
|
74 |
+
*/
|
75 |
+
function locate_template( $template_names, $load = false, $require_once = true ) {
|
76 |
+
// No file found yet
|
77 |
+
$located = false;
|
78 |
+
|
79 |
+
// Try to find a template file
|
80 |
+
foreach ( (array) $template_names as $template_name ) {
|
81 |
+
|
82 |
+
// Continue if template is empty
|
83 |
+
if ( empty( $template_name ) )
|
84 |
+
continue;
|
85 |
+
|
86 |
+
// Trim off any slashes from the template name
|
87 |
+
$template_name = ltrim( $template_name, '/' );
|
88 |
+
|
89 |
+
// Check child theme first
|
90 |
+
if ( file_exists( trailingslashit( get_stylesheet_directory() ) . 'custom_login_templates/' . $template_name ) ) {
|
91 |
+
$located = trailingslashit( get_stylesheet_directory() ) . 'custom_login_templates/' . $template_name;
|
92 |
+
break;
|
93 |
+
|
94 |
+
// Check parent theme next
|
95 |
+
} elseif ( file_exists( trailingslashit( get_template_directory() ) . 'custom_login_templates/' . $template_name ) ) {
|
96 |
+
$located = trailingslashit( get_template_directory() ) . 'custom_login_templates/' . $template_name;
|
97 |
+
break;
|
98 |
+
|
99 |
+
// Check plugin compatibility last
|
100 |
+
} elseif ( file_exists( trailingslashit( self::get_templates_dir() ) . $template_name ) ) {
|
101 |
+
$located = trailingslashit( self::get_templates_dir() ) . $template_name;
|
102 |
+
break;
|
103 |
+
}
|
104 |
+
}
|
105 |
+
|
106 |
+
if ( ( true == $load ) && ! empty( $located ) )
|
107 |
+
load_template( $located, $require_once );
|
108 |
+
|
109 |
+
return $located;
|
110 |
+
}
|
111 |
+
}
|
112 |
+
endif;
|
classes/welcome.php
ADDED
@@ -0,0 +1,193 @@
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Weclome Page Class
|
4 |
+
*
|
5 |
+
* @package Custom Login
|
6 |
+
* @subpackage Welcome Page
|
7 |
+
* @copyright Copyright (c) 2013, Austin Passy
|
8 |
+
* @license http://opensource.org/licenses/gpl-2.0.php GNU Public License
|
9 |
+
* @since 2.0
|
10 |
+
*/
|
11 |
+
|
12 |
+
// Exit if accessed directly
|
13 |
+
if ( ! defined( 'ABSPATH' ) ) exit;
|
14 |
+
|
15 |
+
/**
|
16 |
+
* Custom Login Welcome Page Class
|
17 |
+
*
|
18 |
+
* A general class for About and Credits page.
|
19 |
+
*
|
20 |
+
* @access public
|
21 |
+
* @since 2.0
|
22 |
+
* @return void
|
23 |
+
*/
|
24 |
+
class Custom_Login_Welcome {
|
25 |
+
|
26 |
+
/**
|
27 |
+
* @var string
|
28 |
+
*/
|
29 |
+
public $minimum_capability = 'manage_options';
|
30 |
+
|
31 |
+
/**
|
32 |
+
* Get things started
|
33 |
+
*
|
34 |
+
* @access private
|
35 |
+
* @since 2.0
|
36 |
+
* @return void
|
37 |
+
*/
|
38 |
+
public function __construct() {
|
39 |
+
add_action( 'admin_menu', array( $this, 'admin_menus') );
|
40 |
+
add_action( 'admin_head', array( $this, 'admin_head' ) );
|
41 |
+
add_action( 'admin_init', array( $this, 'welcome' ) );
|
42 |
+
}
|
43 |
+
|
44 |
+
/**
|
45 |
+
* Register dashboard pages.
|
46 |
+
*
|
47 |
+
* Later they are hidden in 'admin_head'.
|
48 |
+
*
|
49 |
+
* @since 2.0
|
50 |
+
* @return void
|
51 |
+
*/
|
52 |
+
public function admin_menus() {
|
53 |
+
$login = CUSTOMLOGIN();
|
54 |
+
// About Page
|
55 |
+
add_dashboard_page(
|
56 |
+
__( 'Welcome to Custom Login', $login->domain ),
|
57 |
+
__( 'Welcome to Custom Login', $login->domain ),
|
58 |
+
$this->minimum_capability,
|
59 |
+
'custom-login-about',
|
60 |
+
array( $this, 'about_screen' )
|
61 |
+
);
|
62 |
+
}
|
63 |
+
|
64 |
+
/**
|
65 |
+
* Hide Individual Dashboard Menus
|
66 |
+
*
|
67 |
+
* @since 2.0
|
68 |
+
* @return void
|
69 |
+
*/
|
70 |
+
public function admin_head() {
|
71 |
+
remove_submenu_page( 'index.php', 'custom-login-about' );
|
72 |
+
|
73 |
+
// Badge for welcome page
|
74 |
+
$badge_url = CUSTOM_LOGIN_URL . 'assets/images/welcome-badge.png';
|
75 |
+
?>
|
76 |
+
<style type="text/css" media="screen">
|
77 |
+
/*<![CDATA[*/
|
78 |
+
.cl-badge {
|
79 |
+
padding-top: 150px;
|
80 |
+
height: 52px;
|
81 |
+
width: 185px;
|
82 |
+
color: #666;
|
83 |
+
font-weight: bold;
|
84 |
+
font-size: 14px;
|
85 |
+
text-align: center;
|
86 |
+
text-shadow: 0 1px 0 rgba(255, 255, 255, 0.8);
|
87 |
+
margin: 0 -5px;
|
88 |
+
background: url('<?php echo $badge_url; ?>') no-repeat;
|
89 |
+
}
|
90 |
+
.about-wrap .cl-badge {
|
91 |
+
position: absolute;
|
92 |
+
top: 0;
|
93 |
+
right: 0;
|
94 |
+
}
|
95 |
+
/*]]>*/
|
96 |
+
</style>
|
97 |
+
<?php
|
98 |
+
}
|
99 |
+
|
100 |
+
/**
|
101 |
+
* Render About Screen
|
102 |
+
*
|
103 |
+
* @since 2.0
|
104 |
+
*/
|
105 |
+
public function about_screen() {
|
106 |
+
list( $display_version ) = explode( '-', CUSTOM_LOGIN_VERSION );
|
107 |
+
$login = CUSTOMLOGIN();
|
108 |
+
?>
|
109 |
+
<div class="wrap about-wrap">
|
110 |
+
<h1><?php printf( __( 'Welcome to Custom Login %s', $login->domain ), $display_version ); ?></h1>
|
111 |
+
<div class="about-text"><?php printf( __( 'Thank you for updating to the latest version! Custom Login %s is ready to make your login page better!', $login->domain ), $display_version ); ?></div>
|
112 |
+
<div class="cl-badge"><?php printf( __( 'Version %s', $login->domain ), $display_version ); ?></div>
|
113 |
+
|
114 |
+
<h2 class="nav-tab-wrapper">
|
115 |
+
<a class="nav-tab nav-tab-active" href="<?php echo esc_url( admin_url( add_query_arg( array( 'page' => 'custom-login-about' ), 'index.php' ) ) ); ?>">
|
116 |
+
<?php _e( "What's New", $login->domain ); ?>
|
117 |
+
</a>
|
118 |
+
</h2>
|
119 |
+
|
120 |
+
<div class="changelog">
|
121 |
+
<h3><?php _e( 'Improved Settings', $login->domain ); ?></h3>
|
122 |
+
|
123 |
+
<div class="feature-section">
|
124 |
+
|
125 |
+
<h4><?php _e( 'Load times', $login->domain ); ?></h4>
|
126 |
+
<p><?php _e( 'There were some rare cases in versions 1.x that had the plugin loading on pages it wasn\'t supposted to. Custom Login <strong>2.x</strong> now caches all queries and database calls. Making it over 140% faster.', $login->domain ); ?></p>
|
127 |
+
|
128 |
+
<h4><?php _e( 'Better features', $login->domain ); ?></h4>
|
129 |
+
<p><?php printf( __( 'With a complete rewrite of the plugin, I have to ability to build custom add-ons (think extensions), like stealth login, email logins and 2-step authentication to name a few of the add-ons you can find on %sExtendd.com%s in the future.', $login->domain ), '<a href="https://extendd.com">', '</a>' ); ?></p>
|
130 |
+
|
131 |
+
</div>
|
132 |
+
</div>
|
133 |
+
|
134 |
+
<div class="changelog">
|
135 |
+
<h3><?php _e( 'Extensions', $login->domain ); ?></h3>
|
136 |
+
|
137 |
+
<div class="feature-section col three-col">
|
138 |
+
<div>
|
139 |
+
<h4><?php _e( 'Stealth Login', $login->domain ); ?></h4>
|
140 |
+
<a href="https://extendd.com/plugin/custom-login-stealth-login/?utm_source=wordpressorg&utm_medium=custom-login&utm_campaign=welcome" target="_blank">
|
141 |
+
<img src="https://i.imgur.com/mhuymPG.jpg">
|
142 |
+
</a>
|
143 |
+
<p><?php _e( 'Protect your wp-login.php page from brute force attacks.', $login->domain ); ?></p>
|
144 |
+
</div>
|
145 |
+
|
146 |
+
<div>
|
147 |
+
<h4><?php _e( 'Page Template', $login->domain ); ?></h4>
|
148 |
+
<a href="https://extendd.com/plugin/custom-login-page-template/?utm_source=wordpressorg&utm_medium=custom-login&utm_campaign=welcome" target="_blank">
|
149 |
+
<img src="https://i.imgur.com/A0rzS9q.jpg">
|
150 |
+
</a>
|
151 |
+
<p><?php _e( 'Add a login form to any WordPress page.', $login->domain ); ?></p>
|
152 |
+
</div>
|
153 |
+
|
154 |
+
<div class="last-feature">
|
155 |
+
<h4><?php _e( 'Login Redirects', $login->domain ); ?></h4>
|
156 |
+
<a href="https://extendd.com/plugin/wordpress-login-redirects/?utm_source=wordpressorg&utm_medium=custom-login&utm_campaign=welcome" target="_blank">
|
157 |
+
<img class="eddri-thumbnail" src="https://i.imgur.com/aNGoyAa.jpg">
|
158 |
+
</a>
|
159 |
+
<p><?php _e( 'Manage redirects after logging in.', $login->domain ); ?></p>
|
160 |
+
</div>
|
161 |
+
</div>
|
162 |
+
</div>
|
163 |
+
|
164 |
+
<div class="return-to-dashboard">
|
165 |
+
<a href="<?php echo esc_url( admin_url( 'options-general.php?page=' . $login->domain ) ); ?>"><?php _e( 'Go to Custom Login Settings', $login->domain ); ?></a>
|
166 |
+
</div>
|
167 |
+
</div>
|
168 |
+
<?php
|
169 |
+
}
|
170 |
+
|
171 |
+
/**
|
172 |
+
* Sends user to the welcome page on first activation
|
173 |
+
*
|
174 |
+
* @since 2.0
|
175 |
+
* @return void
|
176 |
+
*/
|
177 |
+
public function welcome() {
|
178 |
+
// Bail if no activation redirect
|
179 |
+
if ( ! get_transient( '_custom_login_activation_redirect' ) )
|
180 |
+
return;
|
181 |
+
|
182 |
+
// Delete the redirect transient
|
183 |
+
delete_transient( '_custom_login_activation_redirect' );
|
184 |
+
|
185 |
+
// Bail if activating from network, or bulk
|
186 |
+
if ( is_network_admin() || isset( $_GET['activate-multi'] ) )
|
187 |
+
return;
|
188 |
+
|
189 |
+
wp_safe_redirect( admin_url( 'index.php?page=custom-login-about' ) ); exit;
|
190 |
+
|
191 |
+
}
|
192 |
+
}
|
193 |
+
new Custom_Login_Welcome();
|
custom-login.php
CHANGED
@@ -1,272 +1,1002 @@
|
|
1 |
-
<?php
|
2 |
-
|
3 |
-
|
4 |
-
* Plugin
|
5 |
-
*
|
6 |
-
*
|
7 |
-
*
|
8 |
-
* Author
|
9 |
-
*
|
10 |
-
*
|
11 |
-
*
|
12 |
-
* @
|
13 |
-
* @
|
14 |
-
*
|
15 |
-
*
|
16 |
-
*
|
17 |
-
*
|
18 |
-
*
|
19 |
-
*
|
20 |
-
|
21 |
-
|
22 |
-
|
23 |
-
|
24 |
-
|
25 |
-
|
26 |
-
|
27 |
-
|
28 |
-
|
29 |
-
|
30 |
-
|
31 |
-
|
32 |
-
|
33 |
-
|
34 |
-
|
35 |
-
|
36 |
-
|
37 |
-
|
38 |
-
|
39 |
-
|
40 |
-
|
41 |
-
|
42 |
-
|
43 |
-
|
44 |
-
|
45 |
-
|
46 |
-
|
47 |
-
|
48 |
-
|
49 |
-
|
50 |
-
|
51 |
-
|
52 |
-
|
53 |
-
|
54 |
-
|
55 |
-
|
56 |
-
|
57 |
-
|
58 |
-
|
59 |
-
|
60 |
-
|
61 |
-
|
62 |
-
|
63 |
-
|
64 |
-
|
65 |
-
|
66 |
-
|
67 |
-
|
68 |
-
|
69 |
-
|
70 |
-
|
71 |
-
|
72 |
-
|
73 |
-
|
74 |
-
|
75 |
-
|
76 |
-
|
77 |
-
|
78 |
-
|
79 |
-
|
80 |
-
|
81 |
-
|
82 |
-
|
83 |
-
|
84 |
-
|
85 |
-
|
86 |
-
|
87 |
-
|
88 |
-
|
89 |
-
|
90 |
-
|
91 |
-
|
92 |
-
|
93 |
-
|
94 |
-
|
95 |
-
|
96 |
-
|
97 |
-
|
98 |
-
|
99 |
-
|
100 |
-
|
101 |
-
|
102 |
-
|
103 |
-
|
104 |
-
|
105 |
-
|
106 |
-
|
107 |
-
|
108 |
-
|
109 |
-
|
110 |
-
|
111 |
-
|
112 |
-
|
113 |
-
|
114 |
-
|
115 |
-
|
116 |
-
|
117 |
-
|
118 |
-
|
119 |
-
|
120 |
-
|
121 |
-
|
122 |
-
|
123 |
-
|
124 |
-
|
125 |
-
|
126 |
-
|
127 |
-
|
128 |
-
|
129 |
-
|
130 |
-
|
131 |
-
|
132 |
-
|
133 |
-
|
134 |
-
|
135 |
-
|
136 |
-
|
137 |
-
|
138 |
-
|
139 |
-
|
140 |
-
|
141 |
-
|
142 |
-
|
143 |
-
|
144 |
-
|
145 |
-
|
146 |
-
|
147 |
-
|
148 |
-
|
149 |
-
|
150 |
-
|
151 |
-
|
152 |
-
|
153 |
-
|
154 |
-
|
155 |
-
|
156 |
-
|
157 |
-
|
158 |
-
|
159 |
-
|
160 |
-
|
161 |
-
|
162 |
-
|
163 |
-
|
164 |
-
|
165 |
-
|
166 |
-
|
167 |
-
|
168 |
-
|
169 |
-
|
170 |
-
|
171 |
-
|
172 |
-
|
173 |
-
|
174 |
-
|
175 |
-
|
176 |
-
|
177 |
-
|
178 |
-
|
179 |
-
|
180 |
-
|
181 |
-
|
182 |
-
|
183 |
-
|
184 |
-
|
185 |
-
|
186 |
-
|
187 |
-
|
188 |
-
|
189 |
-
|
190 |
-
|
191 |
-
|
192 |
-
|
193 |
-
|
194 |
-
|
195 |
-
|
196 |
-
|
197 |
-
|
198 |
-
|
199 |
-
|
200 |
-
|
201 |
-
|
202 |
-
|
203 |
-
|
204 |
-
|
205 |
-
|
206 |
-
$(
|
207 |
-
|
208 |
-
|
209 |
-
|
210 |
-
|
211 |
-
);
|
212 |
-
|
213 |
-
|
214 |
-
|
215 |
-
|
216 |
-
|
217 |
-
|
218 |
-
|
219 |
-
|
220 |
-
|
221 |
-
|
222 |
-
|
223 |
-
|
224 |
-
|
225 |
-
|
226 |
-
|
227 |
-
|
228 |
-
|
229 |
-
|
230 |
-
|
231 |
-
|
232 |
-
|
233 |
-
|
234 |
-
|
235 |
-
|
236 |
-
|
237 |
-
|
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 |
-
|
268 |
-
|
269 |
-
|
270 |
-
|
271 |
-
|
272 |
-
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
1 |
+
<?php
|
2 |
+
|
3 |
+
/**
|
4 |
+
* Plugin Name: Custom Login
|
5 |
+
* Plugin URI: https://extendd.com/plugin/custom-login
|
6 |
+
* Description: A simple way to customize your WordPress <code>wp-login.php</code> screen! Use the built in, easy to use <a href="./options-general.php?page=custom-login">settings</a> page to do the work for you. Share you designs on <a href="http://flickr.com/groups/custom-login/">Flickr</a> or get Custom Login extensions at <a href="https://extendd.com/plugins/tag/custom-login-extension">Extendd.com</a>.
|
7 |
+
* Version: 2.4.0
|
8 |
+
* Author: Austin Passy
|
9 |
+
* Author URI: http://austin.passy.co
|
10 |
+
* Text Domain: custom-login
|
11 |
+
*
|
12 |
+
* @copyright 2012 - 2014
|
13 |
+
* @author Austin Passy
|
14 |
+
* @link http://austin.passy.co/
|
15 |
+
* @license http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
|
16 |
+
*
|
17 |
+
* This program is distributed in the hope that it will be useful,
|
18 |
+
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
19 |
+
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
20 |
+
*
|
21 |
+
* @class custom_login_pro
|
22 |
+
*/
|
23 |
+
|
24 |
+
if ( !class_exists( 'Custom_Login' ) ) :
|
25 |
+
class Custom_Login {
|
26 |
+
|
27 |
+
/** Singleton *************************************************************/
|
28 |
+
private static $instance;
|
29 |
+
|
30 |
+
/**
|
31 |
+
* Plugin vars
|
32 |
+
* @return string
|
33 |
+
*/
|
34 |
+
var $version = '2.4.0',
|
35 |
+
$domain,
|
36 |
+
$id;
|
37 |
+
|
38 |
+
/**
|
39 |
+
* Private settings
|
40 |
+
*/
|
41 |
+
private $settings_api,
|
42 |
+
$remote_install,
|
43 |
+
$sections;
|
44 |
+
|
45 |
+
/**
|
46 |
+
* Options page
|
47 |
+
*/
|
48 |
+
public $options_page;
|
49 |
+
|
50 |
+
/**
|
51 |
+
* Main Instance
|
52 |
+
*
|
53 |
+
* @staticvar array $instance
|
54 |
+
* @return The one true instance
|
55 |
+
*/
|
56 |
+
public static function instance() {
|
57 |
+
if ( ! isset( self::$instance ) ) {
|
58 |
+
self::$instance = new self;
|
59 |
+
self::$instance->setup_constants();
|
60 |
+
self::$instance->plugin_textdomain();
|
61 |
+
self::$instance->required_functions();
|
62 |
+
self::$instance->init();
|
63 |
+
}
|
64 |
+
return self::$instance;
|
65 |
+
}
|
66 |
+
|
67 |
+
/**
|
68 |
+
* To infinity and beyond
|
69 |
+
*/
|
70 |
+
function init() {
|
71 |
+
|
72 |
+
/* vars */
|
73 |
+
$this->domain = 'custom-login';
|
74 |
+
$this->id = 'custom_login';
|
75 |
+
|
76 |
+
/* Constants */
|
77 |
+
add_action( 'admin_init', array( $this, 'check_version' ), 1 );
|
78 |
+
|
79 |
+
/* Constants */
|
80 |
+
add_action( 'init', array( $this, 'setup_constants' ) );
|
81 |
+
|
82 |
+
/* Scripts */
|
83 |
+
add_action( 'login_enqueue_scripts', array( $this, 'enqueue_scripts' ) );
|
84 |
+
|
85 |
+
/* Custom jQuery templates */
|
86 |
+
add_action( 'login_footer', array( $this, 'login_footer_jquery' ) );
|
87 |
+
|
88 |
+
/* Includes */
|
89 |
+
add_action( 'init', array( $this, 'required_classes' ) );
|
90 |
+
add_action( 'init', array( $this, 'required_functions' ) );
|
91 |
+
|
92 |
+
/* Shortcodes */
|
93 |
+
add_action( 'init', array( $this, 'add_shortcodes' ) );
|
94 |
+
|
95 |
+
/* Settings */
|
96 |
+
add_action( 'admin_init', array( $this, 'admin_init' ), 9 );
|
97 |
+
add_action( 'admin_menu', array( $this, 'admin_menu' ), 9 );
|
98 |
+
|
99 |
+
/* Clear transient cache button */
|
100 |
+
add_action( $this->id .
|
101 |
+
'_form_bottom_' . $this->id, array( $this, 'delete_transient_button_output' ) );
|
102 |
+
|
103 |
+
/* Delete transient action */
|
104 |
+
add_action( 'admin_action_' .
|
105 |
+
$this->id . '-delete_transient', array( $this, 'delete_custom_login_transient_cache' ) );
|
106 |
+
|
107 |
+
/* Notices */
|
108 |
+
add_action( 'admin_notices', array( $this, 'admin_messages' ) );
|
109 |
+
|
110 |
+
/* Add a settings page to the plugin menu */
|
111 |
+
add_filter( 'plugin_action_links', array( $this, 'plugin_action_links' ), 10, 2 );
|
112 |
+
|
113 |
+
/* Filter in your URL */
|
114 |
+
add_filter( 'login_headerurl', array( $this, 'login_url' ) );
|
115 |
+
|
116 |
+
/* Filter in your description */
|
117 |
+
add_filter( 'login_headertitle', array( $this, 'login_title' ) );
|
118 |
+
|
119 |
+
/* Custom HTML */
|
120 |
+
add_action( 'login_footer', array( $this, 'login_footer_html' ) );
|
121 |
+
}
|
122 |
+
|
123 |
+
/**
|
124 |
+
* WordPress version check
|
125 |
+
*
|
126 |
+
* @since 2.0.3
|
127 |
+
*/
|
128 |
+
function check_version() {
|
129 |
+
global $wp_version;
|
130 |
+
|
131 |
+
if ( version_compare( $wp_version, '3.5', '<' ) ) {
|
132 |
+
add_action( 'admin_notices', array( $this, 'version_notification' ) );
|
133 |
+
if ( is_plugin_active( plugin_basename( __FILE__ ) ) ) deactivate_plugins( plugin_basename( __FILE__ ) );
|
134 |
+
}
|
135 |
+
}
|
136 |
+
|
137 |
+
/**
|
138 |
+
* Deactivation notice
|
139 |
+
*
|
140 |
+
*/
|
141 |
+
function version_notification() {
|
142 |
+
global $wp_version;
|
143 |
+
|
144 |
+
$html = '<div class="error"><p>';
|
145 |
+
$html .= sprintf( __( 'Custom Login has been deactivated because it requires a WordPress version greater than 3.5. You are running <code>%s</code>', $this->domain ), $wp_version );
|
146 |
+
$html .= '</p></div>';
|
147 |
+
|
148 |
+
echo $html;
|
149 |
+
}
|
150 |
+
|
151 |
+
/**
|
152 |
+
* Setup plugin constants
|
153 |
+
*
|
154 |
+
* @since 2.0
|
155 |
+
* @access private
|
156 |
+
* @uses plugin_dir_path()
|
157 |
+
* @uses plugin_dir_url()
|
158 |
+
*/
|
159 |
+
function setup_constants() {
|
160 |
+
|
161 |
+
// Plugin version
|
162 |
+
if ( ! defined( 'CUSTOM_LOGIN_VERSION' ) )
|
163 |
+
define( 'CUSTOM_LOGIN_VERSION', $this->version );
|
164 |
+
|
165 |
+
// Plugin settings
|
166 |
+
if ( ! defined( 'CUSTOM_LOGIN_SETTINGS' ) )
|
167 |
+
define( 'CUSTOM_LOGIN_SETTINGS', $this->id );
|
168 |
+
|
169 |
+
// Plugin Folder URL
|
170 |
+
if ( ! defined( 'CUSTOM_LOGIN_URL' ) )
|
171 |
+
define( 'CUSTOM_LOGIN_URL', plugin_dir_url( __FILE__ ) );
|
172 |
+
|
173 |
+
// Plugin Folder Path
|
174 |
+
if ( ! defined( 'CUSTOM_LOGIN_DIR' ) )
|
175 |
+
define( 'CUSTOM_LOGIN_DIR', plugin_dir_path( __FILE__ ) );
|
176 |
+
|
177 |
+
// Plugin Root File
|
178 |
+
if ( ! defined( 'CUSTOM_LOGIN_FILE' ) )
|
179 |
+
define( 'CUSTOM_LOGIN_FILE', __FILE__ );
|
180 |
+
|
181 |
+
// Plugin version
|
182 |
+
if ( ! defined( 'EXTENDD_API_URL' ) )
|
183 |
+
define( 'EXTENDD_API_URL', 'http://extendd.com' );
|
184 |
+
}
|
185 |
+
|
186 |
+
/**
|
187 |
+
* Load the plugin translations
|
188 |
+
*
|
189 |
+
*/
|
190 |
+
function plugin_textdomain() {
|
191 |
+
load_plugin_textdomain( 'custom-login', false, dirname( plugin_basename( __FILE__ ) ) . '/languages/' );
|
192 |
+
}
|
193 |
+
|
194 |
+
/**
|
195 |
+
* Enqueue additional scripts.
|
196 |
+
*
|
197 |
+
* @since 2.0
|
198 |
+
* @updated 2.1
|
199 |
+
*/
|
200 |
+
function enqueue_scripts() {
|
201 |
+
if ( !$this->is_active() )
|
202 |
+
return;
|
203 |
+
|
204 |
+
global $cl_css_atts;
|
205 |
+
|
206 |
+
$cl_css_atts = array(
|
207 |
+
'version' => CUSTOM_LOGIN_VERSION,
|
208 |
+
);
|
209 |
+
$cl_css_atts = wp_parse_args( get_option( $this->id, array() ), $cl_css_atts );
|
210 |
+
|
211 |
+
ob_start();
|
212 |
+
echo "<style type=\"text/css\">\n";
|
213 |
+
$login_template = new Custom_Login_Templates;
|
214 |
+
$login_template->get_template_part( 'wp-login', 'style' );
|
215 |
+
echo "\n</style>";
|
216 |
+
echo ob_get_clean();
|
217 |
+
|
218 |
+
/* Custom jQuery */
|
219 |
+
$jquery = $this->get_option( 'custom_jquery', $this->id );
|
220 |
+
if ( !empty( $jquery ) ) {
|
221 |
+
wp_enqueue_script( array( 'jquery' ) );
|
222 |
+
}
|
223 |
+
}
|
224 |
+
|
225 |
+
/**
|
226 |
+
* Database access to the scripts and styles.
|
227 |
+
*
|
228 |
+
* @since 2.1
|
229 |
+
* @return string|void
|
230 |
+
*/
|
231 |
+
function login_footer_jquery() {
|
232 |
+
$jquery = $this->get_option( 'custom_jquery', $this->id );
|
233 |
+
if ( !empty( $jquery ) ) :
|
234 |
+
|
235 |
+
global $cl_js_atts;
|
236 |
+
|
237 |
+
$cl_js_atts = array(
|
238 |
+
'version' => CUSTOM_LOGIN_VERSION,
|
239 |
+
);
|
240 |
+
$cl_js_atts = wp_parse_args( get_option( $this->id, array() ), $cl_js_atts );
|
241 |
+
|
242 |
+
foreach( $cl_js_atts as $atts => $value ) {
|
243 |
+
if ( 'custom_jquery' !== $atts && 'version' !== $atts )
|
244 |
+
unset( $cl_js_atts[$atts] );
|
245 |
+
}
|
246 |
+
|
247 |
+
ob_start();
|
248 |
+
echo "<script type=\"text/javascript\">\n";
|
249 |
+
$login_template = new Custom_Login_Templates;
|
250 |
+
$login_template->get_template_part( 'wp-login', 'script' );
|
251 |
+
echo "\n</script>";
|
252 |
+
echo ob_get_clean();
|
253 |
+
|
254 |
+
endif; // jQUery
|
255 |
+
}
|
256 |
+
|
257 |
+
/**
|
258 |
+
* Includes required functions
|
259 |
+
*
|
260 |
+
*/
|
261 |
+
function required_classes() {
|
262 |
+
require_once( trailingslashit( plugin_dir_path( __FILE__ ) ) . 'classes/class.settings-api.php' );
|
263 |
+
$this->settings_api = EXTENDD_PLUGIN_SETTINGS_API();
|
264 |
+
|
265 |
+
if ( is_admin() ) {
|
266 |
+
// Settings API
|
267 |
+
$this->settings_api->set_prefix( $this->id );
|
268 |
+
$this->settings_api->set_domain( $this->domain );
|
269 |
+
$this->settings_api->set_version( $this->version );
|
270 |
+
|
271 |
+
// Welcome API
|
272 |
+
require_once( trailingslashit( plugin_dir_path( __FILE__ ) ) . 'classes/welcome.php' );
|
273 |
+
|
274 |
+
// Extensions install API
|
275 |
+
if ( $this->class_exists_require( 'Extendd_Remote_Install_Client', 'edd-remote-install-client/EDD_Remote_Install_Client.php' ) ) {
|
276 |
+
$this->remote_install = new Extendd_Remote_Install_Client( EXTENDD_API_URL, 'settings_page_' . $this->domain,
|
277 |
+
array( 'skipplugincheck' => true, 'url' => home_url() )
|
278 |
+
);
|
279 |
+
add_action( 'eddri-install-complete-settings_page_' . $this->domain, array( $this, 'custom_login_extension_install_complete' ), 10, 1 );
|
280 |
+
}
|
281 |
+
}
|
282 |
+
require_once( trailingslashit( plugin_dir_path( __FILE__ ) ) . 'classes/templates.php' );
|
283 |
+
require_once( trailingslashit( plugin_dir_path( __FILE__ ) ) . 'classes/scripts-styles.php' );
|
284 |
+
}
|
285 |
+
|
286 |
+
/**
|
287 |
+
* Includes required functions
|
288 |
+
*
|
289 |
+
*/
|
290 |
+
function required_functions() {
|
291 |
+
require_once( trailingslashit( plugin_dir_path( __FILE__ ) ) . 'functions/upgrades/upgrade-functions.php' );
|
292 |
+
require_once( trailingslashit( plugin_dir_path( __FILE__ ) ) . 'functions/upgrades/upgrades.php' );
|
293 |
+
}
|
294 |
+
|
295 |
+
/**
|
296 |
+
* Helper function to require classes if they do not exist.
|
297 |
+
*
|
298 |
+
*/
|
299 |
+
function class_exists_require( $class_name, $dir_path = null ) {
|
300 |
+
if ( !class_exists( $class_name ) ) {
|
301 |
+
$dir_path = trailingslashit( plugin_dir_path( __FILE__ ) ) . 'classes/' . $dir_path;
|
302 |
+
|
303 |
+
if ( file_exists( $dir_path ) ) {
|
304 |
+
require_once( $dir_path );
|
305 |
+
return true;
|
306 |
+
}
|
307 |
+
return false;
|
308 |
+
}
|
309 |
+
return false;
|
310 |
+
}
|
311 |
+
|
312 |
+
/**
|
313 |
+
* Add shortcodes
|
314 |
+
*
|
315 |
+
*/
|
316 |
+
function add_shortcodes() {
|
317 |
+
#add_shortcode( 'custom-login', array( $this, 'login_shortcode' ) );
|
318 |
+
}
|
319 |
+
|
320 |
+
/**
|
321 |
+
* Login shortcode
|
322 |
+
*
|
323 |
+
*/
|
324 |
+
function login_shortcode( $atts ) {
|
325 |
+
return '';
|
326 |
+
}
|
327 |
+
|
328 |
+
/**
|
329 |
+
* Get the value of a settings field
|
330 |
+
*
|
331 |
+
* $this->get_option( 'field_name', 'section_name', 'default value' );
|
332 |
+
*
|
333 |
+
* @param string $option settings field name
|
334 |
+
* @param string $section the section name this field belongs to
|
335 |
+
* @param string $default default text if it's not found
|
336 |
+
* @return mixed
|
337 |
+
*/
|
338 |
+
public function get_option( $option, $section, $default = '' ) {
|
339 |
+
|
340 |
+
$options = get_option( $section );
|
341 |
+
|
342 |
+
if ( isset( $options[$option] ) ) {
|
343 |
+
return $options[$option];
|
344 |
+
}
|
345 |
+
|
346 |
+
return $default;
|
347 |
+
}
|
348 |
+
|
349 |
+
/**
|
350 |
+
* Registers settings section and fields
|
351 |
+
*/
|
352 |
+
function admin_init() {
|
353 |
+
|
354 |
+
$this->sections = array(
|
355 |
+
array(
|
356 |
+
'id' => $this->id,
|
357 |
+
'title' => __( 'General Settings', $this->domain )
|
358 |
+
),
|
359 |
+
);
|
360 |
+
|
361 |
+
$fields = array(
|
362 |
+
$this->id => array(
|
363 |
+
array(
|
364 |
+
'name' => 'active',
|
365 |
+
'label' => __( 'Activate', $this->domain ),
|
366 |
+
'desc' => __( 'Toggle this plugin on & off.', $this->domain ),
|
367 |
+
'type' => 'checkbox'
|
368 |
+
),
|
369 |
+
/** BREAK **/
|
370 |
+
array(
|
371 |
+
'name' => 'break_1',
|
372 |
+
'label' => __( '<h4><abbr title="Hyper Text Markup Language">HTML</abbr></h4>', $this->domain ),
|
373 |
+
'desc' => '',
|
374 |
+
'type' => 'html',
|
375 |
+
),
|
376 |
+
/** BREAK **/
|
377 |
+
array(
|
378 |
+
'name' => 'html_background_color',
|
379 |
+
'label' => __( 'HTML Background Color', $this->domain ),
|
380 |
+
'desc' => '',
|
381 |
+
'type' => 'colorpicker',
|
382 |
+
'default' => '',
|
383 |
+
),
|
384 |
+
array(
|
385 |
+
'name' => 'html_background_url',
|
386 |
+
'label' => __( 'HTML Background Image', $this->domain ),
|
387 |
+
'desc' => __( 'Upload an image or a repeating pattern (optional).', $this->domain ),
|
388 |
+
'type' => 'file',
|
389 |
+
'default' => '',
|
390 |
+
'page_id' => '0',
|
391 |
+
'sanitize_callback' => 'esc_url',
|
392 |
+
),
|
393 |
+
array(
|
394 |
+
'name' => 'html_background_position',
|
395 |
+
'label' => __( 'HTML Background Position', $this->domain ),
|
396 |
+
'desc' => sprintf( __( '<a href="%s" target="_blank">html background position</a>.', $this->domain ), 'http://www.w3schools.com/cssref/pr_background-position.asp' ),
|
397 |
+
'type' => 'select',
|
398 |
+
'options' => array(
|
399 |
+
'left top' => 'left top',
|
400 |
+
'left center' => 'left center',
|
401 |
+
'left bottom' => 'left bottom',
|
402 |
+
'right top' => 'right top',
|
403 |
+
'right center' => 'right center',
|
404 |
+
'right bottom' => 'right bottom',
|
405 |
+
'center top' => 'center top',
|
406 |
+
'center center' => 'center center',
|
407 |
+
'center bottom' => 'center bottom',
|
408 |
+
),
|
409 |
+
),
|
410 |
+
array(
|
411 |
+
'name' => 'html_background_repeat',
|
412 |
+
'label' => __( 'HTML Background repeat', $this->domain ),
|
413 |
+
'desc' => '',
|
414 |
+
'type' => 'select',
|
415 |
+
'options' => array(
|
416 |
+
'no-repeat' => 'no-repeat',
|
417 |
+
'repeat' => 'repeat',
|
418 |
+
'repeat-x' => 'repeat-x',
|
419 |
+
'repeat-y' => 'repeat-y',
|
420 |
+
)
|
421 |
+
),
|
422 |
+
array(
|
423 |
+
'name' => 'html_background_size',
|
424 |
+
'label' => __( 'HTML Background size', $this->domain ),
|
425 |
+
'desc' => '',
|
426 |
+
'type' => 'select',
|
427 |
+
'options' => array(
|
428 |
+
'none' => 'none',
|
429 |
+
'cover' => 'cover',
|
430 |
+
'contain' => 'contain',
|
431 |
+
'flex' => 'flex',
|
432 |
+
)
|
433 |
+
),
|
434 |
+
/** BREAK **/
|
435 |
+
array(
|
436 |
+
'name' => 'break_2',
|
437 |
+
'label' => __( '<h4>Logo</h4>', $this->domain ),
|
438 |
+
'desc' => '',
|
439 |
+
'type' => 'html',
|
440 |
+
),
|
441 |
+
/** BREAK **/
|
442 |
+
array(
|
443 |
+
'name' => 'hide_wp_logo',
|
444 |
+
'label' => __( 'Hide the WP logo', $this->domain ),
|
445 |
+
'desc' => __( 'Works when there is no logo present, otherwise the WP logo is replaced by your logo.', $this->domain ),
|
446 |
+
'type' => 'checkbox'
|
447 |
+
),
|
448 |
+
array(
|
449 |
+
'name' => 'logo_background_url',
|
450 |
+
'label' => __( 'Logo', $this->domain ),
|
451 |
+
'desc' => __( 'Replace the WordPress logo (optional).', $this->domain ),
|
452 |
+
'type' => 'file',
|
453 |
+
'default' => '',
|
454 |
+
'page_id' => '0',
|
455 |
+
'sanitize_callback' => 'esc_url',
|
456 |
+
),
|
457 |
+
array(
|
458 |
+
'name' => 'logo_background_size_width',
|
459 |
+
'label' => __( 'Logo Image width', $this->domain ),
|
460 |
+
'desc' => __( 'Enter your image size in "pixels" without the "px"', $this->domain ),
|
461 |
+
'type' => 'text',
|
462 |
+
'size' => 'small',
|
463 |
+
'default' => '',
|
464 |
+
'sanitize_callback' => 'absint',
|
465 |
+
),
|
466 |
+
array(
|
467 |
+
'name' => 'logo_background_size_height',
|
468 |
+
'label' => __( 'Logo Image height', $this->domain ),
|
469 |
+
'desc' => __( 'Enter your image size in "pixels" without the "px"', $this->domain ),
|
470 |
+
'type' => 'text',
|
471 |
+
'size' => 'small',
|
472 |
+
'default' => '',
|
473 |
+
'sanitize_callback' => 'absint',
|
474 |
+
),
|
475 |
+
array(
|
476 |
+
'name' => 'logo_background_position',
|
477 |
+
'label' => __( 'Logo Background Position', $this->domain ),
|
478 |
+
'desc' => sprintf( __( '<a href="%s" target="_blank">html background position</a>.', $this->domain ), 'http://www.w3schools.com/cssref/pr_background-position.asp' ),
|
479 |
+
'type' => 'select',
|
480 |
+
'options' => array(
|
481 |
+
'left top' => 'left top',
|
482 |
+
'left center' => 'left center',
|
483 |
+
'left bottom' => 'left bottom',
|
484 |
+
'right top' => 'right top',
|
485 |
+
'right center' => 'right center',
|
486 |
+
'right bottom' => 'right bottom',
|
487 |
+
'center top' => 'center top',
|
488 |
+
'center center' => 'center center',
|
489 |
+
'center bottom' => 'center bottom',
|
490 |
+
),
|
491 |
+
),
|
492 |
+
array(
|
493 |
+
'name' => 'logo_background_repeat',
|
494 |
+
'label' => __( 'Logo Background repeat', $this->domain ),
|
495 |
+
'desc' => '',
|
496 |
+
'type' => 'select',
|
497 |
+
'options' => array(
|
498 |
+
'no-repeat' => 'no-repeat',
|
499 |
+
'repeat' => 'repeat',
|
500 |
+
'repeat-x' => 'repeat-x',
|
501 |
+
'repeat-y' => 'repeat-y',
|
502 |
+
)
|
503 |
+
),
|
504 |
+
array(
|
505 |
+
'name' => 'logo_background_size',
|
506 |
+
'label' => __( 'Logo Background size', $this->domain ),
|
507 |
+
'desc' => '',
|
508 |
+
'type' => 'select',
|
509 |
+
'options' => array(
|
510 |
+
'none' => 'none',
|
511 |
+
'cover' => 'cover',
|
512 |
+
'contain' => 'contain',
|
513 |
+
'flex' => 'flex',
|
514 |
+
'custom' => 'custom',
|
515 |
+
)
|
516 |
+
),
|
517 |
+
array(
|
518 |
+
'name' => 'logo_background_size_custom',
|
519 |
+
'label' => __( 'Logo Background size (custom)', $this->domain ),
|
520 |
+
'desc' => sprintf( __( 'Use size values in format "INT unit INT unit". Example: 10px 15px or 55px 55px etc. %sNote: Logo Background size MUST be set to none.%s', $this->domain ), '<strong>', '</strong>' ),
|
521 |
+
'type' => 'text',
|
522 |
+
'size' => 'medium',
|
523 |
+
'default' => '',
|
524 |
+
'sanitize_callback' => '',
|
525 |
+
),
|
526 |
+
/** BREAK **/
|
527 |
+
array(
|
528 |
+
'name' => 'break_3',
|
529 |
+
'label' => __( '<h4>Login form</h4>', $this->domain ),
|
530 |
+
'desc' => '',
|
531 |
+
'type' => 'html',
|
532 |
+
),
|
533 |
+
/** BREAK **/
|
534 |
+
array(
|
535 |
+
'name' => 'login_form_background_color',
|
536 |
+
'label' => __( 'Login Form Background Color', $this->domain ),
|
537 |
+
'desc' => '',
|
538 |
+
'type' => 'colorpicker',
|
539 |
+
'default' => ''
|
540 |
+
),
|
541 |
+
array(
|
542 |
+
'name' => 'login_form_background_url',
|
543 |
+
'label' => __( 'Login Form Background URL', $this->domain ),
|
544 |
+
'desc' => __( 'Add an image to the form (optional).', $this->domain ),
|
545 |
+
'type' => 'file',
|
546 |
+
'default' => '',
|
547 |
+
'page_id' => '0',
|
548 |
+
'sanitize_callback' => 'esc_url',
|
549 |
+
),
|
550 |
+
array(
|
551 |
+
'name' => 'login_form_background_position',
|
552 |
+
'label' => __( 'Login Form Background Position', $this->domain ),
|
553 |
+
'desc' => sprintf( __( '<a href="%s" target="_blank">html background position</a>.', $this->domain ), 'http://www.w3schools.com/cssref/pr_background-position.asp' ),
|
554 |
+
'type' => 'select',
|
555 |
+
'options' => array(
|
556 |
+
'left top' => 'left top',
|
557 |
+
'left center' => 'left center',
|
558 |
+
'left bottom' => 'left bottom',
|
559 |
+
'right top' => 'right top',
|
560 |
+
'right center' => 'right center',
|
561 |
+
'right bottom' => 'right bottom',
|
562 |
+
'center top' => 'center top',
|
563 |
+
'center center' => 'center center',
|
564 |
+
'center bottom' => 'center bottom',
|
565 |
+
),
|
566 |
+
),
|
567 |
+
array(
|
568 |
+
'name' => 'login_form_background_repeat',
|
569 |
+
'label' => __( 'Login Form Background repeat', $this->domain ),
|
570 |
+
'desc' => '',
|
571 |
+
'type' => 'select',
|
572 |
+
'options' => array(
|
573 |
+
'no-repeat' => 'no-repeat',
|
574 |
+
'repeat' => 'repeat',
|
575 |
+
'repeat-x' => 'repeat-x',
|
576 |
+
'repeat-y' => 'repeat-y',
|
577 |
+
)
|
578 |
+
),
|
579 |
+
array(
|
580 |
+
'name' => 'login_form_background_size',
|
581 |
+
'label' => __( 'Login Form Background size', $this->domain ),
|
582 |
+
'desc' => '',
|
583 |
+
'type' => 'select',
|
584 |
+
'options' => array(
|
585 |
+
'none' => 'none',
|
586 |
+
'cover' => 'cover',
|
587 |
+
'contain' => 'contain',
|
588 |
+
'flex' => 'flex',
|
589 |
+
)
|
590 |
+
),
|
591 |
+
array(
|
592 |
+
'name' => 'login_form_border_radius',
|
593 |
+
'label' => __( 'Login Form Border Radius', $this->domain ),
|
594 |
+
'desc' => '',
|
595 |
+
'type' => 'text',
|
596 |
+
'size' => 'small',
|
597 |
+
'default' => '',
|
598 |
+
'sanitize_callback' => 'absint',
|
599 |
+
),
|
600 |
+
array(
|
601 |
+
'name' => 'login_form_border_size',
|
602 |
+
'label' => __( 'Login Form Border Size', $this->domain ),
|
603 |
+
'desc' => '',
|
604 |
+
'type' => 'text',
|
605 |
+
'size' => 'small',
|
606 |
+
'default' => '',
|
607 |
+
'sanitize_callback' => 'absint',
|
608 |
+
),
|
609 |
+
array(
|
610 |
+
'name' => 'login_form_border_color',
|
611 |
+
'label' => __( 'Login Form Border Color', $this->domain ),
|
612 |
+
'desc' => '',
|
613 |
+
'type' => 'colorpicker',
|
614 |
+
'default' => ''
|
615 |
+
),
|
616 |
+
array(
|
617 |
+
'name' => 'login_form_box_shadow',
|
618 |
+
'label' => __( 'Login Form Box Shadow', $this->domain ),
|
619 |
+
'desc' => sprintf( __( 'Use <a href="%s" target="_blank">box shadow</a> syntax w/ out color. <code>inset h-shadow v-shadow blur spread</code>', $this->domain ), 'http://www.w3schools.com/cssref/css3_pr_box-shadow.asp' ),
|
620 |
+
'type' => 'text',
|
621 |
+
'size' => 'medium',
|
622 |
+
'default' => '5px 5px 10px'
|
623 |
+
),
|
624 |
+
array(
|
625 |
+
'name' => 'login_form_box_shadow_color',
|
626 |
+
'label' => __( 'Login Form Box Shadow Color', $this->domain ),
|
627 |
+
'desc' => '',
|
628 |
+
'type' => 'colorpicker',
|
629 |
+
'default' => ''
|
630 |
+
),
|
631 |
+
/** BREAK **/
|
632 |
+
array(
|
633 |
+
'name' => 'break_4',
|
634 |
+
'label' => __( '<h4>Misc.</h4>', $this->domain ),
|
635 |
+
'desc' => '',
|
636 |
+
'type' => 'html',
|
637 |
+
),
|
638 |
+
/** BREAK **/
|
639 |
+
array(
|
640 |
+
'name' => 'label_color',
|
641 |
+
'label' => __( 'Login Form Label Color', $this->domain ),
|
642 |
+
'desc' => '',
|
643 |
+
'type' => 'colorpicker',
|
644 |
+
'default' => ''
|
645 |
+
),
|
646 |
+
/** BREAK **/
|
647 |
+
array(
|
648 |
+
'name' => 'break_5',
|
649 |
+
'label' => __( '<h4>Below form anchor</h4>', $this->domain ),
|
650 |
+
'desc' => '',
|
651 |
+
'type' => 'html',
|
652 |
+
),
|
653 |
+
/** BREAK **/
|
654 |
+
array(
|
655 |
+
'name' => 'nav_color',
|
656 |
+
'label' => __( 'Below form nav color', $this->domain ),
|
657 |
+
'desc' => '',
|
658 |
+
'type' => 'colorpicker',
|
659 |
+
'default' => '',
|
660 |
+
),
|
661 |
+
array(
|
662 |
+
'name' => 'nav_text_shadow_color',
|
663 |
+
'label' => __( 'Below form nav text-shadow color', $this->domain ),
|
664 |
+
'desc' => '',
|
665 |
+
'type' => 'colorpicker',
|
666 |
+
'default' => '',
|
667 |
+
),
|
668 |
+
array(
|
669 |
+
'name' => 'nav_hover_color',
|
670 |
+
'label' => __( 'Below form nav color hover', $this->domain ),
|
671 |
+
'desc' => '',
|
672 |
+
'type' => 'colorpicker',
|
673 |
+
'default' => '',
|
674 |
+
),
|
675 |
+
array(
|
676 |
+
'name' => 'nav_text_shadow_hover_color',
|
677 |
+
'label' => __( 'Below form nav text-shadow hover', $this->domain ),
|
678 |
+
'desc' => '',
|
679 |
+
'type' => 'colorpicker',
|
680 |
+
'default' => '',
|
681 |
+
),
|
682 |
+
/** BREAK **/
|
683 |
+
array(
|
684 |
+
'name' => 'break_6',
|
685 |
+
'label' => __( '<h4>Custom HTML/CSS & jQuery</h4>', $this->domain ),
|
686 |
+
'desc' => '',
|
687 |
+
'type' => 'html',
|
688 |
+
),
|
689 |
+
/** BREAK **/
|
690 |
+
array(
|
691 |
+
'name' => 'custom_css',
|
692 |
+
'label' => __( 'Custom CSS', $this->domain ),
|
693 |
+
'desc' => sprintf( __( 'Use the "Tab" key to format your CSS.<br><strong>New:</strong> %sAllowed variables%s. %s', $this->domain ), '<a href="#" data-toggle="custom-css-variables">', '</a>', '<div id="custom-css-variables" style="display:none"><ul>
|
694 |
+
<li>%%BSLASH%% = "\" (backslash)</li>
|
695 |
+
<li><a href="http://wordpress.org/support/topic/quotes-in-custom-css-gets-replaced-with-useless-quote?replies=4">Request others</a></li>
|
696 |
+
</ul></div>' ),
|
697 |
+
'type' => 'textarea',
|
698 |
+
'sanitize_callback' => 'wp_filter_nohtml_kses',
|
699 |
+
),
|
700 |
+
array(
|
701 |
+
'name' => 'custom_html',
|
702 |
+
'label' => __( 'Custom HTML', $this->domain ),
|
703 |
+
'desc' => '',
|
704 |
+
'type' => 'textarea',
|
705 |
+
'sanitize_callback' => 'wp_kses_post', //Allow HTML
|
706 |
+
),
|
707 |
+
array(
|
708 |
+
'name' => 'custom_jquery',
|
709 |
+
'label' => __( 'Custom jQuery', $this->domain ),
|
710 |
+
'desc' => '',
|
711 |
+
'type' => 'textarea',
|
712 |
+
'sanitize_callback' => 'wp_specialchars_decode',
|
713 |
+
),
|
714 |
+
),
|
715 |
+
);
|
716 |
+
|
717 |
+
//set sections and fields
|
718 |
+
$this->settings_api->set_sections( $this->sections );
|
719 |
+
$this->settings_api->set_fields( $fields );
|
720 |
+
|
721 |
+
//initialize them
|
722 |
+
$this->settings_api->admin_init();
|
723 |
+
|
724 |
+
add_action( $this->id . '_settings_sidebars', array( $this, 'sidebar' ), 1 );
|
725 |
+
add_action( $this->id . '_settings_sidebars', array( $this, 'extensions' ), 12 );
|
726 |
+
|
727 |
+
return $this;
|
728 |
+
// wp_die( "Bork! <br><pre>" . print_r( $this->settings_api, true ) . "</pre>" );
|
729 |
+
}
|
730 |
+
|
731 |
+
/**
|
732 |
+
* Register the plugin page
|
733 |
+
*/
|
734 |
+
function admin_menu() {
|
735 |
+
$this->options_page = add_options_page( __( 'Custom Login Settings', $this->domain ), __( 'Custom Login', $this->domain ), 'manage_options', $this->domain, array( $this, 'plugin_page' ) );
|
736 |
+
|
737 |
+
add_action( 'admin_footer-' . $this->options_page, array( $this->settings_api, 'inline_jquery' ) );
|
738 |
+
}
|
739 |
+
|
740 |
+
/**
|
741 |
+
* Delete the transient
|
742 |
+
*
|
743 |
+
*/
|
744 |
+
function delete_transient_button_output() {
|
745 |
+
$button = '<div style="padding-left: 10px">';
|
746 |
+
$button .= wpautop( $this->delete_transient_button_link() );
|
747 |
+
$button .= '<span class="description">' . __( 'If your stylesheet isn\'t updating click update above to delete the transient cache.', $this->domain ) . '</span>';
|
748 |
+
$button .= '</div>';
|
749 |
+
|
750 |
+
echo $button;
|
751 |
+
}
|
752 |
+
|
753 |
+
/**
|
754 |
+
* Delete button link output
|
755 |
+
*
|
756 |
+
* @return string
|
757 |
+
*/
|
758 |
+
function delete_transient_button_link( $class = 'button' ) {
|
759 |
+
return sprintf( '<a href="%s" title="%s" class="%s">%s</a>',
|
760 |
+
esc_url( wp_nonce_url( add_query_arg( array( 'action' => $this->id . '-delete_transient' ), admin_url() ), $this->id . '-delete_transient' ) ),
|
761 |
+
esc_attr__( 'Clear the transient cache', $this->domain ),
|
762 |
+
sanitize_html_class( $class ),
|
763 |
+
__( 'Clear stylesheet cache', $this->domain )
|
764 |
+
);
|
765 |
+
}
|
766 |
+
|
767 |
+
/**
|
768 |
+
* Check for post activation on edit.php, when proper action
|
769 |
+
* is called set the post ID and write the content (CSS) to file.
|
770 |
+
*
|
771 |
+
* @return array()
|
772 |
+
*/
|
773 |
+
function delete_custom_login_transient_cache() {
|
774 |
+
|
775 |
+
if ( !( isset( $_GET[$this->id . '-delete_transient'] ) || ( isset( $_REQUEST['action'] ) && $this->id . '-delete_transient' == $_REQUEST['action'] ) ) )
|
776 |
+
return;
|
777 |
+
|
778 |
+
check_admin_referer( $this->id . '-delete_transient' );
|
779 |
+
|
780 |
+
delete_transient( $this->id . '_style' );
|
781 |
+
delete_transient( $this->id . '_script' );
|
782 |
+
|
783 |
+
/* Redirect */
|
784 |
+
wp_redirect( admin_url( sprintf( 'options-general.php?page=%s&settings-updated=true&message=1', $this->domain ) ) );
|
785 |
+
exit;
|
786 |
+
}
|
787 |
+
|
788 |
+
/**
|
789 |
+
* Show a message when prompted
|
790 |
+
*
|
791 |
+
* @return string|void
|
792 |
+
*/
|
793 |
+
function admin_messages() {
|
794 |
+
global $pagenow;
|
795 |
+
|
796 |
+
if ( ( isset( $_GET['page'] ) && isset( $_GET['message'] ) ) && $pagenow == 'options-general.php' && $this->domain == $_GET['page'] ) {
|
797 |
+
|
798 |
+
$html = '<div id="setting-error-transitent_deleted" class="updated"><p>';
|
799 |
+
|
800 |
+
switch ( $_GET['message'] ) {
|
801 |
+
case 1 :
|
802 |
+
$html .= __( 'The cache has been deleted.', $this->domain );
|
803 |
+
break;
|
804 |
+
|
805 |
+
case 2 :
|
806 |
+
$html .= '';
|
807 |
+
break;
|
808 |
+
}
|
809 |
+
|
810 |
+
$html .= '</p></div>';
|
811 |
+
|
812 |
+
echo $html;
|
813 |
+
}
|
814 |
+
}
|
815 |
+
|
816 |
+
/**
|
817 |
+
* Plugin Action
|
818 |
+
*/
|
819 |
+
function plugin_action_links( $links, $file ) {
|
820 |
+
if ( plugin_basename( __FILE__ ) === $file ) {
|
821 |
+
$settings_link = '<a href="' . admin_url( 'options-general.php?page=custom-login' ) . '">' . __( 'Settings', $this->domain ) . '</a>';
|
822 |
+
array_unshift( $links, $settings_link ); // before other links
|
823 |
+
}
|
824 |
+
return $links;
|
825 |
+
}
|
826 |
+
|
827 |
+
/**
|
828 |
+
* Display the plugin settings options page
|
829 |
+
*/
|
830 |
+
function plugin_page() {
|
831 |
+
echo '<div class="wrap">';
|
832 |
+
|
833 |
+
$this->settings_api->show_navigation();
|
834 |
+
$this->settings_api->show_forms();
|
835 |
+
|
836 |
+
echo '</div>';
|
837 |
+
|
838 |
+
if ( defined( 'WP_LOCAL_DEV' ) && WP_LOCAL_DEV && WP_DEBUG ) {
|
839 |
+
/**
|
840 |
+
foreach( apply_filters( $this->id . '_add_settings_sections', $this->sections ) as $section )
|
841 |
+
echo '<pre data-id="'.$section['id'].'">' . print_r( get_option( $section['id'] ), true ) . '</pre>';
|
842 |
+
echo '<pre data-id="custom_login_settings">' . print_r( get_option( 'custom_login_settings' ), true ) . '</pre>';
|
843 |
+
|
844 |
+
echo '<pre data-id="' . $this->id . '_ignore_announcement">' . print_r( get_user_meta( get_current_user_id(), $this->id . '_ignore_announcement', true ), true ) . '</pre>';
|
845 |
+
echo '<pre data-id="' . $this->id . '_announcement_message">' . print_r( get_option( $this->id . '_announcement_message' ), true ) . '</pre>';
|
846 |
+
// */
|
847 |
+
}
|
848 |
+
|
849 |
+
}
|
850 |
+
|
851 |
+
/**
|
852 |
+
* Sidebar info about this plugin
|
853 |
+
*
|
854 |
+
* @since 2.0
|
855 |
+
* @return string
|
856 |
+
*/
|
857 |
+
function sidebar( $args ) {
|
858 |
+
$content = '<ul class="social">';
|
859 |
+
$content .= '<li><span class="genericon genericon-user"></span> <a href="https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=X4JPT57AWMTYW">' . __( 'Support this plugin and buy me a beer', $this->domain ) . '</a></li>';
|
860 |
+
$content .= '<li><span class="genericon genericon-star"></span> <a href="https://wordpress.org/extend/plugins/custom-login/">' . __( 'Rate this plugin on WordPress.org', $this->domain ) . '</a></li>';
|
861 |
+
$content .= '<li><span class="genericon genericon-share"></span> <a href="http://www.flickr.com/groups/custom-login/">' . __( 'Share your designs on <strong style="color:#0066DC;">Flick</strong><strong style="color:#ff0084;">r</strong>', $this->domain ) . '</a></li>';
|
862 |
+
$content .= '<li><span class="genericon genericon-wordpress"></span> <a href="https://wordpress.org/support/plugin/custom-login">' . __( 'Get support on WordPress.org', $this->domain ) . '</a></li>';
|
863 |
+
$content .= '<li><span class="genericon genericon-github"></span> <a href="https://github.com/thefrosty/custom-login">' . __( 'Contribute development on GitHub', $this->domain ) . '</a></li>';
|
864 |
+
$content .= '<li><span class="genericon genericon-link"></span> <a href="https://extendd.com/plugins/tag/custom-login-extension/">' . __( 'Get Custom Login Extensions', $this->domain ) . '</a></li>';
|
865 |
+
|
866 |
+
if ( defined( 'WP_LOCAL_DEV' ) && WP_LOCAL_DEV ) {
|
867 |
+
$content .= '<li><span class="genericon genericon-warning"></span> ' . $this->get_queries( true ) . '</li>';
|
868 |
+
}
|
869 |
+
|
870 |
+
$content .= '<li><span class="genericon genericon-warning"></span> ' . $this->delete_transient_button_link( '' ) . '</li>';
|
871 |
+
|
872 |
+
$content .= '</ul>';
|
873 |
+
$this->settings_api->postbox( $this->id . '_sidebar', sprintf( __( '<a href="%s">%s</a> | <code>version %s</code>', $this->domain ), 'https://extendd.com/plugin/custom-login', ucwords( str_replace( '-', ' ', $this->domain ) ), $this->version ), $content, false );
|
874 |
+
}
|
875 |
+
|
876 |
+
/**
|
877 |
+
* Sidebar info to remote install extensions
|
878 |
+
*
|
879 |
+
* @since 2.2
|
880 |
+
* @return string
|
881 |
+
*/
|
882 |
+
function extensions( $args ) {
|
883 |
+
$content = wpautop( __( '<a href="#" data-toggle="extendd-license">Please read!</a> | <a href="#" data-toggle="extendd-license-help">Help</a>', $this->domain ) );
|
884 |
+
|
885 |
+
$content .= wpautop( sprintf( __( '<span id="extendd-license" style="display:none">Most of these extensions require a license key which can be purchased on <a href="%1$s" target="_blank">%2$s</a>. You\'ll have to have the key ready to install the extension.</span>', $this->domain ), 'https://extendd.com/plugins/tag/custom-login-extension/', 'Extendd.com' ) );
|
886 |
+
|
887 |
+
$content .= wpautop( __( '<span id="extendd-license-help" style="display:none">Click "install" to auto-install the extension on your site (which will also auto-activate it).<br>Free extensions will auto-install, while paid extensions will need a valid license key. Prices subject to change. Clicking "Purchase License" will show a quick link to purchase the extension (license) directly through PayPal. Choose which license you\'d like and you\'ll receive an email with your license key.</span>', $this->domain ) );
|
888 |
+
|
889 |
+
$transient = $this->id . '_extensions';
|
890 |
+
$old_html = get_option( $transient . '_message' );
|
891 |
+
|
892 |
+
$extensions = $this->settings_api->wp_remote_get_set_transient( 'https://raw.github.com/thefrosty/custom-login/master/extensions.json', $transient, 'html' );
|
893 |
+
if ( false === $extensions ) {
|
894 |
+
// FIND THIS CODE in wp.dev (mu-plugins)
|
895 |
+
$content .= '<div class="eddri-addon"> <div class="eddri-addon-container"> <div class="eddri-img-wrap"> <a href="http://extendd.com/plugin/custom-login-stealth-login/?utm_source=wordpressorg&utm_medium=custom-login&utm_campaign=eddri" target="_blank"><img class="eddri-thumbnail" src="https://i.imgur.com/mhuymPG.jpg"></a> <p>Protect your wp-login.php page from brute force attacks.</p> </div> <h3>Stealth Login</h3> <span class="eddri-status">Not Installed</span> <a class="button" data-edd-install="Custom Login Stealth Login">Install</a> <a class="button show-if-not-purchased" data-toggle="purchase-links-1" style="display:none">Purchase License</a> <div id="purchase-links-1" style="display:none"> <ul> <li><a href="http://extendd.com/checkout?edd_action=straight_to_gateway&download_id=7819&edd_options[price_id]=0">Single site license ($25)</a></li> <li><a href="http://extendd.com/checkout?edd_action=straight_to_gateway&download_id=7819&edd_options[price_id]=1">Up to 5 site licenses ($70)</a></li> <li><a href="http://extendd.com/checkout?edd_action=straight_to_gateway&download_id=7819&edd_options[price_id]=2">Unlimited site licenses ($100)</a></li> </ul> </div> </div> </div><div class="eddri-addon"> <div class="eddri-addon-container"> <div class="eddri-img-wrap"> <a href="http://extendd.com/plugin/custom-login-page-template/?utm_source=wordpressorg&utm_medium=custom-login&utm_campaign=eddri" target="_blank"><img class="eddri-thumbnail" src="https://i.imgur.com/A0rzS9q.jpg"></a> <p>Add a login form to any WordPress page.</p> </div> <h3>Page Template</h3> <span class="eddri-status">Not Installed</span> <a class="button" data-edd-install="Custom Login Page Template">Install</a> <a class="button show-if-not-purchased" data-toggle="purchase-links-2" style="display:none">Purchase License</a> <div id="purchase-links-2" style="display:none"> <ul> <li><a href="http://extendd.com/checkout?edd_action=straight_to_gateway&download_id=13528">One price! ($35)</a></li> </ul> </div> </div> </div><div class="eddri-addon"> <div class="eddri-addon-container"> <div class="eddri-img-wrap"> <a href="http://extendd.com/plugin/wordpress-login-redirects/?utm_source=wordpressorg&utm_medium=custom-login&utm_campaign=eddri" target="_blank"><img class="eddri-thumbnail" src="https://i.imgur.com/aNGoyAa.jpg"></a> <p>Manage redirects after logging in.</p> </div> <h3>Login Redirects</h3> <span class="eddri-status">Not Installed</span> <a class="button" data-edd-install="WordPress Login Redirects">Install</a> <a class="button show-if-not-purchased" data-toggle="purchase-links-3" style="display:none">Purchase License</a> <div id="purchase-links-3" style="display:none"> <ul> <li><a href="http://extendd.com/checkout?edd_action=straight_to_gateway&download_id=14333&edd_options[price_id]=0">Single site license ($30)</a></li> <li><a href="http://extendd.com/checkout?edd_action=straight_to_gateway&download_id=14333&edd_options[price_id]=1">Up to 5 site licenses ($70)</a></li> <li><a href="http://extendd.com/checkout?edd_action=straight_to_gateway&download_id=14333&edd_options[price_id]=2">Unlimited site licenses ($150)</a></li> </ul> </div> </div> </div>';
|
896 |
+
}
|
897 |
+
else {
|
898 |
+
$content .= $extensions->html;
|
899 |
+
|
900 |
+
if ( trim( $old_html ) !== trim( $extensions->html ) && !empty( $old_html ) ) {
|
901 |
+
delete_transient( $transient );
|
902 |
+
delete_option( $transient . '_message' );
|
903 |
+
}
|
904 |
+
}
|
905 |
+
|
906 |
+
$this->settings_api->postbox( $this->id . '_extensions', __( 'Custom Login Extensions', $this->domain ), $content, false );
|
907 |
+
}
|
908 |
+
|
909 |
+
/**
|
910 |
+
* Is plugin active
|
911 |
+
*
|
912 |
+
*/
|
913 |
+
function is_active() {
|
914 |
+
$active = $this->get_option( 'active', $this->id );
|
915 |
+
if ( isset( $active ) && 'on' === $active )
|
916 |
+
return true;
|
917 |
+
|
918 |
+
return false;
|
919 |
+
}
|
920 |
+
|
921 |
+
/**
|
922 |
+
* Replace the default link to your URL
|
923 |
+
*
|
924 |
+
*/
|
925 |
+
function login_url() {
|
926 |
+
if ( !is_multisite() ) return home_url( '/' );
|
927 |
+
else return network_home_url( '/' );
|
928 |
+
}
|
929 |
+
|
930 |
+
/**
|
931 |
+
* Replace the default title to your description
|
932 |
+
*
|
933 |
+
*/
|
934 |
+
function login_title() {
|
935 |
+
return get_bloginfo( 'description' );
|
936 |
+
}
|
937 |
+
|
938 |
+
/**
|
939 |
+
* If there is custom HTML set in the settings echo it to the
|
940 |
+
* `login_footer` hook in wp-login.php.
|
941 |
+
*
|
942 |
+
*/
|
943 |
+
function login_footer_html() {
|
944 |
+
$custom_html = $this->get_option( 'custom_html', $this->id );
|
945 |
+
$html = '';
|
946 |
+
|
947 |
+
if ( !empty( $custom_html ) )
|
948 |
+
$html .= $custom_html;
|
949 |
+
|
950 |
+
$html .= defined( 'WP_DEBUG' ) && WP_DEBUG ? $this->get_queries() : '';
|
951 |
+
$html .= "\n";
|
952 |
+
|
953 |
+
echo $html;
|
954 |
+
}
|
955 |
+
|
956 |
+
/**
|
957 |
+
* Helper function to get total numer of queries and execution time
|
958 |
+
*
|
959 |
+
*/
|
960 |
+
function get_queries( $display = false ) {
|
961 |
+
return sprintf( ( $display ? '' : '<div style="display:none">' ) . esc_attr__( '%s queries in %s seconds.', $this->domain ) . ( $display ? '' : '</div>' ), get_num_queries(), timer_stop() );
|
962 |
+
}
|
963 |
+
|
964 |
+
/**
|
965 |
+
* Activate the license key for the Extendd Settings API.
|
966 |
+
*
|
967 |
+
* Extendd settings format: 'extendd_' . 'plugin_folder_name'
|
968 |
+
*/
|
969 |
+
function custom_login_extension_install_complete( $args ) {
|
970 |
+
$plugin = 'extendd_' . str_replace( '-', '_', $args['slug'] );
|
971 |
+
$option = get_option( $plugin, array() );
|
972 |
+
|
973 |
+
if ( empty( $option ) || empty( $option['license_key'] ) ) {
|
974 |
+
$option['license_key'] = $args['license'];
|
975 |
+
$option['license_active'] = $args['license_active'];
|
976 |
+
// Update the settings
|
977 |
+
update_option( $plugin, $option );
|
978 |
+
}
|
979 |
+
}
|
980 |
+
|
981 |
+
}
|
982 |
+
endif;
|
983 |
+
|
984 |
+
/**
|
985 |
+
* The main function responsible for returning the one true
|
986 |
+
* Instance to functions everywhere.
|
987 |
+
*
|
988 |
+
* Use this function like you would a global variable, except without needing
|
989 |
+
* to declare the global.
|
990 |
+
*
|
991 |
+
* Example: <?php $custom_login = CUSTOMLOGIN(); ?>
|
992 |
+
*
|
993 |
+
* @return The one true Instance
|
994 |
+
*/
|
995 |
+
if ( !function_exists( 'CUSTOMLOGIN' ) ) {
|
996 |
+
function CUSTOMLOGIN() {
|
997 |
+
return Custom_Login::instance();
|
998 |
+
}
|
999 |
+
}
|
1000 |
+
|
1001 |
+
// Out of the frying pan, and into the fire.
|
1002 |
+
CUSTOMLOGIN();
|
extensions.json
ADDED
@@ -0,0 +1 @@
|
|
Â
|
1 |
+
{"version":"2.3.9 10\/27\/14","message":"Download the <a href=\"https:\/\/extendd.com\/plugin\/custom-login-bundle\/\" target=\"_blank\">Custom Login Bundle<\/a> and save over $200!","html":"<div class=\"eddri-addon\"> <div class=\"eddri-addon-container\"> <div class=\"eddri-img-wrap\"> <a href=\"http:\/\/extendd.com\/plugin\/custom-login-stealth-login\/?utm_source=wordpressorg&utm_medium=custom-login&utm_campaign=eddri\" target=\"_blank\"><img class=\"eddri-thumbnail\" src=\"https:\/\/i.imgur.com\/mhuymPG.jpg\"><\/a> <p>Protect your wp-login.php page from brute force attacks.<\/p> <\/div> <h3>Stealth Login<\/h3> <span class=\"eddri-status\">Not Installed<\/span> <a class=\"button\" data-edd-install=\"Custom Login Stealth Login\">Install<\/a> <a class=\"button show-if-not-purchased\" data-toggle=\"purchase-links-1\" style=\"display:none\">Purchase License<\/a> <div id=\"purchase-links-1\" style=\"display:none\"> <ul> <li><a href=\"http:\/\/extendd.com\/checkout?edd_action=straight_to_gateway&download_id=7819&edd_options[price_id]=0\">Single site license ($25)<\/a><\/li> <li><a href=\"http:\/\/extendd.com\/checkout?edd_action=straight_to_gateway&download_id=7819&edd_options[price_id]=1\">Up to 5 site licenses ($70)<\/a><\/li> <li><a href=\"http:\/\/extendd.com\/checkout?edd_action=straight_to_gateway&download_id=7819&edd_options[price_id]=2\">Unlimited site licenses ($100)<\/a><\/li> <\/ul> <\/div> <\/div> <\/div><div class=\"eddri-addon\"> <div class=\"eddri-addon-container\"> <div class=\"eddri-img-wrap\"> <a href=\"http:\/\/extendd.com\/plugin\/custom-login-page-template\/?utm_source=wordpressorg&utm_medium=custom-login&utm_campaign=eddri\" target=\"_blank\"><img class=\"eddri-thumbnail\" src=\"https:\/\/i.imgur.com\/A0rzS9q.jpg\"><\/a> <p>Add a login form to any WordPress page.<\/p> <\/div> <h3>Page Template<\/h3> <span class=\"eddri-status\">Not Installed<\/span> <a class=\"button\" data-edd-install=\"Custom Login Page Template\">Install<\/a> <a class=\"button show-if-not-purchased\" data-toggle=\"purchase-links-2\" style=\"display:none\">Purchase License<\/a> <div id=\"purchase-links-2\" style=\"display:none\"> <ul> <li><a href=\"http:\/\/extendd.com\/checkout?edd_action=straight_to_gateway&download_id=13528\">One price! ($35)<\/a><\/li> <\/ul> <\/div> <\/div> <\/div><div class=\"eddri-addon\"> <div class=\"eddri-addon-container\"> <div class=\"eddri-img-wrap\"> <a href=\"http:\/\/extendd.com\/plugin\/wordpress-login-redirects\/?utm_source=wordpressorg&utm_medium=custom-login&utm_campaign=eddri\" target=\"_blank\"><img class=\"eddri-thumbnail\" src=\"https:\/\/i.imgur.com\/aNGoyAa.jpg\"><\/a> <p>Manage redirects after logging in.<\/p> <\/div> <h3>Login Redirects<\/h3> <span class=\"eddri-status\">Not Installed<\/span> <a class=\"button\" data-edd-install=\"WordPress Login Redirects\">Install<\/a> <a class=\"button show-if-not-purchased\" data-toggle=\"purchase-links-3\" style=\"display:none\">Purchase License<\/a> <div id=\"purchase-links-3\" style=\"display:none\"> <ul> <li><a href=\"http:\/\/extendd.com\/checkout?edd_action=straight_to_gateway&download_id=14333&edd_options[price_id]=0\">Single site license ($30)<\/a><\/li> <li><a href=\"http:\/\/extendd.com\/checkout?edd_action=straight_to_gateway&download_id=14333&edd_options[price_id]=1\">Up to 5 site licenses ($70)<\/a><\/li> <li><a href=\"http:\/\/extendd.com\/checkout?edd_action=straight_to_gateway&download_id=14333&edd_options[price_id]=2\">Unlimited site licenses ($150)<\/a><\/li> <\/ul> <\/div> <\/div> <\/div>"}
|
functions/install.php
ADDED
@@ -0,0 +1,60 @@
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Install Function
|
4 |
+
*
|
5 |
+
* @package Custom Login
|
6 |
+
* @subpackage Install Function
|
7 |
+
* @copyright Copyright (c) 2013, Austin Passy
|
8 |
+
* @license http://opensource.org/licenses/gpl-2.0.php GNU Public License
|
9 |
+
* @since 2.0
|
10 |
+
*/
|
11 |
+
|
12 |
+
// Exit if accessed directly
|
13 |
+
if ( ! defined( 'ABSPATH' ) ) exit;
|
14 |
+
|
15 |
+
/**
|
16 |
+
* Install
|
17 |
+
*
|
18 |
+
* Runs on plugin install.
|
19 |
+
*
|
20 |
+
* @access private
|
21 |
+
* @since 1.0
|
22 |
+
* @return void
|
23 |
+
*/
|
24 |
+
function ap_custom_login_install() {
|
25 |
+
|
26 |
+
// Setup the Custom Post Type
|
27 |
+
ap_custom_login_post_types();
|
28 |
+
|
29 |
+
// Clear the permalinks
|
30 |
+
flush_rewrite_rules();
|
31 |
+
|
32 |
+
$cl_settings_page = get_page_by_title( __( 'Custom Login Settings', 'custom-login' ), '', 'custom_login' );
|
33 |
+
|
34 |
+
// Checks if the purchase page option exists
|
35 |
+
if ( empty( $cl_settings_page ) ) {
|
36 |
+
|
37 |
+
// Settings Page
|
38 |
+
$settings = wp_insert_post(
|
39 |
+
array(
|
40 |
+
'post_title' => __( 'Custom Login Settings', 'custom-login' ),
|
41 |
+
'post_content' => '',
|
42 |
+
'post_status' => 'publish',
|
43 |
+
'post_author' => 1,
|
44 |
+
'post_type' => 'custom_login',
|
45 |
+
'comment_status' => 'closed',
|
46 |
+
'ping_status' => 'closed',
|
47 |
+
)
|
48 |
+
);
|
49 |
+
|
50 |
+
// update_option( 'custom_login_version', CUSTOM_LOGIN_VERSION );
|
51 |
+
}
|
52 |
+
|
53 |
+
// Bail if activating from network, or bulk
|
54 |
+
if ( is_network_admin() || isset( $_GET['activate-multi'] ) )
|
55 |
+
return;
|
56 |
+
|
57 |
+
// Add the transient to redirect
|
58 |
+
set_transient( '_custom_login_activation_redirect', true, 30 );
|
59 |
+
}
|
60 |
+
register_activation_hook( CUSTOM_LOGIN_FILE, 'ap_custom_login_install' );
|
functions/post-types.php
ADDED
@@ -0,0 +1,52 @@
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Post Type Functions
|
4 |
+
*
|
5 |
+
* @package Custom Login
|
6 |
+
* @subpackage Post Type Functions
|
7 |
+
* @copyright Copyright (c) 2013, Austin Passy
|
8 |
+
* @license http://opensource.org/licenses/gpl-2.0.php GNU Public License
|
9 |
+
* @since 2.0
|
10 |
+
*/
|
11 |
+
|
12 |
+
// Exit if accessed directly
|
13 |
+
if ( ! defined( 'ABSPATH' ) ) exit;
|
14 |
+
|
15 |
+
/**
|
16 |
+
* Setup Core Post Type
|
17 |
+
*
|
18 |
+
* @access private
|
19 |
+
* @since 2.0
|
20 |
+
* @return void
|
21 |
+
*/
|
22 |
+
function ap_custom_login_post_types() {
|
23 |
+
/** Payment Post Type */
|
24 |
+
$labels = array(
|
25 |
+
'name' => _x('Logins', 'post type general name', 'custom-login' ),
|
26 |
+
'singular_name' => _x('Login', 'post type singular name', 'custom-login' ),
|
27 |
+
'add_new' => __( 'Add New', 'custom-login' ),
|
28 |
+
'add_new_item' => __( 'Add New Login', 'custom-login' ),
|
29 |
+
'edit_item' => __( 'Edit Login', 'custom-login' ),
|
30 |
+
'new_item' => __( 'New Login', 'custom-login' ),
|
31 |
+
'all_items' => __( 'All Logins', 'custom-login' ),
|
32 |
+
'view_item' => __( 'View Login', 'custom-login' ),
|
33 |
+
'search_items' => __( 'Search Logins', 'custom-login' ),
|
34 |
+
'not_found' => __( 'No Logins found', 'custom-login' ),
|
35 |
+
'not_found_in_trash'=> __( 'No Logins found in Trash', 'custom-login' ),
|
36 |
+
'parent_item_colon' => '',
|
37 |
+
'menu_name' => __( 'Custom Login', 'custom-login' )
|
38 |
+
);
|
39 |
+
|
40 |
+
$args = array(
|
41 |
+
'labels' => $labels,
|
42 |
+
'public' => false,
|
43 |
+
'query_var' => false,
|
44 |
+
'rewrite' => false,
|
45 |
+
'capability_type' => 'page',
|
46 |
+
'map_meta_cap' => true,
|
47 |
+
'supports' => array( 'title' ),
|
48 |
+
'can_export' => false
|
49 |
+
);
|
50 |
+
register_post_type( 'custom_login', $args );
|
51 |
+
}
|
52 |
+
add_action( 'init', 'ap_custom_login_post_types', 75 );
|
functions/upgrades/upgrade-functions.php
ADDED
@@ -0,0 +1,149 @@
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Upgrade Functions
|
4 |
+
*
|
5 |
+
* @package Custom Login
|
6 |
+
* @copyright Copyright (c) 2013, Austin Passy
|
7 |
+
* @license http://opensource.org/licenses/gpl-2.0.php GNU Public License
|
8 |
+
* @since 2.0
|
9 |
+
*/
|
10 |
+
|
11 |
+
// Exit if accessed directly
|
12 |
+
if ( ! defined( 'ABSPATH' ) ) exit;
|
13 |
+
|
14 |
+
/**
|
15 |
+
* Display Upgrade Notices
|
16 |
+
*
|
17 |
+
* @access private
|
18 |
+
* @since 2.0
|
19 |
+
* @return void
|
20 |
+
*/
|
21 |
+
function ap_custom_login_show_upgrade_notices() {
|
22 |
+
if ( isset( $_GET['page'] ) && $_GET['page'] == 'custom-login-upgrades' )
|
23 |
+
return; // Don't show notices on the upgrades page
|
24 |
+
|
25 |
+
$login = CUSTOMLOGIN();
|
26 |
+
|
27 |
+
$old_settings = get_option( 'custom_login_settings' );
|
28 |
+
|
29 |
+
/* New install */
|
30 |
+
if ( empty( $old_settings ) )
|
31 |
+
return;
|
32 |
+
|
33 |
+
if ( !empty( $old_settings ) && !empty( $old_settings['version'] ) )
|
34 |
+
$cl_version = $old_settings['version'];
|
35 |
+
else
|
36 |
+
$cl_version = $login->version;
|
37 |
+
|
38 |
+
//versions less than 2.0
|
39 |
+
if ( version_compare( $cl_version, '2.0', '<' ) ) {
|
40 |
+
printf(
|
41 |
+
'<div class="updated"><p>' . esc_html__( 'Custom Login needs to be upgraded, please click %shere%s to start the upgrade.', $login->domain ) . '</p></div>',
|
42 |
+
'<a href="' . esc_url( admin_url( 'options.php?page=custom-login-upgrades' ) ) . '">',
|
43 |
+
'</a>'
|
44 |
+
);
|
45 |
+
}
|
46 |
+
}
|
47 |
+
add_action( 'admin_notices', 'ap_custom_login_show_upgrade_notices' );
|
48 |
+
|
49 |
+
/**
|
50 |
+
* Triggers all upgrade functions
|
51 |
+
*
|
52 |
+
* This function is usually triggered via ajax
|
53 |
+
*
|
54 |
+
* @access private
|
55 |
+
* @since 2.0
|
56 |
+
*/
|
57 |
+
function ap_custom_login_trigger_upgrades() {
|
58 |
+
$login = CUSTOMLOGIN();
|
59 |
+
|
60 |
+
$old_settings = get_option( 'custom_login_settings' );
|
61 |
+
|
62 |
+
if ( !empty( $old_settings ) && !empty( $old_settings['version'] ) )
|
63 |
+
$cl_version = $old_settings['version'];
|
64 |
+
else
|
65 |
+
$cl_version = $login->version;
|
66 |
+
|
67 |
+
if ( version_compare( $cl_version, '2.0', '<' ) ) {
|
68 |
+
ap_custom_login_v2_0_0_upgrades();
|
69 |
+
}
|
70 |
+
|
71 |
+
if ( DOING_AJAX ) die( 'complete' ); // Let ajax know we are done
|
72 |
+
}
|
73 |
+
add_action( 'wp_ajax_custom_login_trigger_upgrades', 'ap_custom_login_trigger_upgrades' );
|
74 |
+
|
75 |
+
/**
|
76 |
+
* Upgrade routine for v2.0.0
|
77 |
+
*
|
78 |
+
* @access private
|
79 |
+
* @since 2.0
|
80 |
+
* @return void
|
81 |
+
*/
|
82 |
+
function ap_custom_login_v2_0_0_upgrades() {
|
83 |
+
$login = CUSTOMLOGIN();
|
84 |
+
$ss = CUSTOM_LOGIN_SCRIPT_STYLES();
|
85 |
+
$old_settings = get_option( 'custom_login_settings' );
|
86 |
+
$new_settings = get_option( $login->id, array() );
|
87 |
+
|
88 |
+
$new_settings['active'] = $login->version;
|
89 |
+
$new_settings['active'] = true === $old_settings['custom'] ? 'on' : 'off';
|
90 |
+
$new_settings['html_background_color'] = $ss->is_rgba( $old_settings['html_background_color'] ) ? $ss->rgba2hex( $old_settings['html_background_color'] ) : $old_settings['html_background_color'];
|
91 |
+
$new_settings['html_background_color_checkbox'] = 'off';
|
92 |
+
$new_settings['html_background_color_opacity'] = '';
|
93 |
+
$new_settings['html_background_url'] = $old_settings['html_background_url'];
|
94 |
+
$new_settings['html_background_position'] = 'left top';
|
95 |
+
$new_settings['html_background_repeat'] = $old_settings['html_background_repeat'];
|
96 |
+
$new_settings['html_background_size'] = $old_settings['html_background_size'];
|
97 |
+
$new_settomgs['hide_wp_logo'] = 'on';
|
98 |
+
$new_settings['logo_background_url'] = $old_settings['login_form_logo'];
|
99 |
+
$new_settings['logo_background_position'] = 'top center';
|
100 |
+
$new_settings['logo_background_repeat'] = '';
|
101 |
+
$new_settings['logo_background_size'] = '';
|
102 |
+
$new_settings['login_form_background_color'] = $ss->is_rgba( $old_settings['html_background_color'] ) ? $ss->rgba2hex( $old_settings['login_form_background_color'] ) : $old_settings['login_form_background_color'];
|
103 |
+
$new_settings['login_form_background_color_checkbox'] = 'off';
|
104 |
+
$new_settings['login_form_background_color_opacity'] = '';
|
105 |
+
$new_settings['login_form_background_url'] = $old_settings['login_form_background'];
|
106 |
+
$new_settings['login_form_background_position'] = '';
|
107 |
+
$new_settings['login_form_background_repeat'] = '';
|
108 |
+
$new_settings['login_form_background_size'] = $old_settings['login_form_background_size'];
|
109 |
+
$new_settings['login_form_border_radius'] = $old_settings['login_form_border_radius'];
|
110 |
+
$new_settings['login_form_border_size'] = $old_settings['login_form_border'];
|
111 |
+
$new_settings['login_form_border_color'] = $ss->is_rgba( $old_settings['html_background_color'] ) ? $ss->rgba2hex( $old_settings['login_form_border_color'] ) : $old_settings['login_form_border_color'];
|
112 |
+
$new_settings['login_form_border_color_checkbox'] = 'off';
|
113 |
+
$new_settings['login_form_border_color_opacity'] = '';
|
114 |
+
$new_settings['login_form_box_shadow'] = $old_settings['login_form_box_shadow_1'] . 'px ' . $old_settings['login_form_box_shadow_2'] . 'px ' . $old_settings['login_form_box_shadow_3'] . 'px';
|
115 |
+
$new_settings['login_form_box_shadow_color'] = $ss->is_rgba( $old_settings['html_background_color'] ) ? $ss->rgba2hex( $old_settings['login_form_box_shadow_4'] ) : $old_settings['login_form_box_shadow_4'];
|
116 |
+
$new_settings['login_form_box_shadow_color_checkbox'] = 'off';
|
117 |
+
$new_settings['login_form_box_shadow_color_opacity'] = '';
|
118 |
+
$new_settings['label_color'] = $ss->is_rgba( $old_settings['html_background_color'] ) ? $ss->rgba2hex( $old_settings['label_color'] ) : $old_settings['label_color'];
|
119 |
+
$new_settings['label_color_checkbox'] = 'off';
|
120 |
+
$new_settings['label_color_opacity'] = '';
|
121 |
+
$new_settings['nav_color'] = '';
|
122 |
+
$new_settings['nav_color_checkbox'] = 'off';
|
123 |
+
$new_settings['nav_color_opacity'] = '';
|
124 |
+
$new_settings['nav_text_shadow_color'] = '';
|
125 |
+
$new_settings['nav_text_shadow_color_checkbox'] = 'off';
|
126 |
+
$new_settings['nav_text_shadow_color_opacity'] = '';
|
127 |
+
$new_settings['nav_hover_color'] = '';
|
128 |
+
$new_settings['nav_hover_color_checkbox'] = 'off';
|
129 |
+
$new_settings['nav_hover_color_opacity'] = '';
|
130 |
+
$new_settings['nav_text_shadow_hover_color'] = '';
|
131 |
+
$new_settings['nav_text_shadow_hover_color_checkbox'] = 'off';
|
132 |
+
$new_settings['nav_text_shadow_hover_color_opacity'] = '';
|
133 |
+
$new_settings['custom_css'] = esc_attr( $old_settings['custom_css'] );
|
134 |
+
$new_settings['custom_html'] = wp_specialchars_decode( stripslashes( $old_settings['custom_html'] ), 1, 0, 1 );
|
135 |
+
$new_settings['custom_jquery'] = esc_html( $old_settings['custom_jquery'] );
|
136 |
+
|
137 |
+
update_option( $login->id, $new_settings );
|
138 |
+
delete_option( 'custom_login_settings' );
|
139 |
+
return true;
|
140 |
+
}
|
141 |
+
|
142 |
+
/**
|
143 |
+
*
|
144 |
+
option_name: custom_login_settings
|
145 |
+
option_value:
|
146 |
+
a:30:{s:7:"version";s:5:"1.1.4";s:6:"custom";b:1;s:8:"gravatar";b:0;s:14:"hide_dashboard";b:0;s:19:"disable_presstrends";b:0;s:12:"hide_upgrade";b:0;s:16:"upgrade_complete";b:0;s:10:"custom_css";s:0:"";s:11:"custom_html";s:0:"";s:13:"custom_jquery";s:0:"";s:21:"html_border_top_color";s:0:"";s:26:"html_border_top_background";s:0:"";s:21:"html_background_color";s:0:"";s:19:"html_background_url";s:0:"";s:22:"html_background_repeat";s:8:"repeat-x";s:20:"html_background_size";s:5:"cover";s:15:"login_form_logo";s:0:"";s:27:"login_form_border_top_color";s:0:"";s:27:"login_form_background_color";s:0:"";s:21:"login_form_background";s:0:"";s:26:"login_form_background_size";s:5:"cover";s:24:"login_form_border_radius";s:2:"11";s:17:"login_form_border";s:1:"1";s:23:"login_form_border_color";s:0:"";s:23:"login_form_box_shadow_1";s:1:"5";s:23:"login_form_box_shadow_2";s:1:"5";s:23:"login_form_box_shadow_3";s:2:"18";s:23:"login_form_box_shadow_4";s:7:"#464646";s:22:"login_form_padding_top";b:1;s:11:"label_color";s:7:"#ffffff";}
|
147 |
+
|
148 |
+
a:46:{s:6:"active";s:2:"on";s:21:"html_background_color";s:0:"";s:30:"html_background_color_checkbox";s:3:"off";s:29:"html_background_color_opacity";s:1:"1";s:19:"html_background_url";s:0:"";s:24:"html_background_position";s:8:"left top";s:22:"html_background_repeat";s:9:"no-repeat";s:20:"html_background_size";s:4:"none";s:19:"logo_background_url";s:0:"";s:24:"logo_background_position";s:8:"left top";s:22:"logo_background_repeat";s:9:"no-repeat";s:20:"logo_background_size";s:4:"none";s:27:"login_form_background_color";s:0:"";s:36:"login_form_background_color_checkbox";s:3:"off";s:35:"login_form_background_color_opacity";s:1:"1";s:25:"login_form_background_url";s:0:"";s:30:"login_form_background_position";s:8:"left top";s:28:"login_form_background_repeat";s:9:"no-repeat";s:26:"login_form_background_size";s:4:"none";s:24:"login_form_border_radius";s:0:"";s:22:"login_form_border_size";s:0:"";s:23:"login_form_border_color";s:0:"";s:32:"login_form_border_color_checkbox";s:3:"off";s:31:"login_form_border_color_opacity";s:1:"1";s:21:"login_form_box_shadow";s:12:"5px 5px 10px";s:27:"login_form_box_shadow_color";s:0:"";s:36:"login_form_box_shadow_color_checkbox";s:3:"off";s:35:"login_form_box_shadow_color_opacity";s:1:"1";s:11:"label_color";s:0:"";s:20:"label_color_checkbox";s:3:"off";s:19:"label_color_opacity";s:1:"1";s:9:"nav_color";s:0:"";s:18:"nav_color_checkbox";s:3:"off";s:17:"nav_color_opacity";s:1:"1";s:21:"nav_text_shadow_color";s:0:"";s:30:"nav_text_shadow_color_checkbox";s:3:"off";s:29:"nav_text_shadow_color_opacity";s:1:"1";s:15:"nav_hover_color";s:0:"";s:24:"nav_hover_color_checkbox";s:3:"off";s:23:"nav_hover_color_opacity";s:1:"1";s:27:"nav_text_shadow_hover_color";s:0:"";s:36:"nav_text_shadow_hover_color_checkbox";s:3:"off";s:35:"nav_text_shadow_hover_color_opacity";s:1:"1";s:10:"custom_css";s:0:"";s:11:"custom_html";s:0:"";s:13:"custom_jquery";s:0:"";}
|
149 |
+
**/
|
functions/upgrades/upgrades.php
ADDED
@@ -0,0 +1,61 @@
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Upgrade Screen
|
4 |
+
*
|
5 |
+
* @package Custom Login
|
6 |
+
* @subpackage functions/upgrades
|
7 |
+
* @copyright Copyright (c) 2013, Austin Passy
|
8 |
+
* @license http://opensource.org/licenses/gpl-2.0.php GNU Public License
|
9 |
+
* @since 2.0
|
10 |
+
*/
|
11 |
+
|
12 |
+
// Exit if accessed directly
|
13 |
+
if ( !defined( 'ABSPATH' ) ) exit;
|
14 |
+
|
15 |
+
/**
|
16 |
+
* Render Upgrades Screen
|
17 |
+
*
|
18 |
+
* @access private
|
19 |
+
* @since 2.0
|
20 |
+
* @return void
|
21 |
+
*/
|
22 |
+
function ap_custom_login_upgrades_screen() {
|
23 |
+
$login = CUSTOMLOGIN(); ?>
|
24 |
+
<div class="wrap">
|
25 |
+
<h2><?php _e( 'Custom Login - Upgrades', $login->domain ); ?></h2>
|
26 |
+
<div id="custom-login-upgrade-status">
|
27 |
+
<p>
|
28 |
+
<?php _e( 'The upgrade process has started, please be patient. This could take several minutes. You will be automatically redirected when the upgrade is finished.', $login->domain ); ?>
|
29 |
+
<img src="<?php echo esc_url( admin_url( 'images/loading.gif' ) ); ?>" id="custom-login-upgrade-loader"/>
|
30 |
+
</p>
|
31 |
+
</div>
|
32 |
+
<script type="text/javascript">
|
33 |
+
jQuery( document ).ready( function() {
|
34 |
+
// Trigger upgrades on page load
|
35 |
+
var data = { action: 'custom_login_trigger_upgrades' };
|
36 |
+
jQuery.post( ajaxurl, data, function (response) {
|
37 |
+
if ( response == 'complete' ) {
|
38 |
+
jQuery('#custom-login-upgrade-loader').hide();
|
39 |
+
document.location.href = 'index.php?page=custom-login-about'; // Redirect to the welcome page
|
40 |
+
}
|
41 |
+
});
|
42 |
+
});
|
43 |
+
</script>
|
44 |
+
</div>
|
45 |
+
<?php
|
46 |
+
}
|
47 |
+
|
48 |
+
/**
|
49 |
+
* Add Options Link
|
50 |
+
*
|
51 |
+
* Creates the admin submenu pages.
|
52 |
+
*
|
53 |
+
* @access private
|
54 |
+
* @since 1.0
|
55 |
+
* @return void
|
56 |
+
*/
|
57 |
+
function ap_custom_login_upgrades_page() {
|
58 |
+
$login = CUSTOMLOGIN();
|
59 |
+
add_submenu_page( null, __( 'Custom Login Upgrades', $login->domain ), __( 'Custom Login Upgrades', $login->domain ), 'update_plugins', 'custom-login-upgrades', 'ap_custom_login_upgrades_screen' );
|
60 |
+
}
|
61 |
+
add_action( 'admin_menu', 'ap_custom_login_upgrades_page', 10 );
|
languages/custom-login-es_ES.mo
DELETED
Binary file
|
languages/custom-login-es_ES.po
DELETED
@@ -1,157 +0,0 @@
|
|
1 |
-
# Translation of the WordPress plugin Custom Login 0.8 by Austin Passy.
|
2 |
-
# Copyright (C) 2010 Austin Passy
|
3 |
-
# This file is distributed under the same license as the Custom Login package.
|
4 |
-
# FIRST AUTHOR <EMAIL@ADDRESS>, 2010.
|
5 |
-
#
|
6 |
-
msgid ""
|
7 |
-
msgstr ""
|
8 |
-
"Project-Id-Version: Custom Login 0.8\n"
|
9 |
-
"Report-Msgid-Bugs-To: http://wordpress.org/tag/custom-login\n"
|
10 |
-
"POT-Creation-Date: 2010-09-16 22:04+0000\n"
|
11 |
-
"PO-Revision-Date: 2012-03-13 05:22-0600\n"
|
12 |
-
"Last-Translator: AA\n"
|
13 |
-
"Language-Team: -es_ES <arcos.alejandro@gmail.com>\n"
|
14 |
-
"MIME-Version: 1.0\n"
|
15 |
-
"Content-Type: text/plain; charset=utf-8\n"
|
16 |
-
"Content-Transfer-Encoding: 8bit\n"
|
17 |
-
"X-Poedit-Country: MEXICO\n"
|
18 |
-
|
19 |
-
#. #-#-#-#-# plugin.pot (Custom Login 0.8) #-#-#-#-#
|
20 |
-
#. Plugin Name of the plugin/theme
|
21 |
-
#: library/admin/admin.php:70
|
22 |
-
msgid "Custom Login"
|
23 |
-
msgstr "Custom Login"
|
24 |
-
|
25 |
-
#: library/admin/admin.php:215
|
26 |
-
msgid "Avtivation — <em>to infinity and beyond</em>"
|
27 |
-
msgstr "Avtivation — <em>al infinito y más allá</em>"
|
28 |
-
|
29 |
-
#: library/admin/admin.php:217
|
30 |
-
msgid "Announcements"
|
31 |
-
msgstr "Anuncios"
|
32 |
-
|
33 |
-
#: library/admin/admin.php:219
|
34 |
-
msgid "General Settings"
|
35 |
-
msgstr "Configuración general"
|
36 |
-
|
37 |
-
#: library/admin/admin.php:221
|
38 |
-
msgid "Advanced Settings"
|
39 |
-
msgstr "Configuración avanzada"
|
40 |
-
|
41 |
-
#: library/admin/admin.php:223
|
42 |
-
msgid "About Custom Login"
|
43 |
-
msgstr "Acerca de Custom Login"
|
44 |
-
|
45 |
-
#: library/admin/admin.php:225
|
46 |
-
msgid "Support Custom Login"
|
47 |
-
msgstr "Soporte de Custom Login"
|
48 |
-
|
49 |
-
#: library/admin/admin.php:227
|
50 |
-
msgid "Preview your work, <em>Master</em>"
|
51 |
-
msgstr "Vista previa de su trabajo, <em>Maestro</em>"
|
52 |
-
|
53 |
-
#: library/admin/admin.php:229
|
54 |
-
msgid "TheFrosty Network"
|
55 |
-
msgstr "TheFrosty Network"
|
56 |
-
|
57 |
-
#: library/admin/admin.php:242
|
58 |
-
msgid "Activate:"
|
59 |
-
msgstr "Activar:"
|
60 |
-
|
61 |
-
#: library/admin/admin.php:253
|
62 |
-
msgid "Gravatar:"
|
63 |
-
msgstr "Gravatar:"
|
64 |
-
|
65 |
-
#: library/admin/admin.php:286
|
66 |
-
msgid "Plugin:"
|
67 |
-
msgstr "Plugin:"
|
68 |
-
|
69 |
-
#: library/admin/admin.php:290
|
70 |
-
msgid "Author:"
|
71 |
-
msgstr "Autor:"
|
72 |
-
|
73 |
-
#: library/admin/admin.php:294
|
74 |
-
msgid "Description:"
|
75 |
-
msgstr "Descripción:"
|
76 |
-
|
77 |
-
#: library/admin/admin.php:309
|
78 |
-
msgid "Donate:"
|
79 |
-
msgstr "Donar:"
|
80 |
-
|
81 |
-
#: library/admin/admin.php:310
|
82 |
-
msgid "<a href=\"https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=X4JPT57AWMTYW\">PayPal</a>."
|
83 |
-
msgstr "<a href=\"https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=X4JPT57AWMTYW\">PayPal</a>."
|
84 |
-
|
85 |
-
#: library/admin/admin.php:313
|
86 |
-
msgid "Rate:"
|
87 |
-
msgstr "Calificar:"
|
88 |
-
|
89 |
-
#: library/admin/admin.php:314
|
90 |
-
msgid "<a href=\"http://wordpress.org/extend/plugins/custom-login/\">This plugin on WordPress.org</a>."
|
91 |
-
msgstr "<a href=\"http://wordpress.org/extend/plugins/custom-login/\">Este plugin en WordPress.org</a>."
|
92 |
-
|
93 |
-
#: library/admin/admin.php:317
|
94 |
-
msgid "Share:"
|
95 |
-
msgstr "Compartir:"
|
96 |
-
|
97 |
-
#: library/admin/admin.php:318
|
98 |
-
msgid "Your design on <a href=\"http://www.flickr.com/groups/custom-login/\"><span style=\"color:#0066DC;font-weight:bold;\">Flick</span><span style=\"color:#ff0084;font-weight:bold;\">r</span></a>."
|
99 |
-
msgstr "Su diseño en <a href=\"http://www.flickr.com/groups/custom-login/\"><span style=\"color:#0066DC;font-weight:bold;\">Flick</span><span style=\"color:#ff0084;font-weight:bold;\">r</span></a>."
|
100 |
-
|
101 |
-
#: library/admin/admin.php:321
|
102 |
-
msgid "Support:"
|
103 |
-
msgstr "Soporte:"
|
104 |
-
|
105 |
-
#: library/admin/admin.php:322
|
106 |
-
msgid "<a href=\"http://wordpress.org/tags/custom-login\">WordPress support forums</a>."
|
107 |
-
msgstr "<a href=\"http://wordpress.org/tags/custom-login\">Foros de soporte de WordPress</a>."
|
108 |
-
|
109 |
-
#: library/admin/admin.php:347
|
110 |
-
msgid "Custom CSS:"
|
111 |
-
msgstr "CSS a la medida"
|
112 |
-
|
113 |
-
#: library/admin/admin.php:362
|
114 |
-
msgid "Custom HTML:"
|
115 |
-
msgstr "HTML a la medida"
|
116 |
-
|
117 |
-
#: library/admin/admin.php:602
|
118 |
-
msgid "Don′t you feel good. You just saved me."
|
119 |
-
msgstr "Siéntase muy bien. Acabas de salvarme."
|
120 |
-
|
121 |
-
#: library/admin/admin.php:620
|
122 |
-
msgid "Custom Login Settings"
|
123 |
-
msgstr "Configuración de Custom Login"
|
124 |
-
|
125 |
-
#: library/admin/admin.php:639
|
126 |
-
msgid "Update Settings"
|
127 |
-
msgstr "Actualizar la configuración"
|
128 |
-
|
129 |
-
#: library/admin/admin.php:704
|
130 |
-
msgid "Settings"
|
131 |
-
msgstr "Opciones"
|
132 |
-
|
133 |
-
#: library/admin/admin.php:723
|
134 |
-
#, php-format
|
135 |
-
msgid "Custom Login plugin is not configured yet. It will use the defualt theme unless you configure the %1$s."
|
136 |
-
msgstr "El plugin Custom Login no está configurado aún. Usará el tema instalado por omisión a menos que usted lo configure el %1$s."
|
137 |
-
|
138 |
-
#: library/admin/dashboard.php:9
|
139 |
-
msgid "The Frosty Network <em>feeds</em>"
|
140 |
-
msgstr "El feed de Frosty Network"
|
141 |
-
|
142 |
-
#. Plugin URI of the plugin/theme
|
143 |
-
msgid "http://austinpassy.com/wordpress-plugins/custom-login"
|
144 |
-
msgstr "http://austinpassy.com/wordpress-plugins/custom-login"
|
145 |
-
|
146 |
-
#. Description of the plugin/theme
|
147 |
-
msgid "A simple way to customize your WordPress login screen! Use the built in, easy to use <a href=\"./options-general.php?page=custom-login\">settings</a> page to do the work for you. So simple a caveboy can do it! Now featuring a HTML & CSS box for advanced users. Share you designs on <a href=\"http://flickr.com/groups/custom-login/\">Flickr</a>!"
|
148 |
-
msgstr "Una forma sencila de configurar su pantalla de entrada. Modifique las opciones fáciles de usar para que hagan el trabajo por usted. ¡Tan sencillo que cualquiera puede hacerlo!. hora cuenta con soporte para HTML & CSS en su porpio campo para los usuarios avanzados. ¡Compartá sus diseños en <a href=\"http://flickr.com/groups/custom-login/\">Flickr</a>!"
|
149 |
-
|
150 |
-
#. Author of the plugin/theme
|
151 |
-
msgid "Austin Passy"
|
152 |
-
msgstr "Austin Passy"
|
153 |
-
|
154 |
-
#. Author URI of the plugin/theme
|
155 |
-
msgid "http://frostywebdesigns.com"
|
156 |
-
msgstr "http://frostywebdesigns.com"
|
157 |
-
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
languages/custom-login-tr_TR.mo
CHANGED
Binary file
|
languages/custom-login-tr_TR.po
DELETED
@@ -1,490 +0,0 @@
|
|
1 |
-
msgid ""
|
2 |
-
msgstr ""
|
3 |
-
"Project-Id-Version: Custom Login\n"
|
4 |
-
"Report-Msgid-Bugs-To: http://wordpress.org/tag/custom-login\n"
|
5 |
-
"POT-Creation-Date: 2012-04-02 16:51:21+00:00\n"
|
6 |
-
"PO-Revision-Date: 2013-01-11 14:37+0200\n"
|
7 |
-
"Last-Translator: HakanEr <hakanerwptr@gmail.com>\n"
|
8 |
-
"Language-Team: hakaner <hakanerwptr@gmail.com>\n"
|
9 |
-
"Language: tr_TR\n"
|
10 |
-
"MIME-Version: 1.0\n"
|
11 |
-
"Content-Type: text/plain; charset=UTF-8\n"
|
12 |
-
"Content-Transfer-Encoding: 8bit\n"
|
13 |
-
"X-Poedit-KeywordsList: _;gettext;gettext_noop;__;_e\n"
|
14 |
-
"X-Poedit-Basepath: .\n"
|
15 |
-
"Plural-Forms: nplurals=2; plural=n != 1;\n"
|
16 |
-
"X-Poedit-SourceCharset: UTF-8\n"
|
17 |
-
"X-Generator: Poedit 1.5.4\n"
|
18 |
-
"X-Poedit-SearchPath-0: .\n"
|
19 |
-
|
20 |
-
#: library/admin/admin.php:74
|
21 |
-
msgid "Custom Login"
|
22 |
-
msgstr "Custom Login"
|
23 |
-
|
24 |
-
#: library/admin/admin.php:75
|
25 |
-
msgid "Custom Login Upgrade"
|
26 |
-
msgstr "Custom Login Yükseltme"
|
27 |
-
|
28 |
-
#: library/admin/admin.php:75 library/admin/admin.php:964
|
29 |
-
msgid "Upgrade"
|
30 |
-
msgstr "Yükselt"
|
31 |
-
|
32 |
-
#: library/admin/admin.php:271
|
33 |
-
msgid "Avtivation — <em>to infinity and beyond</em>"
|
34 |
-
msgstr "EtkinleÅŸtirme — <em>sonsuzluk ve ötesine</em>"
|
35 |
-
|
36 |
-
#: library/admin/admin.php:273
|
37 |
-
msgid "Announcements"
|
38 |
-
msgstr "Duyurular"
|
39 |
-
|
40 |
-
#: library/admin/admin.php:275
|
41 |
-
msgid "About Custom Login"
|
42 |
-
msgstr "Custom Login Hakkında"
|
43 |
-
|
44 |
-
#: library/admin/admin.php:277
|
45 |
-
msgid "Support Custom Login"
|
46 |
-
msgstr "Custom Login Destekle"
|
47 |
-
|
48 |
-
#: library/admin/admin.php:279
|
49 |
-
msgid "Dashboard Widget"
|
50 |
-
msgstr "Pano Widget"
|
51 |
-
|
52 |
-
#: library/admin/admin.php:281
|
53 |
-
msgid "Preview your work, <em>Master</em>"
|
54 |
-
msgstr "Yaptığın işin ön izlemesi, <em>Üstat</em>"
|
55 |
-
|
56 |
-
#: library/admin/admin.php:285 library/admin/admin.php:286
|
57 |
-
msgid "Upgrade Custom Login"
|
58 |
-
msgstr "Custom Login Yükselt"
|
59 |
-
|
60 |
-
#: library/admin/admin.php:288
|
61 |
-
msgid "General Settings"
|
62 |
-
msgstr "Genel Ayarlar"
|
63 |
-
|
64 |
-
#: library/admin/admin.php:290
|
65 |
-
msgid "Advanced Settings"
|
66 |
-
msgstr "GeliÅŸmiÅŸ Ayarlar"
|
67 |
-
|
68 |
-
#: library/admin/admin.php:292
|
69 |
-
msgid "TheFrosty Network"
|
70 |
-
msgstr "TheFrosty Ağı"
|
71 |
-
|
72 |
-
#: library/admin/admin.php:305
|
73 |
-
msgid "Activate:"
|
74 |
-
msgstr "EtkinleÅŸtir:"
|
75 |
-
|
76 |
-
#: library/admin/admin.php:310
|
77 |
-
msgid ""
|
78 |
-
"Check this box to use your own CSS, leave unchecked to use the default style."
|
79 |
-
msgstr ""
|
80 |
-
"Bu kutuyu işaretleyerek kendi CSS inizi kullanın, varsayılan stil için boş "
|
81 |
-
"bırakın."
|
82 |
-
|
83 |
-
#: library/admin/admin.php:315
|
84 |
-
msgid "Gravatar:"
|
85 |
-
msgstr "Gravatar:"
|
86 |
-
|
87 |
-
#: library/admin/admin.php:320
|
88 |
-
msgid "This feature only works for sites with registration enabled."
|
89 |
-
msgstr "Bu özellik yalnızca üye olma seçeneği etkin olan siteler için çalışır."
|
90 |
-
|
91 |
-
#: library/admin/admin.php:320
|
92 |
-
msgid "Check this box to activate a AJAX Gravatar image for registration."
|
93 |
-
msgstr ""
|
94 |
-
"Üye kaydında AJAX Gravatar resimlerini açmak için bu kutuyu işaretleyin."
|
95 |
-
|
96 |
-
#: library/admin/admin.php:347
|
97 |
-
msgid "Plugin:"
|
98 |
-
msgstr "Eklenti:"
|
99 |
-
|
100 |
-
#: library/admin/admin.php:351
|
101 |
-
msgid "Author:"
|
102 |
-
msgstr "Yazar:"
|
103 |
-
|
104 |
-
#: library/admin/admin.php:355
|
105 |
-
msgid "Description:"
|
106 |
-
msgstr "Açıklama:"
|
107 |
-
|
108 |
-
#: library/admin/admin.php:393
|
109 |
-
msgid "Thanks for purchasing the plugin! Here is your download link: "
|
110 |
-
msgstr "Eklentiyi satın aldığınız için teşekkürler! İndirme linkiniz burada:"
|
111 |
-
|
112 |
-
#: library/admin/admin.php:425
|
113 |
-
msgid "Hide the upgrade form?"
|
114 |
-
msgstr "Yükseltme formunu gizle?"
|
115 |
-
|
116 |
-
#: library/admin/admin.php:434
|
117 |
-
msgid ""
|
118 |
-
"Want to upgrade to Pro? If you've purchase the plugin login below to get "
|
119 |
-
"your download link. Need a login? Click %s to purchase the plugin."
|
120 |
-
msgstr ""
|
121 |
-
"Pro sürüme yükseltmek mi istiyorsunuz? Eğer eklentiyi satın aldıysanız "
|
122 |
-
"indirme linkiniz için alttan giriş yapın. Giriş yapmak mı istiyorsunuz? %s "
|
123 |
-
"tıklayarak satın alın."
|
124 |
-
|
125 |
-
#: library/admin/admin.php:466
|
126 |
-
msgid "Upgrade to Custom Login PRO"
|
127 |
-
msgstr "Custom Login PRO Yükselt"
|
128 |
-
|
129 |
-
#: library/admin/admin.php:470
|
130 |
-
msgid "You have already downloaded the plugin, download again?"
|
131 |
-
msgstr "Ekletiyi zaten indirdin, tekrar indirmek ister misin?"
|
132 |
-
|
133 |
-
#: library/admin/admin.php:471 library/admin/admin.php:899
|
134 |
-
msgid "Get download link"
|
135 |
-
msgstr "İndirme bağlantısını al"
|
136 |
-
|
137 |
-
#: library/admin/admin.php:485
|
138 |
-
msgid "Donate:"
|
139 |
-
msgstr "Bağış:"
|
140 |
-
|
141 |
-
#: library/admin/admin.php:486
|
142 |
-
msgid ""
|
143 |
-
"<a href=\"https://www.paypal.com/cgi-bin/webscr?cmd=_s-"
|
144 |
-
"xclick&hosted_button_id=X4JPT57AWMTYW\">PayPal</a>."
|
145 |
-
msgstr ""
|
146 |
-
"<a href=\"https://www.paypal.com/cgi-bin/webscr?cmd=_s-"
|
147 |
-
"xclick&hosted_button_id=X4JPT57AWMTYW\">PayPal</a>."
|
148 |
-
|
149 |
-
#: library/admin/admin.php:489
|
150 |
-
msgid "Rate:"
|
151 |
-
msgstr "Oy ver:"
|
152 |
-
|
153 |
-
#: library/admin/admin.php:490
|
154 |
-
msgid ""
|
155 |
-
"<a href=\"http://wordpress.org/extend/plugins/custom-login/\">This plugin on "
|
156 |
-
"WordPress.org</a>."
|
157 |
-
msgstr ""
|
158 |
-
"<a href=\"http://wordpress.org/extend/plugins/custom-login/\">WordPress.org "
|
159 |
-
"eklenti sayfasına gidin</a>."
|
160 |
-
|
161 |
-
#: library/admin/admin.php:493
|
162 |
-
msgid "Share:"
|
163 |
-
msgstr "PaylaÅŸ:"
|
164 |
-
|
165 |
-
#: library/admin/admin.php:494
|
166 |
-
msgid ""
|
167 |
-
"Your design on <a href=\"http://www.flickr.com/groups/custom-login/\"><span "
|
168 |
-
"style=\"color:#0066DC;font-weight:bold;\">Flick</span><span style=\"color:"
|
169 |
-
"#ff0084;font-weight:bold;\">r</span></a>."
|
170 |
-
msgstr ""
|
171 |
-
"Tasarımınız <a href=\"http://www.flickr.com/groups/custom-login/\"><span "
|
172 |
-
"style=\"color:#0066DC;font-weight:bold;\">Flick</span><span style=\"color:"
|
173 |
-
"#ff0084;font-weight:bold;\">r</span></a>'da."
|
174 |
-
|
175 |
-
#: library/admin/admin.php:497
|
176 |
-
msgid "Support:"
|
177 |
-
msgstr "Destek:"
|
178 |
-
|
179 |
-
#: library/admin/admin.php:498
|
180 |
-
msgid ""
|
181 |
-
"<a href=\"http://wordpress.org/tags/custom-login\">WordPress support forums</"
|
182 |
-
"a>."
|
183 |
-
msgstr ""
|
184 |
-
"<a href=\"http://wordpress.org/tags/custom-login\">WordPress destek "
|
185 |
-
"forumları</a>."
|
186 |
-
|
187 |
-
#: library/admin/admin.php:501
|
188 |
-
msgid "Go PRO:"
|
189 |
-
msgstr "PRO Sürüm:"
|
190 |
-
|
191 |
-
#: library/admin/admin.php:517
|
192 |
-
msgid "Dashboard:"
|
193 |
-
msgstr "Pano:"
|
194 |
-
|
195 |
-
#: library/admin/admin.php:521
|
196 |
-
msgid "Hide the dashboard widget?"
|
197 |
-
msgstr "Pano widget gizlensin mi?"
|
198 |
-
|
199 |
-
#: library/admin/admin.php:534
|
200 |
-
msgid "Click here to see a live preview!"
|
201 |
-
msgstr "Buraya tıklayarak ön izlemeyi gör!"
|
202 |
-
|
203 |
-
#: library/admin/admin.php:535
|
204 |
-
msgid "(May not work as of WordPress 3.1.1)"
|
205 |
-
msgstr "(WordPress 3.1.1 ile çalışmayabilir)"
|
206 |
-
|
207 |
-
#: library/admin/admin.php:554
|
208 |
-
msgid "html border-top color:"
|
209 |
-
msgstr "html üst-çerçeve rengi:"
|
210 |
-
|
211 |
-
#: library/admin/admin.php:559
|
212 |
-
msgid ""
|
213 |
-
"Use HEX color <strong>with</strong> “#” <strong>or</strong> RGB/"
|
214 |
-
"A format.<br />\r\n"
|
215 |
-
"\t\t\t\t<strong>This is the top 15px border color section</strong><br />\r\n"
|
216 |
-
"\t\t\t\tExample: ¹<code>#121212</code> ²<code>rgba(255,255,255,0.4)"
|
217 |
-
"</code>"
|
218 |
-
msgstr ""
|
219 |
-
"HEX renk kodları <strong>ile</strong> “#” <strong>veya</"
|
220 |
-
"strong>RGB/A formatı kullanın.<br />\n"
|
221 |
-
"<strong>Bu üst çerçeve 15px renk bölümüdür</strong><br />\n"
|
222 |
-
"ÖrneÄŸin: ¹<code>#121212</code> ²<code>rgba(255,255,255,0.4)</code>"
|
223 |
-
|
224 |
-
#: library/admin/admin.php:568
|
225 |
-
msgid "html border-top background:"
|
226 |
-
msgstr "html üst-çerçeve arkaplanı:"
|
227 |
-
|
228 |
-
#: library/admin/admin.php:574
|
229 |
-
msgid ""
|
230 |
-
"This can replace the new background image at the top of the login screen. "
|
231 |
-
"Upload an image and put the full path here.<br />\r\n"
|
232 |
-
" Suggested size: <code>1px X 31px</code> (for a repeating "
|
233 |
-
"background)."
|
234 |
-
msgstr ""
|
235 |
-
"Bununla giriş ekranının üst kısmına yeni bir arka plan resmi "
|
236 |
-
"ekleyebilirsiniz. Bir resim yükleyin ve buraya tam yolunu koyun.<br />\n"
|
237 |
-
" Tavsiye boyut: <code>1px X 31px</code> (tekrarlayan bir arka "
|
238 |
-
"plan için)."
|
239 |
-
|
240 |
-
#: library/admin/admin.php:582
|
241 |
-
msgid "html background color:"
|
242 |
-
msgstr "html arkaplan rengi:"
|
243 |
-
|
244 |
-
#: library/admin/admin.php:587
|
245 |
-
msgid ""
|
246 |
-
"Use HEX color <strong>with</strong> “#” <strong>or</strong> RGB/"
|
247 |
-
"A format.<br />\r\n"
|
248 |
-
"\t\t\t\tExample: ¹<code>#121212</code> ²<code>rgba(255,255,255,0.4)"
|
249 |
-
"</code>"
|
250 |
-
msgstr ""
|
251 |
-
"HEX renk kodları <strong>ile</strong> “#” <strong>veya</"
|
252 |
-
"strong>RGB/A formatı kullanın.<br />\n"
|
253 |
-
"ÖrneÄŸin: ¹<code>#121212</code> ²<code>rgba(255,255,255,0.4)</code>"
|
254 |
-
|
255 |
-
#: library/admin/admin.php:595
|
256 |
-
msgid "html background url:"
|
257 |
-
msgstr "html arkaplan linki:"
|
258 |
-
|
259 |
-
#: library/admin/admin.php:601
|
260 |
-
msgid ""
|
261 |
-
"Upload an image and put the full path here.<br />\r\n"
|
262 |
-
" Suggested size: <code>10px X 500px</code> (for a repeating "
|
263 |
-
"background) or<br />\r\n"
|
264 |
-
" Full size image with a 100% stretched to fit window image."
|
265 |
-
msgstr ""
|
266 |
-
"Bir resim yükleyin ve buraya tam yolunu koyun.<br />\n"
|
267 |
-
" Tavsiye boyut: <code>10px X 500px</code> (tekrarlayan bir "
|
268 |
-
"arka plan için) veya <br />\n"
|
269 |
-
" Pencereye %100 sığacak bir tam boy resim."
|
270 |
-
|
271 |
-
#: library/admin/admin.php:610
|
272 |
-
msgid "html background repeat:"
|
273 |
-
msgstr "html arkaplan tekrarı:"
|
274 |
-
|
275 |
-
#: library/admin/admin.php:615
|
276 |
-
msgid ""
|
277 |
-
"Use <code>no-repeat</code>, <code>repeat</code>, <code>repeat-x</code> or "
|
278 |
-
"<code>repeat.</code>"
|
279 |
-
msgstr ""
|
280 |
-
"<code>no-repeat</code>, <code>repeat</code>, <code>repeat-x</code> veya "
|
281 |
-
"<code>repeat.</code> kullanın"
|
282 |
-
|
283 |
-
#: library/admin/admin.php:622
|
284 |
-
msgid "Logo:"
|
285 |
-
msgstr "Logo:"
|
286 |
-
|
287 |
-
#: library/admin/admin.php:628
|
288 |
-
msgid ""
|
289 |
-
"Upload an image and put the full path here.<br />\r\n"
|
290 |
-
" Suggested size: <code>310px X 70px</code>, which will "
|
291 |
-
"replace WordPress logo. Be sure to leave blank if not in use. NOTE: Will go "
|
292 |
-
"<strong>above</strong> the form and it′s border."
|
293 |
-
msgstr ""
|
294 |
-
"Bir resim yükleyin ve buraya tam yolunu koyun.<br />\n"
|
295 |
-
" Tavsiye boyut: <code>310px X 70px</code>, WordPress logosu "
|
296 |
-
"yerini alır. Eğer kullanımda değilse boş bıraktığınızdan emin olun. NOT: "
|
297 |
-
"Formun üstü ve çereçevesine yerleşir."
|
298 |
-
|
299 |
-
#: library/admin/admin.php:637
|
300 |
-
msgid "login form background color:"
|
301 |
-
msgstr "GiriÅŸ formu arkaplan rengi:"
|
302 |
-
|
303 |
-
#: library/admin/admin.php:642 library/admin/admin.php:691
|
304 |
-
#: library/admin/admin.php:732
|
305 |
-
msgid ""
|
306 |
-
"Use HEX color <strong>with</strong> “#” or RGB/A format.<br />"
|
307 |
-
"\r\n"
|
308 |
-
"\t\t\t\tExample: ¹<code>#121212</code> ²<code>rgba(255,255,255,0.4)"
|
309 |
-
"</code>"
|
310 |
-
msgstr ""
|
311 |
-
"HEX renk kodları <strong>ile</strong> “#” <strong>veya</"
|
312 |
-
"strong>RGB/A formatı kullanın.<br />\n"
|
313 |
-
"ÖrneÄŸin: ¹<code>#121212</code> ²<code>rgba(255,255,255,0.4)</code>"
|
314 |
-
|
315 |
-
#: library/admin/admin.php:650
|
316 |
-
msgid "login form background url:"
|
317 |
-
msgstr "GiriÅŸ formu arkaplan linki:"
|
318 |
-
|
319 |
-
#: library/admin/admin.php:664
|
320 |
-
msgid "login form border radius:"
|
321 |
-
msgstr "Giriş formu çerçeve çapı:"
|
322 |
-
|
323 |
-
#: library/admin/admin.php:669
|
324 |
-
msgid ""
|
325 |
-
"Choose your border radius, ie <code>8</code> or <code>12</code>. Do not put "
|
326 |
-
"“<strong>px</strong>”!"
|
327 |
-
msgstr ""
|
328 |
-
"Çerçeve çapını seçin, örn. <code>8</code> ya da <code>12</code>. “"
|
329 |
-
"<strong>px</strong>” koymayın!"
|
330 |
-
|
331 |
-
#: library/admin/admin.php:675
|
332 |
-
msgid "login form border thickness:"
|
333 |
-
msgstr "Giriş formu çerçeve kalınlığı:"
|
334 |
-
|
335 |
-
#: library/admin/admin.php:680
|
336 |
-
msgid ""
|
337 |
-
"Choose your border thickness, i.e. <code>1</code> or <code>2</code>. Do not "
|
338 |
-
"put “<strong>px</strong>”!"
|
339 |
-
msgstr ""
|
340 |
-
"Çerçeve kalınlığını seçin, örn. <code>1</code> ya da <code>2</code>. “"
|
341 |
-
"<strong>px</strong>” koymayın!"
|
342 |
-
|
343 |
-
#: library/admin/admin.php:686
|
344 |
-
msgid "login form border color:"
|
345 |
-
msgstr "Giriş formu çerçeve rengi:"
|
346 |
-
|
347 |
-
#: library/admin/admin.php:699
|
348 |
-
msgid "login form box shadow:"
|
349 |
-
msgstr "Giriş formu kutu gölgesi:"
|
350 |
-
|
351 |
-
#: library/admin/admin.php:707
|
352 |
-
msgid ""
|
353 |
-
"Choose your box shadow settings, i.e. <code>5px 5px 18px #464646</code> "
|
354 |
-
"<em>example code - <code>offset, offset, blur, color</code></em>."
|
355 |
-
msgstr ""
|
356 |
-
"Kutu gölge ayarlarını seçin, örn. <code>5px 5px 18px #464646</code> "
|
357 |
-
"<em>örnek kod - <code>konum, konum, bulanıklık, renk</code></em>."
|
358 |
-
|
359 |
-
#: library/admin/admin.php:714
|
360 |
-
msgid "login form padding fix:"
|
361 |
-
msgstr "Giriş formu dolgu düzeltme:"
|
362 |
-
|
363 |
-
#: library/admin/admin.php:719
|
364 |
-
msgid "Select the box if you would like the padding of the form to fit better."
|
365 |
-
msgstr "Eğer daha uyumlu bir form dolgusu istiyorsanız kutuyu işaretleyin."
|
366 |
-
|
367 |
-
#: library/admin/admin.php:728
|
368 |
-
msgid "label font color:"
|
369 |
-
msgstr "Font etiket rengi:"
|
370 |
-
|
371 |
-
#: library/admin/admin.php:750
|
372 |
-
msgid "Custom CSS:"
|
373 |
-
msgstr "KiÅŸisel CSS:"
|
374 |
-
|
375 |
-
#: library/admin/admin.php:755
|
376 |
-
msgid ""
|
377 |
-
"Use this box to enter any custom CSS code that may not be shown below.<br />"
|
378 |
-
"\r\n"
|
379 |
-
" <strong>Example:</strong> <code>.login #backtoblog a { color:"
|
380 |
-
"#990000; }</code><br />\r\n"
|
381 |
-
" § <strong>Example:</strong> <code>#snow { display:"
|
382 |
-
"block; position:absolute; } #snow img { height:auto; width:100%; }</"
|
383 |
-
"code><br />\r\n"
|
384 |
-
" § example CSS code for custom html code example.."
|
385 |
-
msgstr ""
|
386 |
-
"Bu kutuyu kullanarak altta gösterilmeyen herhangi bir kişisel CSS kodu girin."
|
387 |
-
"<br />\n"
|
388 |
-
"<strong>Örnek:</strong> <code>.login #backtoblog a { color:#990000; }</"
|
389 |
-
"code><br />\n"
|
390 |
-
" § <strong>Örnek:</strong> <code>#snow { display:block; "
|
391 |
-
"position:absolute; } #snow img { height:auto; width:100%; }</code><br />\n"
|
392 |
-
" § KiÅŸisel html kod örneÄŸi için kiÅŸisel CSS kod "
|
393 |
-
"örneğidir.."
|
394 |
-
|
395 |
-
#: library/admin/admin.php:765
|
396 |
-
msgid "Custom HTML:"
|
397 |
-
msgstr "KiÅŸisel HTML:"
|
398 |
-
|
399 |
-
#: library/admin/admin.php:770
|
400 |
-
msgid ""
|
401 |
-
"Use this box to enter any custom HTML coded that you can add custom style to "
|
402 |
-
"in the custom CSS box.<br />\r\n"
|
403 |
-
" <strong>Example:</strong> <code><div id=\"snow\"><"
|
404 |
-
"img src=\"../image.jpg\" alt=\"\" /></div><br /><div id=\"snow-"
|
405 |
-
"bird\"> </div></code>"
|
406 |
-
msgstr ""
|
407 |
-
"Bu kutuyu kullanarak kişisel CSS kutusuna girdiğiniz kişisel stil için "
|
408 |
-
"kodlanmış kişisel HTML kodlarını girin.<br />\n"
|
409 |
-
" <strong>Örnek:</strong> <code><div id=\"snow\"><img "
|
410 |
-
"src=\"../image.jpg\" alt=\"\" /></div><br /><div id=\"snow-bird"
|
411 |
-
"\"> </div></code>"
|
412 |
-
|
413 |
-
#: library/admin/admin.php:823
|
414 |
-
msgid "Don′t you feel good. You just saved me."
|
415 |
-
msgstr "İyi hissetmiyor musun. Beni kurtardın."
|
416 |
-
|
417 |
-
#: library/admin/admin.php:841
|
418 |
-
msgid "Custom Login Settings"
|
419 |
-
msgstr "Custom Login Ayarları"
|
420 |
-
|
421 |
-
#: library/admin/admin.php:861
|
422 |
-
msgid "Update Settings"
|
423 |
-
msgstr "Ayarları Güncelle"
|
424 |
-
|
425 |
-
#: library/admin/admin.php:884
|
426 |
-
msgid "Custom Login Pro Upgrade Check"
|
427 |
-
msgstr "Custom Login Pro Yükseltme Kontrolu"
|
428 |
-
|
429 |
-
#: library/admin/admin.php:962
|
430 |
-
msgid "Settings"
|
431 |
-
msgstr "Ayarlar"
|
432 |
-
|
433 |
-
#: library/admin/admin.php:982
|
434 |
-
msgid ""
|
435 |
-
"Custom Login plugin is not configured yet. It will use the defualt theme "
|
436 |
-
"unless you configure the %1$s."
|
437 |
-
msgstr ""
|
438 |
-
"Custom Login eklentisi henüz yapılandırılmadı. %1$s ayarlamadığınız sürece "
|
439 |
-
"varsayılan temayı kullanır."
|
440 |
-
|
441 |
-
#: library/admin/dashboard.php:9
|
442 |
-
msgid "The Frosty Network <em>feeds</em>"
|
443 |
-
msgstr "The Frosty AÄŸ <em>beslemesi</em>"
|
444 |
-
|
445 |
-
#. Plugin Name of the plugin/theme
|
446 |
-
msgid "Custom Login lite"
|
447 |
-
msgstr "Custom Login lite"
|
448 |
-
|
449 |
-
#. Plugin URI of the plugin/theme
|
450 |
-
msgid "http://austinpassy.com/wordpress-plugins/custom-login"
|
451 |
-
msgstr "http://austinpassy.com/wordpress-plugins/custom-login"
|
452 |
-
|
453 |
-
#. Description of the plugin/theme
|
454 |
-
msgid ""
|
455 |
-
"A simple way to customize your WordPress login screen! Use the built in, "
|
456 |
-
"easy to use <a href=\"./options-general.php?page=custom-login\">settings</a> "
|
457 |
-
"page to do the work for you. So simple a neanderthal can do it! Now "
|
458 |
-
"featuring a HTML & CSS box for advanced users. Share you designs on <a "
|
459 |
-
"href=\"http://flickr.com/groups/custom-login/\">Flickr</a> or upgrade to the "
|
460 |
-
"<a href=\"http://thefrosty.com/custom-login-pro/\">PRO</a> version!"
|
461 |
-
msgstr ""
|
462 |
-
"WordPress giriş ekranını kişiselleştirmek için kolay bir yol! İşinizi yapmak "
|
463 |
-
"için yerleşik, kullanımı kolay <a href=\"./options-general.php?page=custom-"
|
464 |
-
"login\">ayarlar</a> sayfası. Bir mağara adamının bile yapabileceği "
|
465 |
-
"basitlikte! Şimdi, gelişmiş kullanıcılar için HTML & CSS özellikleri de "
|
466 |
-
"var. Tasarımlarınızı <a href=\"http://flickr.com/groups/custom-login/"
|
467 |
-
"\">Flickr</a> üzerinde paylaşın veya <a href=\"http://thefrosty.com/custom-"
|
468 |
-
"login-pro/\">PRO</a> sürüme yükseltin!"
|
469 |
-
|
470 |
-
#. Author of the plugin/theme
|
471 |
-
msgid "Austin Passy"
|
472 |
-
msgstr "Austin Passy"
|
473 |
-
|
474 |
-
#. Author URI of the plugin/theme
|
475 |
-
msgid "http://frostywebdesigns.com"
|
476 |
-
msgstr "http://frostywebdesigns.com"
|
477 |
-
|
478 |
-
#~ msgid ""
|
479 |
-
#~ "<a href=\"http://thefrosty.com/custom-login-pro/?ref=custom-login&url="
|
480 |
-
#~ msgstr ""
|
481 |
-
#~ "<a href=\"http://thefrosty.com/custom-login-pro/?ref=custom-login&url="
|
482 |
-
|
483 |
-
#~ msgid ""
|
484 |
-
#~ "Upload an image and put the full path here. Suggested size: <code>308px X "
|
485 |
-
#~ "108px</code><br />\n"
|
486 |
-
#~ " My suggestion: use a transparent .png or .gif. <a href=\""
|
487 |
-
#~ msgstr ""
|
488 |
-
#~ "Bir resim yükleyin ve buraya tam yolunu koyun. Tavsiye boyut: <code>308px "
|
489 |
-
#~ "X 108px</code><br />\n"
|
490 |
-
#~ "Benim önerim: transparan bir png ya da .gif kullanın. <a href=\""
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
languages/custom-login-tr_TR.pot
ADDED
@@ -0,0 +1,423 @@
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
1 |
+
msgid ""
|
2 |
+
msgstr ""
|
3 |
+
"Project-Id-Version: Custom Login 2.0\n"
|
4 |
+
"POT-Creation-Date: 2013-04-15 22:01-0800\n"
|
5 |
+
"PO-Revision-Date: 2013-04-17 07:30+0200\n"
|
6 |
+
"Last-Translator: HakanEr <hakanerwptr@gmail.com>\n"
|
7 |
+
"Language-Team: hakaner <hakanerwptr@gmail.com>\n"
|
8 |
+
"MIME-Version: 1.0\n"
|
9 |
+
"Content-Type: text/plain; charset=UTF-8\n"
|
10 |
+
"Content-Transfer-Encoding: 8bit\n"
|
11 |
+
"X-Generator: Poedit 1.5.5\n"
|
12 |
+
"X-Poedit-KeywordsList: _;gettext;gettext_noop;__;_e;_x\n"
|
13 |
+
"X-Poedit-Basepath: .\n"
|
14 |
+
"Plural-Forms: nplurals=2; plural=n != 1;\n"
|
15 |
+
"Language: turkish\n"
|
16 |
+
"X-Poedit-SourceCharset: UTF-8\n"
|
17 |
+
"X-Poedit-SearchPath-0: .\n"
|
18 |
+
|
19 |
+
#: custom-login.php:319 custom-login.php:630 functions/install.php:32
|
20 |
+
#: functions/install.php:40
|
21 |
+
msgid "Custom Login Settings"
|
22 |
+
msgstr "Custom Login Ayarları"
|
23 |
+
|
24 |
+
#: custom-login.php:324
|
25 |
+
msgid "General Settings"
|
26 |
+
msgstr "Genel Ayarlar"
|
27 |
+
|
28 |
+
#: custom-login.php:332
|
29 |
+
msgid "Activate"
|
30 |
+
msgstr "EtkinleÅŸtir"
|
31 |
+
|
32 |
+
#: custom-login.php:333
|
33 |
+
msgid "Toggle this plugin on & off."
|
34 |
+
msgstr "Eklentiyi açmak ve kapatmak arasında geçiş yap."
|
35 |
+
|
36 |
+
#: custom-login.php:339
|
37 |
+
msgid "<h4><abbr title=\"Hyper Text Markup Language\">HTML</abbr></h4>"
|
38 |
+
msgstr "<h4><abbr title=\"Hyper Text Markup Language\">HTML</abbr></h4>"
|
39 |
+
|
40 |
+
#: custom-login.php:346
|
41 |
+
msgid "HTML Background Color"
|
42 |
+
msgstr "HTML Arkaplan Rengi"
|
43 |
+
|
44 |
+
#: custom-login.php:353
|
45 |
+
msgid "HTML Background Image"
|
46 |
+
msgstr "HTML Arkaplan Resmi"
|
47 |
+
|
48 |
+
#: custom-login.php:354
|
49 |
+
msgid "Upload an image or a repeating pattern (optional)."
|
50 |
+
msgstr "Bir resim veya tekrar eden bir desen yükle (isteğe bağlı)."
|
51 |
+
|
52 |
+
#: custom-login.php:361
|
53 |
+
msgid "HTML Background Position"
|
54 |
+
msgstr "HTML Arkaplan Pozisyonu"
|
55 |
+
|
56 |
+
#: custom-login.php:362 custom-login.php:410 custom-login.php:465
|
57 |
+
msgid ""
|
58 |
+
"Allowed strings <code>left, top, center, right, bottom</code>. No more than "
|
59 |
+
"two combined! Space delimiter."
|
60 |
+
msgstr ""
|
61 |
+
"Ä°zin verilen dizeler <code>left, top, center, right, bottom</code>. Ä°kiden "
|
62 |
+
"fazla kombinasyon olmaz! Alan sınırlayıcı."
|
63 |
+
|
64 |
+
#: custom-login.php:369
|
65 |
+
msgid "HTML Background repeat"
|
66 |
+
msgstr "HTML Arkaplan tekrarı"
|
67 |
+
|
68 |
+
#: custom-login.php:381
|
69 |
+
msgid "HTML Background size"
|
70 |
+
msgstr "HTML Arkaplan boyutu"
|
71 |
+
|
72 |
+
#: custom-login.php:394
|
73 |
+
msgid "<h4>Logo</h4>"
|
74 |
+
msgstr "<h4>Logo</h4>"
|
75 |
+
|
76 |
+
#: custom-login.php:401
|
77 |
+
msgid "Logo"
|
78 |
+
msgstr "Logo"
|
79 |
+
|
80 |
+
#: custom-login.php:402
|
81 |
+
msgid "Replace the WordPress logo (optional)."
|
82 |
+
msgstr "WordPress logosunu değiştir (isteğe bağlı)."
|
83 |
+
|
84 |
+
#: custom-login.php:409
|
85 |
+
msgid "Logo Background Position"
|
86 |
+
msgstr "Logo Arkaplan Pozisyonu"
|
87 |
+
|
88 |
+
#: custom-login.php:417
|
89 |
+
msgid "Logo Background repeat"
|
90 |
+
msgstr "Logo Arkaplan tekrarı"
|
91 |
+
|
92 |
+
#: custom-login.php:429
|
93 |
+
msgid "Logo Background size"
|
94 |
+
msgstr "Logo Arkaplan boyutu"
|
95 |
+
|
96 |
+
#: custom-login.php:442
|
97 |
+
msgid "<h4>Login form</h4>"
|
98 |
+
msgstr "<h4>GiriÅŸ formu</h4>"
|
99 |
+
|
100 |
+
#: custom-login.php:449
|
101 |
+
msgid "Login Form Background Color"
|
102 |
+
msgstr "GiriÅŸ Formu Arkaplan Rengi"
|
103 |
+
|
104 |
+
#: custom-login.php:456
|
105 |
+
msgid "Login Form Background URL"
|
106 |
+
msgstr "GiriÅŸ Formu Arkaplan URL"
|
107 |
+
|
108 |
+
#: custom-login.php:457
|
109 |
+
msgid "Add an image to the form (optional)."
|
110 |
+
msgstr "Forma bir resim ekle (isteğe bağlı)."
|
111 |
+
|
112 |
+
#: custom-login.php:464
|
113 |
+
msgid "Login Form Background Position"
|
114 |
+
msgstr "GiriÅŸ Formu Arkaplan Pozisyonu"
|
115 |
+
|
116 |
+
#: custom-login.php:472
|
117 |
+
msgid "Login Form Background repeat"
|
118 |
+
msgstr "Giriş Formu Arkaplan tekrarı"
|
119 |
+
|
120 |
+
#: custom-login.php:484
|
121 |
+
msgid "Login Form Background size"
|
122 |
+
msgstr "GiriÅŸ Formu Arkaplan boyutu"
|
123 |
+
|
124 |
+
#: custom-login.php:496
|
125 |
+
msgid "Login Form Border Radius"
|
126 |
+
msgstr "Giriş Formu Çerçeve Yarıçapı"
|
127 |
+
|
128 |
+
#: custom-login.php:504
|
129 |
+
msgid "Login Form Border Size"
|
130 |
+
msgstr "Giriş Formu Çerçeve Boyutu"
|
131 |
+
|
132 |
+
#: custom-login.php:512
|
133 |
+
msgid "Login Form Border Color"
|
134 |
+
msgstr "Giriş Formu Çerçeve Rengi"
|
135 |
+
|
136 |
+
#: custom-login.php:519
|
137 |
+
msgid "Login Form Box Shadow"
|
138 |
+
msgstr "Giriş Formu Kutu Gölgesi"
|
139 |
+
|
140 |
+
#: custom-login.php:520
|
141 |
+
#, php-format
|
142 |
+
msgid "Use <a href=\"%s\">box shadow</a> syntax w/ out color. <code>%s</code>"
|
143 |
+
msgstr ""
|
144 |
+
"Renksiz bir şekilde <a href=\"%s\">box shadow</a> syntax kullanın. <code>%s</"
|
145 |
+
"code>"
|
146 |
+
|
147 |
+
#: custom-login.php:527
|
148 |
+
msgid "Login Form Box Shadow Color"
|
149 |
+
msgstr "Giriş Formu Kutu Gölge Rengi"
|
150 |
+
|
151 |
+
#: custom-login.php:535
|
152 |
+
msgid "<h4>Misc.</h4>"
|
153 |
+
msgstr "<h4>Çeşitli</h4>"
|
154 |
+
|
155 |
+
#: custom-login.php:542
|
156 |
+
msgid "Login Form Label Color"
|
157 |
+
msgstr "GiriÅŸ Formu Etiket Rengi"
|
158 |
+
|
159 |
+
#: custom-login.php:550
|
160 |
+
msgid "<h4>Below form anchor</h4>"
|
161 |
+
msgstr "<h4>Form altı bağlamı</h4>"
|
162 |
+
|
163 |
+
#: custom-login.php:557
|
164 |
+
msgid "Below form nav color"
|
165 |
+
msgstr "Form altı nav rengi"
|
166 |
+
|
167 |
+
#: custom-login.php:564
|
168 |
+
msgid "Below form nav text-shadow color"
|
169 |
+
msgstr "Form altı nav metni-gölge rengi"
|
170 |
+
|
171 |
+
#: custom-login.php:571
|
172 |
+
msgid "Below form nav color hover"
|
173 |
+
msgstr "Form altı nav vurgu rengi"
|
174 |
+
|
175 |
+
#: custom-login.php:578
|
176 |
+
msgid "Below form nav text-shadow hover"
|
177 |
+
msgstr "Form altı nav metni-vurgu gölgesi"
|
178 |
+
|
179 |
+
#: custom-login.php:586
|
180 |
+
msgid "<h4>Custom HTML/CSS & jQuery</h4>"
|
181 |
+
msgstr "<h4>KiÅŸisel HTML/CSS & jQuery</h4>"
|
182 |
+
|
183 |
+
#: custom-login.php:593
|
184 |
+
msgid "Custom CSS"
|
185 |
+
msgstr "KiÅŸisel CSS"
|
186 |
+
|
187 |
+
#: custom-login.php:599
|
188 |
+
msgid "Custom HTML"
|
189 |
+
msgstr "KiÅŸisel HTML"
|
190 |
+
|
191 |
+
#: custom-login.php:606
|
192 |
+
msgid "Custom jQuery"
|
193 |
+
msgstr "KiÅŸisel jQuery"
|
194 |
+
|
195 |
+
#: custom-login.php:630 functions/post-types.php:37
|
196 |
+
msgid "Custom Login"
|
197 |
+
msgstr "Custom Login"
|
198 |
+
|
199 |
+
#: custom-login.php:640
|
200 |
+
msgid "Settings"
|
201 |
+
msgstr "Ayarlar"
|
202 |
+
|
203 |
+
#: custom-login.php:672
|
204 |
+
msgid "Support this plugin and buy me a beer"
|
205 |
+
msgstr "Bu eklentiyi destekle ve bana bir bira satın al"
|
206 |
+
|
207 |
+
#: custom-login.php:673
|
208 |
+
msgid "Rate this plugin on WordPress.org"
|
209 |
+
msgstr "WordPress.org üzerinde bu eklentiye oy ver"
|
210 |
+
|
211 |
+
#: custom-login.php:674
|
212 |
+
msgid ""
|
213 |
+
"Share your designs on <strong style=\"color:#0066DC;\">Flick</strong><strong "
|
214 |
+
"style=\"color:#ff0084;\">r</strong>"
|
215 |
+
msgstr ""
|
216 |
+
"Tasarımlarını <strong style=\"color:#0066DC;\">Flick</strong><strong style="
|
217 |
+
"\"color:#ff0084;\">r</strong> üzerinde paylaş"
|
218 |
+
|
219 |
+
#: custom-login.php:675
|
220 |
+
msgid "Get support on WordPress.org"
|
221 |
+
msgstr "WordPress.org üzerinde destek al"
|
222 |
+
|
223 |
+
#: custom-login.php:676
|
224 |
+
msgid "Contribute development on GitHub"
|
225 |
+
msgstr "GitHub üzerinde geliştirmeye katkıda bulun"
|
226 |
+
|
227 |
+
#: custom-login.php:677
|
228 |
+
msgid "Get Custom Login Add-ons"
|
229 |
+
msgstr "Custom Login Eklentileri Al"
|
230 |
+
|
231 |
+
#: custom-login.php:683
|
232 |
+
#, php-format
|
233 |
+
msgid "<a href=\"%s\">%s</a> | <code>version %s</code>"
|
234 |
+
msgstr "<a href=\"%s\">%s</a> | <code>sürüm %s</code>"
|
235 |
+
|
236 |
+
#: classes/class.settings-api.php:745
|
237 |
+
#, php-format
|
238 |
+
msgid "%1$s | <a href=\"%2$s\">Dismiss notice</a>"
|
239 |
+
msgstr "%1$s | <a href=\"%2$s\">Bildirimi yok say</a>"
|
240 |
+
|
241 |
+
#: classes/class.settings-api.php:930
|
242 |
+
msgid "Error fetching feed"
|
243 |
+
msgstr "Besleme getirme hatası"
|
244 |
+
|
245 |
+
#: classes/class.settings-api.php:941
|
246 |
+
msgid "Like Extendd on Facebook"
|
247 |
+
msgstr "Facebook üzerinde Extendd'i Beğen"
|
248 |
+
|
249 |
+
#: classes/class.settings-api.php:942
|
250 |
+
msgid "Follow Extendd on Twitter"
|
251 |
+
msgstr "Twitter üzerinde Extendd'i Takip et"
|
252 |
+
|
253 |
+
#: classes/class.settings-api.php:943
|
254 |
+
msgid "Follow Austin on Twitter"
|
255 |
+
msgstr "Twitter üzerinde Austin'i Takip et"
|
256 |
+
|
257 |
+
#: classes/class.settings-api.php:944
|
258 |
+
msgid "Circle Extendd on Google+"
|
259 |
+
msgstr "Google+ üzerinde Extendd'i ekle"
|
260 |
+
|
261 |
+
#: classes/class.settings-api.php:945
|
262 |
+
msgid "Subscribe via email"
|
263 |
+
msgstr "Eposta ile abone ol"
|
264 |
+
|
265 |
+
#: classes/class.settings-api.php:948
|
266 |
+
msgid "Latest plugins from Extendd.com"
|
267 |
+
msgstr "Extendd.com'dan en son eklentiler"
|
268 |
+
|
269 |
+
#: functions/post-types.php:25
|
270 |
+
msgid "Logins"
|
271 |
+
msgstr "GiriÅŸ"
|
272 |
+
|
273 |
+
#: functions/post-types.php:26
|
274 |
+
msgid "Login"
|
275 |
+
msgstr "GiriÅŸ"
|
276 |
+
|
277 |
+
#: functions/post-types.php:27
|
278 |
+
msgid "Add New"
|
279 |
+
msgstr "Yeni Ekle"
|
280 |
+
|
281 |
+
#: functions/post-types.php:28
|
282 |
+
msgid "Add New Login"
|
283 |
+
msgstr "Yeni GiriÅŸ Ekle"
|
284 |
+
|
285 |
+
#: functions/post-types.php:29
|
286 |
+
msgid "Edit Login"
|
287 |
+
msgstr "Girişi Düzenle"
|
288 |
+
|
289 |
+
#: functions/post-types.php:30
|
290 |
+
msgid "New Login"
|
291 |
+
msgstr "Yeni GiriÅŸ"
|
292 |
+
|
293 |
+
#: functions/post-types.php:31
|
294 |
+
msgid "All Logins"
|
295 |
+
msgstr "Tüm Girişler"
|
296 |
+
|
297 |
+
#: functions/post-types.php:32
|
298 |
+
msgid "View Login"
|
299 |
+
msgstr "Girişi Gör"
|
300 |
+
|
301 |
+
#: functions/post-types.php:33
|
302 |
+
msgid "Search Logins"
|
303 |
+
msgstr "GiriÅŸleri Ara"
|
304 |
+
|
305 |
+
#: functions/post-types.php:34
|
306 |
+
msgid "No Logins found"
|
307 |
+
msgstr "Herhangi bir Giriş bulunamadı"
|
308 |
+
|
309 |
+
#: functions/post-types.php:35
|
310 |
+
msgid "No Logins found in Trash"
|
311 |
+
msgstr "Çöpte herhangi bir Giriş bulunamadı"
|
312 |
+
|
313 |
+
#: functions/welcome.php:56 functions/welcome.php:57
|
314 |
+
msgid "Welcome to Custom Login"
|
315 |
+
msgstr "Custom Login'e HoÅŸ Geldiniz"
|
316 |
+
|
317 |
+
#: functions/welcome.php:111
|
318 |
+
#, php-format
|
319 |
+
msgid "Welcome to Custom Login %s"
|
320 |
+
msgstr "Custom Login %s HoÅŸ Geldiniz"
|
321 |
+
|
322 |
+
#: functions/welcome.php:112
|
323 |
+
#, php-format
|
324 |
+
msgid ""
|
325 |
+
"Thank you for updating to the latest version! Custom Login %s is ready to "
|
326 |
+
"make your login page better!"
|
327 |
+
msgstr ""
|
328 |
+
"Son sürüme güncellediğiniz için teşekkürler! Custom Login %s giriş sayfanızı "
|
329 |
+
"daha iyi hale getirmek için hazır!"
|
330 |
+
|
331 |
+
#: functions/welcome.php:113
|
332 |
+
#, php-format
|
333 |
+
msgid "Version %s"
|
334 |
+
msgstr "Sürüm %s"
|
335 |
+
|
336 |
+
#: functions/welcome.php:117
|
337 |
+
msgid "What's New"
|
338 |
+
msgstr "Neler Yeni"
|
339 |
+
|
340 |
+
#: functions/welcome.php:122
|
341 |
+
msgid "Improved Settings"
|
342 |
+
msgstr "GeliÅŸtirilmiÅŸ Ayarlar"
|
343 |
+
|
344 |
+
#: functions/welcome.php:126
|
345 |
+
msgid "Load times"
|
346 |
+
msgstr "Yükleme süreleri"
|
347 |
+
|
348 |
+
#: functions/welcome.php:127
|
349 |
+
msgid ""
|
350 |
+
"There were issues in the past version that had the plugin loading on pages "
|
351 |
+
"it wasn't supposted to. <strong>CL</strong> now caches all queries and "
|
352 |
+
"database calls."
|
353 |
+
msgstr ""
|
354 |
+
"Önceki sürümünde, eklentinin sayfalarda yüklenmesiyle ilgili istenmeyen "
|
355 |
+
"sorunları vardı. <strong>CL</strong> artık tüm sorguları ve veritabanı "
|
356 |
+
"çağrılarını önbelleğe alır."
|
357 |
+
|
358 |
+
#: functions/welcome.php:129
|
359 |
+
msgid "Better features"
|
360 |
+
msgstr "Daha iyi özellikler"
|
361 |
+
|
362 |
+
#: functions/welcome.php:130
|
363 |
+
#, php-format
|
364 |
+
msgid ""
|
365 |
+
"With a complete rewrite of the plugin, I have to ability to build custom add-"
|
366 |
+
"ons (think extensions), like stealth login, email logins and 2-step "
|
367 |
+
"authentication to name a few of the add-ons you can find on %sExtendd.com%s "
|
368 |
+
"in the future."
|
369 |
+
msgstr ""
|
370 |
+
"Eklentiyi tamamen yeniden yazmam ile, kiÅŸisel eklentiler yazma yeteÄŸim var "
|
371 |
+
"(uzantıları düşün), gizli giriş, eposta girişleri ve 2 adım kimlik doğrulama "
|
372 |
+
"gibi ileride %sExtendd.com%s üzerinde bulabileceğiniz birkaç eklenti ismi "
|
373 |
+
"verebilirim."
|
374 |
+
|
375 |
+
#: functions/welcome.php:136
|
376 |
+
msgid "Under the Hood"
|
377 |
+
msgstr "Kaputun Altı"
|
378 |
+
|
379 |
+
#: functions/welcome.php:140
|
380 |
+
msgid "Settings Class"
|
381 |
+
msgstr "Ayarlar Sınıfı"
|
382 |
+
|
383 |
+
#: functions/welcome.php:141
|
384 |
+
#, php-format
|
385 |
+
msgid ""
|
386 |
+
"The new settings class allows to add your own add-ons! Documentation can be "
|
387 |
+
"found on the %sExtendd.com%s site."
|
388 |
+
msgstr ""
|
389 |
+
"Yeni ayarlar sınıfı kendi eklentilerinizi eklemenize izin verir! Belgeler "
|
390 |
+
"%sExtendd.com%s sitesinde bulunabilir."
|
391 |
+
|
392 |
+
#: functions/welcome.php:145
|
393 |
+
msgid "Templates"
|
394 |
+
msgstr "Åžablonlar"
|
395 |
+
|
396 |
+
#: functions/welcome.php:146
|
397 |
+
#, php-format
|
398 |
+
msgid ""
|
399 |
+
"Custom login %stemplates%s can be created in your theme using the new login "
|
400 |
+
"template add-on (coming soon)."
|
401 |
+
msgstr ""
|
402 |
+
"Custom login %sşablonları%s yeni login template eklentisi ile (yakında "
|
403 |
+
"geliyor) temanızın içinde oluşturulabilir."
|
404 |
+
|
405 |
+
#: functions/welcome.php:156
|
406 |
+
msgid "Go to Custom Login Settings"
|
407 |
+
msgstr "Custom Login Ayarlarına Gidin"
|
408 |
+
|
409 |
+
#: functions/upgrades/upgrades.php:25
|
410 |
+
msgid "Custom Login - Upgrades"
|
411 |
+
msgstr "Custom Login - Yükseltmeler"
|
412 |
+
|
413 |
+
#: functions/upgrades/upgrades.php:28
|
414 |
+
msgid ""
|
415 |
+
"The upgrade process has started, please be patient. This could take several "
|
416 |
+
"minutes. You will be automatically redirected when the upgrade is finished."
|
417 |
+
msgstr ""
|
418 |
+
"Yükseltme işlemi başladı, lütfen sabırlı olun. Bu işlem birkaç dakika "
|
419 |
+
"sürebilir. Yükseltme bittiğinde otomatik olarak yönlendirileceksiniz."
|
420 |
+
|
421 |
+
#: functions/upgrades/upgrades.php:59
|
422 |
+
msgid "Custom Login Upgrades"
|
423 |
+
msgstr "Custom Login Yükseltmeleri"
|
languages/custom-login.mo
CHANGED
Binary file
|
languages/custom-login.po
CHANGED
@@ -1,158 +1,489 @@
|
|
1 |
-
|
2 |
-
|
3 |
-
|
4 |
-
|
5 |
-
|
6 |
-
|
7 |
-
msgstr ""
|
8 |
-
"Project-Id-Version: Custom Login\n"
|
9 |
-
"Report-Msgid-Bugs-To: http://wordpress.org/tag/custom-login\n"
|
10 |
-
"POT-Creation-Date: 2010-09-16 22:04+0000\n"
|
11 |
-
"PO-Revision-Date: 2012-10-02 11:38-0800\n"
|
12 |
-
"Last-Translator: Austin Passy <austin@thefrosty.com>\n"
|
13 |
Â
"Language-Team: \n"
|
Â
|
|
14 |
Â
"MIME-Version: 1.0\n"
|
15 |
Â
"Content-Type: text/plain; charset=UTF-8\n"
|
16 |
Â
"Content-Transfer-Encoding: 8bit\n"
|
17 |
-
"X-
|
Â
|
|
18 |
Â
"X-Poedit-Basepath: .\n"
|
Â
|
|
Â
|
|
Â
|
|
19 |
Â
|
20 |
-
|
21 |
-
|
22 |
-
|
23 |
-
|
Â
|
|
24 |
Â
msgstr ""
|
25 |
Â
|
26 |
-
#:
|
27 |
-
msgid "
|
28 |
Â
msgstr ""
|
29 |
Â
|
30 |
-
#:
|
31 |
-
msgid "
|
32 |
Â
msgstr ""
|
33 |
Â
|
34 |
-
#:
|
35 |
-
msgid "
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
36 |
Â
msgstr ""
|
37 |
Â
|
38 |
-
#:
|
39 |
-
msgid "
|
40 |
Â
msgstr ""
|
41 |
Â
|
42 |
-
#:
|
43 |
-
msgid "
|
44 |
Â
msgstr ""
|
45 |
Â
|
46 |
-
#:
|
47 |
-
msgid "
|
48 |
Â
msgstr ""
|
49 |
Â
|
50 |
-
#:
|
51 |
-
msgid "
|
52 |
Â
msgstr ""
|
53 |
Â
|
54 |
-
#:
|
55 |
-
msgid "
|
56 |
Â
msgstr ""
|
57 |
Â
|
58 |
-
#:
|
59 |
-
msgid "
|
60 |
Â
msgstr ""
|
61 |
Â
|
62 |
-
#:
|
63 |
-
msgid "
|
64 |
Â
msgstr ""
|
65 |
Â
|
66 |
-
#:
|
67 |
-
msgid "
|
68 |
Â
msgstr ""
|
69 |
Â
|
70 |
-
#:
|
71 |
-
msgid "
|
72 |
Â
msgstr ""
|
73 |
Â
|
74 |
-
#:
|
75 |
-
msgid "
|
76 |
Â
msgstr ""
|
77 |
Â
|
78 |
-
#:
|
79 |
-
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
80 |
Â
msgstr ""
|
81 |
Â
|
82 |
-
#:
|
83 |
-
msgid "
|
84 |
Â
msgstr ""
|
85 |
Â
|
86 |
-
#:
|
87 |
-
msgid "
|
88 |
Â
msgstr ""
|
89 |
Â
|
90 |
-
#:
|
91 |
-
msgid "
|
92 |
Â
msgstr ""
|
93 |
Â
|
94 |
-
#:
|
95 |
-
msgid "
|
96 |
Â
msgstr ""
|
97 |
Â
|
98 |
-
#:
|
99 |
-
msgid "
|
100 |
Â
msgstr ""
|
101 |
Â
|
102 |
-
#:
|
103 |
-
msgid "
|
104 |
Â
msgstr ""
|
105 |
Â
|
106 |
-
#:
|
107 |
-
msgid "<
|
108 |
Â
msgstr ""
|
109 |
Â
|
110 |
-
#:
|
111 |
-
msgid "Custom CSS
|
112 |
Â
msgstr ""
|
113 |
Â
|
114 |
-
#:
|
115 |
-
msgid "Custom HTML
|
116 |
Â
msgstr ""
|
117 |
Â
|
118 |
-
#:
|
119 |
-
msgid "
|
120 |
Â
msgstr ""
|
121 |
Â
|
122 |
-
#:
|
Â
|
|
123 |
Â
msgid "Custom Login Settings"
|
124 |
Â
msgstr ""
|
125 |
Â
|
126 |
-
#:
|
127 |
-
msgid "
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
128 |
Â
msgstr ""
|
129 |
Â
|
130 |
-
#:
|
131 |
Â
msgid "Settings"
|
132 |
Â
msgstr ""
|
133 |
Â
|
134 |
-
#:
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
135 |
Â
#, php-format
|
136 |
-
msgid "
|
137 |
Â
msgstr ""
|
138 |
Â
|
139 |
-
#:
|
140 |
-
msgid "
|
Â
|
|
Â
|
|
141 |
Â
msgstr ""
|
142 |
Â
|
143 |
-
|
144 |
-
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
145 |
Â
msgstr ""
|
146 |
Â
|
147 |
-
|
148 |
-
msgid "
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
149 |
Â
msgstr ""
|
150 |
Â
|
151 |
-
|
152 |
-
msgid "
|
153 |
Â
msgstr ""
|
154 |
Â
|
155 |
-
|
156 |
-
|
Â
|
|
157 |
Â
msgstr ""
|
158 |
Â
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
1 |
+
msgid ""
|
2 |
+
msgstr ""
|
3 |
+
"Project-Id-Version: Custom Login 2.0\n"
|
4 |
+
"POT-Creation-Date: 2014-01-23 16:36-0800\n"
|
5 |
+
"PO-Revision-Date: 2014-01-23 16:36-0800\n"
|
6 |
+
"Last-Translator: \n"
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
7 |
Â
"Language-Team: \n"
|
8 |
+
"Language: en\n"
|
9 |
Â
"MIME-Version: 1.0\n"
|
10 |
Â
"Content-Type: text/plain; charset=UTF-8\n"
|
11 |
Â
"Content-Transfer-Encoding: 8bit\n"
|
12 |
+
"X-Generator: Poedit 1.6.3\n"
|
13 |
+
"X-Poedit-KeywordsList: _;gettext;gettext_noop;__;_e;_x\n"
|
14 |
Â
"X-Poedit-Basepath: .\n"
|
15 |
+
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
16 |
+
"X-Poedit-SearchPath-0: .\n"
|
17 |
+
"X-Poedit-SearchPath-1: ..\n"
|
18 |
Â
|
19 |
+
#: ../custom-login.php:146
|
20 |
+
#, php-format
|
21 |
+
msgid ""
|
22 |
+
"Custom Login has been deactivated because it requires a WordPress version "
|
23 |
+
"greater than 3.5. You are running <code>%s</code>"
|
24 |
Â
msgstr ""
|
25 |
Â
|
26 |
+
#: ../custom-login.php:348
|
27 |
+
msgid "General Settings"
|
28 |
Â
msgstr ""
|
29 |
Â
|
30 |
+
#: ../custom-login.php:356
|
31 |
+
msgid "Activate"
|
32 |
Â
msgstr ""
|
33 |
Â
|
34 |
+
#: ../custom-login.php:357
|
35 |
+
msgid "Toggle this plugin on & off."
|
36 |
+
msgstr ""
|
37 |
+
|
38 |
+
#: ../custom-login.php:363
|
39 |
+
msgid "<h4><abbr title=\"Hyper Text Markup Language\">HTML</abbr></h4>"
|
40 |
+
msgstr ""
|
41 |
+
|
42 |
+
#: ../custom-login.php:370
|
43 |
+
msgid "HTML Background Color"
|
44 |
+
msgstr ""
|
45 |
+
|
46 |
+
#: ../custom-login.php:377
|
47 |
+
msgid "HTML Background Image"
|
48 |
+
msgstr ""
|
49 |
+
|
50 |
+
#: ../custom-login.php:378
|
51 |
+
msgid "Upload an image or a repeating pattern (optional)."
|
52 |
+
msgstr ""
|
53 |
+
|
54 |
+
#: ../custom-login.php:386
|
55 |
+
msgid "HTML Background Position"
|
56 |
+
msgstr ""
|
57 |
+
|
58 |
+
#: ../custom-login.php:387 ../custom-login.php:469 ../custom-login.php:544
|
59 |
+
#, php-format
|
60 |
+
msgid "<a href=\"%s\" target=\"_blank\">html background position</a>."
|
61 |
+
msgstr ""
|
62 |
+
|
63 |
+
#: ../custom-login.php:403
|
64 |
+
msgid "HTML Background repeat"
|
65 |
+
msgstr ""
|
66 |
+
|
67 |
+
#: ../custom-login.php:415
|
68 |
+
msgid "HTML Background size"
|
69 |
+
msgstr ""
|
70 |
+
|
71 |
+
#: ../custom-login.php:428
|
72 |
+
msgid "<h4>Logo</h4>"
|
73 |
+
msgstr ""
|
74 |
+
|
75 |
+
#: ../custom-login.php:435
|
76 |
+
msgid "Hide the WP logo"
|
77 |
+
msgstr ""
|
78 |
+
|
79 |
+
#: ../custom-login.php:436
|
80 |
+
msgid ""
|
81 |
+
"Works when there is no logo present, otherwise the WP logo is replaced by "
|
82 |
+
"your logo."
|
83 |
+
msgstr ""
|
84 |
+
|
85 |
+
#: ../custom-login.php:441
|
86 |
+
msgid "Logo"
|
87 |
+
msgstr ""
|
88 |
+
|
89 |
+
#: ../custom-login.php:442
|
90 |
+
msgid "Replace the WordPress logo (optional)."
|
91 |
+
msgstr ""
|
92 |
+
|
93 |
+
#: ../custom-login.php:450
|
94 |
+
msgid "Logo Image width"
|
95 |
+
msgstr ""
|
96 |
+
|
97 |
+
#: ../custom-login.php:451 ../custom-login.php:460
|
98 |
+
msgid "Enter your image size in \"pixels\" without the \"px\""
|
99 |
+
msgstr ""
|
100 |
+
|
101 |
+
#: ../custom-login.php:459
|
102 |
+
msgid "Logo Image height"
|
103 |
+
msgstr ""
|
104 |
+
|
105 |
+
#: ../custom-login.php:468
|
106 |
+
msgid "Logo Background Position"
|
107 |
+
msgstr ""
|
108 |
+
|
109 |
+
#: ../custom-login.php:485
|
110 |
+
msgid "Logo Background repeat"
|
111 |
+
msgstr ""
|
112 |
+
|
113 |
+
#: ../custom-login.php:497
|
114 |
+
msgid "Logo Background size"
|
115 |
+
msgstr ""
|
116 |
+
|
117 |
+
#: ../custom-login.php:510
|
118 |
+
msgid "Logo Background size (custom)"
|
119 |
+
msgstr ""
|
120 |
+
|
121 |
+
#: ../custom-login.php:511
|
122 |
+
#, php-format
|
123 |
+
msgid ""
|
124 |
+
"Use size values in format \"INT unit INT unit\". Example: 10px 15px or 55px "
|
125 |
+
"55px etc. %sNote: Logo Background size MUST be set to none.%s"
|
126 |
+
msgstr ""
|
127 |
+
|
128 |
+
#: ../custom-login.php:520
|
129 |
+
msgid "<h4>Login form</h4>"
|
130 |
Â
msgstr ""
|
131 |
Â
|
132 |
+
#: ../custom-login.php:527
|
133 |
+
msgid "Login Form Background Color"
|
134 |
Â
msgstr ""
|
135 |
Â
|
136 |
+
#: ../custom-login.php:534
|
137 |
+
msgid "Login Form Background URL"
|
138 |
Â
msgstr ""
|
139 |
Â
|
140 |
+
#: ../custom-login.php:535
|
141 |
+
msgid "Add an image to the form (optional)."
|
142 |
Â
msgstr ""
|
143 |
Â
|
144 |
+
#: ../custom-login.php:543
|
145 |
+
msgid "Login Form Background Position"
|
146 |
Â
msgstr ""
|
147 |
Â
|
148 |
+
#: ../custom-login.php:560
|
149 |
+
msgid "Login Form Background repeat"
|
150 |
Â
msgstr ""
|
151 |
Â
|
152 |
+
#: ../custom-login.php:572
|
153 |
+
msgid "Login Form Background size"
|
154 |
Â
msgstr ""
|
155 |
Â
|
156 |
+
#: ../custom-login.php:584
|
157 |
+
msgid "Login Form Border Radius"
|
158 |
Â
msgstr ""
|
159 |
Â
|
160 |
+
#: ../custom-login.php:593
|
161 |
+
msgid "Login Form Border Size"
|
162 |
Â
msgstr ""
|
163 |
Â
|
164 |
+
#: ../custom-login.php:602
|
165 |
+
msgid "Login Form Border Color"
|
166 |
Â
msgstr ""
|
167 |
Â
|
168 |
+
#: ../custom-login.php:609
|
169 |
+
msgid "Login Form Box Shadow"
|
170 |
Â
msgstr ""
|
171 |
Â
|
172 |
+
#: ../custom-login.php:610
|
173 |
+
#, php-format
|
174 |
+
msgid ""
|
175 |
+
"Use <a href=\"%s\" target=\"_blank\">box shadow</a> syntax w/ out color. "
|
176 |
+
"<code>inset h-shadow v-shadow blur spread</code>"
|
177 |
+
msgstr ""
|
178 |
+
|
179 |
+
#: ../custom-login.php:617
|
180 |
+
msgid "Login Form Box Shadow Color"
|
181 |
+
msgstr ""
|
182 |
+
|
183 |
+
#: ../custom-login.php:625
|
184 |
+
msgid "<h4>Misc.</h4>"
|
185 |
Â
msgstr ""
|
186 |
Â
|
187 |
+
#: ../custom-login.php:632
|
188 |
+
msgid "Login Form Label Color"
|
189 |
Â
msgstr ""
|
190 |
Â
|
191 |
+
#: ../custom-login.php:640
|
192 |
+
msgid "<h4>Below form anchor</h4>"
|
193 |
Â
msgstr ""
|
194 |
Â
|
195 |
+
#: ../custom-login.php:647
|
196 |
+
msgid "Below form nav color"
|
197 |
Â
msgstr ""
|
198 |
Â
|
199 |
+
#: ../custom-login.php:654
|
200 |
+
msgid "Below form nav text-shadow color"
|
201 |
Â
msgstr ""
|
202 |
Â
|
203 |
+
#: ../custom-login.php:661
|
204 |
+
msgid "Below form nav color hover"
|
205 |
Â
msgstr ""
|
206 |
Â
|
207 |
+
#: ../custom-login.php:668
|
208 |
+
msgid "Below form nav text-shadow hover"
|
209 |
Â
msgstr ""
|
210 |
Â
|
211 |
+
#: ../custom-login.php:676
|
212 |
+
msgid "<h4>Custom HTML/CSS & jQuery</h4>"
|
213 |
Â
msgstr ""
|
214 |
Â
|
215 |
+
#: ../custom-login.php:683
|
216 |
+
msgid "Custom CSS"
|
217 |
Â
msgstr ""
|
218 |
Â
|
219 |
+
#: ../custom-login.php:690
|
220 |
+
msgid "Custom HTML"
|
221 |
Â
msgstr ""
|
222 |
Â
|
223 |
+
#: ../custom-login.php:697
|
224 |
+
msgid "Custom jQuery"
|
225 |
Â
msgstr ""
|
226 |
Â
|
227 |
+
#: ../custom-login.php:723 ../functions/install.php:32
|
228 |
+
#: ../functions/install.php:40
|
229 |
Â
msgid "Custom Login Settings"
|
230 |
Â
msgstr ""
|
231 |
Â
|
232 |
+
#: ../custom-login.php:723 ../functions/post-types.php:37
|
233 |
+
msgid "Custom Login"
|
234 |
+
msgstr ""
|
235 |
+
|
236 |
+
#: ../custom-login.php:735
|
237 |
+
msgid ""
|
238 |
+
"If your stylesheet isn't updating click update above to delete the transient "
|
239 |
+
"cache."
|
240 |
+
msgstr ""
|
241 |
+
|
242 |
+
#: ../custom-login.php:751
|
243 |
+
msgid "Clear stylesheet cache"
|
244 |
+
msgstr ""
|
245 |
+
|
246 |
+
#: ../custom-login.php:790
|
247 |
+
msgid "The cache has been deleted."
|
248 |
Â
msgstr ""
|
249 |
Â
|
250 |
+
#: ../custom-login.php:809
|
251 |
Â
msgid "Settings"
|
252 |
Â
msgstr ""
|
253 |
Â
|
254 |
+
#: ../custom-login.php:847
|
255 |
+
msgid "Support this plugin and buy me a beer"
|
256 |
+
msgstr ""
|
257 |
+
|
258 |
+
#: ../custom-login.php:848
|
259 |
+
msgid "Rate this plugin on WordPress.org"
|
260 |
+
msgstr ""
|
261 |
+
|
262 |
+
#: ../custom-login.php:849
|
263 |
+
msgid ""
|
264 |
+
"Share your designs on <strong style=\"color:#0066DC;\">Flick</strong><strong "
|
265 |
+
"style=\"color:#ff0084;\">r</strong>"
|
266 |
+
msgstr ""
|
267 |
+
|
268 |
+
#: ../custom-login.php:850
|
269 |
+
msgid "Get support on WordPress.org"
|
270 |
+
msgstr ""
|
271 |
+
|
272 |
+
#: ../custom-login.php:851
|
273 |
+
msgid "Contribute development on GitHub"
|
274 |
+
msgstr ""
|
275 |
+
|
276 |
+
#: ../custom-login.php:852
|
277 |
+
msgid "Get Custom Login Extensions"
|
278 |
+
msgstr ""
|
279 |
+
|
280 |
+
#: ../custom-login.php:861
|
281 |
Â
#, php-format
|
282 |
+
msgid "<a href=\"%s\">%s</a> | <code>version %s</code>"
|
283 |
Â
msgstr ""
|
284 |
Â
|
285 |
+
#: ../custom-login.php:871
|
286 |
+
msgid ""
|
287 |
+
"<a href=\"#\" data-toggle=\"extendd-license\">Please read!</a> | <a href=\"#"
|
288 |
+
"\" data-toggle=\"extendd-license-help\">Help</a>"
|
289 |
Â
msgstr ""
|
290 |
Â
|
291 |
+
#: ../custom-login.php:873
|
292 |
+
#, php-format
|
293 |
+
msgid ""
|
294 |
+
"<span id=\"extendd-license\" style=\"display:none\">Most of these extensions "
|
295 |
+
"require a license key which can be purchased on <a href=\"%1$s\" target="
|
296 |
+
"\"_blank\">%2$s</a>. You'll have to have the key ready to install the "
|
297 |
+
"extension.</span>"
|
298 |
Â
msgstr ""
|
299 |
Â
|
300 |
+
#: ../custom-login.php:875
|
301 |
+
msgid ""
|
302 |
+
"<span id=\"extendd-license-help\" style=\"display:none\">Click \"install\" "
|
303 |
+
"to auto-install the extension on your site (which will also auto-activate "
|
304 |
+
"it).<br>Free extensions will auto-install, while paid extensions will need a "
|
305 |
+
"valid license key.</span>"
|
306 |
Â
msgstr ""
|
307 |
Â
|
308 |
+
#: ../custom-login.php:902
|
309 |
+
msgid "Custom Login Extensions"
|
310 |
Â
msgstr ""
|
311 |
Â
|
312 |
+
#: ../classes/class.settings-api.php:356
|
313 |
+
#, php-format
|
314 |
+
msgid "<label for=\"%1$s[%2$s]\">Opacity</label>"
|
315 |
Â
msgstr ""
|
316 |
Â
|
317 |
+
#: ../classes/class.settings-api.php:820
|
318 |
+
#, php-format
|
319 |
+
msgid "%1$s | <a href=\"%2$s\">Dismiss notice</a>"
|
320 |
+
msgstr ""
|
321 |
+
|
322 |
+
#: ../classes/class.settings-api.php:1005
|
323 |
+
msgid "Error fetching feed"
|
324 |
+
msgstr ""
|
325 |
+
|
326 |
+
#: ../classes/class.settings-api.php:1016
|
327 |
+
msgid "Like Extendd on Facebook"
|
328 |
+
msgstr ""
|
329 |
+
|
330 |
+
#: ../classes/class.settings-api.php:1017
|
331 |
+
msgid "Follow Extendd on Twitter"
|
332 |
+
msgstr ""
|
333 |
+
|
334 |
+
#: ../classes/class.settings-api.php:1018
|
335 |
+
msgid "Follow Austin on Twitter"
|
336 |
+
msgstr ""
|
337 |
+
|
338 |
+
#: ../classes/class.settings-api.php:1019
|
339 |
+
msgid "Circle Extendd on Google+"
|
340 |
+
msgstr ""
|
341 |
+
|
342 |
+
#: ../classes/class.settings-api.php:1020
|
343 |
+
msgid "Subscribe via email"
|
344 |
+
msgstr ""
|
345 |
+
|
346 |
+
#: ../classes/class.settings-api.php:1023
|
347 |
+
msgid "Latest plugins from Extendd.com"
|
348 |
+
msgstr ""
|
349 |
+
|
350 |
+
#: ../classes/welcome.php:56 ../classes/welcome.php:57
|
351 |
+
msgid "Welcome to Custom Login"
|
352 |
+
msgstr ""
|
353 |
+
|
354 |
+
#: ../classes/welcome.php:111
|
355 |
+
#, php-format
|
356 |
+
msgid "Welcome to Custom Login %s"
|
357 |
+
msgstr ""
|
358 |
+
|
359 |
+
#: ../classes/welcome.php:112
|
360 |
+
#, php-format
|
361 |
+
msgid ""
|
362 |
+
"Thank you for updating to the latest version! Custom Login %s is ready to "
|
363 |
+
"make your login page better!"
|
364 |
+
msgstr ""
|
365 |
+
|
366 |
+
#: ../classes/welcome.php:113
|
367 |
+
#, php-format
|
368 |
+
msgid "Version %s"
|
369 |
+
msgstr ""
|
370 |
+
|
371 |
+
#: ../classes/welcome.php:117
|
372 |
+
msgid "What's New"
|
373 |
+
msgstr ""
|
374 |
+
|
375 |
+
#: ../classes/welcome.php:122
|
376 |
+
msgid "Improved Settings"
|
377 |
+
msgstr ""
|
378 |
+
|
379 |
+
#: ../classes/welcome.php:126
|
380 |
+
msgid "Load times"
|
381 |
+
msgstr ""
|
382 |
+
|
383 |
+
#: ../classes/welcome.php:127
|
384 |
+
msgid ""
|
385 |
+
"There were issues in the past version that had the plugin loading on pages "
|
386 |
+
"it wasn't supposted to. <strong>CL</strong> now caches all queries and "
|
387 |
+
"database calls."
|
388 |
+
msgstr ""
|
389 |
+
|
390 |
+
#: ../classes/welcome.php:129
|
391 |
+
msgid "Better features"
|
392 |
+
msgstr ""
|
393 |
+
|
394 |
+
#: ../classes/welcome.php:130
|
395 |
+
#, php-format
|
396 |
+
msgid ""
|
397 |
+
"With a complete rewrite of the plugin, I have to ability to build custom add-"
|
398 |
+
"ons (think extensions), like stealth login, email logins and 2-step "
|
399 |
+
"authentication to name a few of the add-ons you can find on %sExtendd.com%s "
|
400 |
+
"in the future."
|
401 |
+
msgstr ""
|
402 |
+
|
403 |
+
#: ../classes/welcome.php:136
|
404 |
+
msgid "Under the Hood"
|
405 |
+
msgstr ""
|
406 |
+
|
407 |
+
#: ../classes/welcome.php:140
|
408 |
+
msgid "Settings Class"
|
409 |
+
msgstr ""
|
410 |
+
|
411 |
+
#: ../classes/welcome.php:141
|
412 |
+
#, php-format
|
413 |
+
msgid ""
|
414 |
+
"The new settings class allows to add your own add-ons! Documentation can be "
|
415 |
+
"found on the %sExtendd.com%s site."
|
416 |
+
msgstr ""
|
417 |
+
|
418 |
+
#: ../classes/welcome.php:145
|
419 |
+
msgid "Templates"
|
420 |
+
msgstr ""
|
421 |
+
|
422 |
+
#: ../classes/welcome.php:146
|
423 |
+
#, php-format
|
424 |
+
msgid ""
|
425 |
+
"Custom login %stemplates%s can be created in your theme using the new login "
|
426 |
+
"template add-on (coming soon)."
|
427 |
+
msgstr ""
|
428 |
+
|
429 |
+
#: ../classes/welcome.php:156
|
430 |
+
msgid "Go to Custom Login Settings"
|
431 |
+
msgstr ""
|
432 |
+
|
433 |
+
#: ../functions/post-types.php:25
|
434 |
+
msgid "Logins"
|
435 |
+
msgstr ""
|
436 |
+
|
437 |
+
#: ../functions/post-types.php:26
|
438 |
+
msgid "Login"
|
439 |
+
msgstr ""
|
440 |
+
|
441 |
+
#: ../functions/post-types.php:27
|
442 |
+
msgid "Add New"
|
443 |
+
msgstr ""
|
444 |
+
|
445 |
+
#: ../functions/post-types.php:28
|
446 |
+
msgid "Add New Login"
|
447 |
+
msgstr ""
|
448 |
+
|
449 |
+
#: ../functions/post-types.php:29
|
450 |
+
msgid "Edit Login"
|
451 |
+
msgstr ""
|
452 |
+
|
453 |
+
#: ../functions/post-types.php:30
|
454 |
+
msgid "New Login"
|
455 |
+
msgstr ""
|
456 |
+
|
457 |
+
#: ../functions/post-types.php:31
|
458 |
+
msgid "All Logins"
|
459 |
+
msgstr ""
|
460 |
+
|
461 |
+
#: ../functions/post-types.php:32
|
462 |
+
msgid "View Login"
|
463 |
+
msgstr ""
|
464 |
+
|
465 |
+
#: ../functions/post-types.php:33
|
466 |
+
msgid "Search Logins"
|
467 |
+
msgstr ""
|
468 |
+
|
469 |
+
#: ../functions/post-types.php:34
|
470 |
+
msgid "No Logins found"
|
471 |
+
msgstr ""
|
472 |
+
|
473 |
+
#: ../functions/post-types.php:35
|
474 |
+
msgid "No Logins found in Trash"
|
475 |
+
msgstr ""
|
476 |
+
|
477 |
+
#: ../functions/upgrades/upgrades.php:25
|
478 |
+
msgid "Custom Login - Upgrades"
|
479 |
+
msgstr ""
|
480 |
+
|
481 |
+
#: ../functions/upgrades/upgrades.php:28
|
482 |
+
msgid ""
|
483 |
+
"The upgrade process has started, please be patient. This could take several "
|
484 |
+
"minutes. You will be automatically redirected when the upgrade is finished."
|
485 |
+
msgstr ""
|
486 |
+
|
487 |
+
#: ../functions/upgrades/upgrades.php:59
|
488 |
+
msgid "Custom Login Upgrades"
|
489 |
+
msgstr ""
|
languages/custom-login.pot
CHANGED
@@ -1,404 +1,399 @@
|
|
1 |
-
# Copyright (C) 2012 Custom Login lite
|
2 |
-
# This file is distributed under the same license as the Custom Login lite package.
|
3 |
Â
msgid ""
|
4 |
Â
msgstr ""
|
5 |
-
"Project-Id-Version: Custom Login
|
6 |
-
"
|
7 |
-
"
|
Â
|
|
Â
|
|
8 |
Â
"MIME-Version: 1.0\n"
|
9 |
Â
"Content-Type: text/plain; charset=UTF-8\n"
|
10 |
Â
"Content-Transfer-Encoding: 8bit\n"
|
11 |
-
"
|
12 |
-
"
|
13 |
-
"
|
Â
|
|
14 |
Â
|
15 |
-
#:
|
16 |
-
|
Â
|
|
17 |
Â
msgstr ""
|
18 |
Â
|
19 |
-
#:
|
20 |
-
msgid "
|
21 |
Â
msgstr ""
|
22 |
Â
|
23 |
-
#:
|
24 |
-
msgid "
|
25 |
Â
msgstr ""
|
26 |
Â
|
27 |
-
#:
|
28 |
-
msgid "
|
29 |
Â
msgstr ""
|
30 |
Â
|
31 |
-
#:
|
32 |
-
msgid "
|
33 |
Â
msgstr ""
|
34 |
Â
|
35 |
-
#:
|
36 |
-
msgid "
|
37 |
Â
msgstr ""
|
38 |
Â
|
39 |
-
#:
|
40 |
-
msgid "
|
41 |
Â
msgstr ""
|
42 |
Â
|
43 |
-
#:
|
44 |
-
msgid "
|
45 |
Â
msgstr ""
|
46 |
Â
|
47 |
-
#:
|
48 |
-
msgid "
|
49 |
Â
msgstr ""
|
50 |
Â
|
51 |
-
#:
|
52 |
-
msgid "
|
Â
|
|
Â
|
|
53 |
Â
msgstr ""
|
54 |
Â
|
55 |
-
#:
|
56 |
-
msgid "
|
57 |
Â
msgstr ""
|
58 |
Â
|
59 |
-
#:
|
60 |
-
msgid "
|
61 |
Â
msgstr ""
|
62 |
Â
|
63 |
-
#:
|
64 |
-
msgid "
|
65 |
Â
msgstr ""
|
66 |
Â
|
67 |
-
#:
|
68 |
-
msgid "
|
69 |
Â
msgstr ""
|
70 |
Â
|
71 |
-
#:
|
72 |
-
msgid ""
|
73 |
-
"Check this box to use your own CSS, leave unchecked to use the default style."
|
74 |
Â
msgstr ""
|
75 |
Â
|
76 |
-
#:
|
77 |
-
msgid "
|
78 |
Â
msgstr ""
|
79 |
Â
|
80 |
-
#:
|
81 |
-
msgid "
|
82 |
Â
msgstr ""
|
83 |
Â
|
84 |
-
#:
|
85 |
-
msgid "
|
86 |
Â
msgstr ""
|
87 |
Â
|
88 |
-
#:
|
89 |
-
msgid "
|
90 |
Â
msgstr ""
|
91 |
Â
|
92 |
-
#:
|
93 |
-
msgid "
|
94 |
Â
msgstr ""
|
95 |
Â
|
96 |
-
#:
|
97 |
-
msgid "
|
98 |
Â
msgstr ""
|
99 |
Â
|
100 |
-
#:
|
101 |
-
msgid "
|
102 |
Â
msgstr ""
|
103 |
Â
|
104 |
-
#:
|
105 |
-
msgid "
|
106 |
Â
msgstr ""
|
107 |
Â
|
108 |
-
#:
|
109 |
-
msgid ""
|
110 |
-
"Want to upgrade to Pro? If you've purchase the plugin login below to get "
|
111 |
-
"your download link. Need a login? Click %s to purchase the plugin."
|
112 |
Â
msgstr ""
|
113 |
Â
|
114 |
-
#:
|
115 |
-
msgid "
|
116 |
Â
msgstr ""
|
117 |
Â
|
118 |
-
#:
|
119 |
-
msgid "
|
120 |
Â
msgstr ""
|
121 |
Â
|
122 |
-
#:
|
123 |
-
msgid "
|
124 |
Â
msgstr ""
|
125 |
Â
|
126 |
-
#:
|
127 |
-
msgid "
|
128 |
Â
msgstr ""
|
129 |
Â
|
130 |
-
#:
|
131 |
-
msgid ""
|
132 |
-
"<a href=\"https://www.paypal.com/cgi-bin/webscr?cmd=_s-"
|
133 |
-
"xclick&hosted_button_id=X4JPT57AWMTYW\">PayPal</a>."
|
134 |
Â
msgstr ""
|
135 |
Â
|
136 |
-
#:
|
137 |
-
|
Â
|
|
138 |
Â
msgstr ""
|
139 |
Â
|
140 |
-
#:
|
141 |
-
msgid ""
|
142 |
-
"<a href=\"http://wordpress.org/extend/plugins/custom-login/\">This plugin on "
|
143 |
-
"WordPress.org</a>."
|
144 |
Â
msgstr ""
|
145 |
Â
|
146 |
-
#:
|
147 |
-
msgid "
|
148 |
Â
msgstr ""
|
149 |
Â
|
150 |
-
#:
|
151 |
-
msgid ""
|
152 |
-
"Your design on <a href=\"http://www.flickr.com/groups/custom-login/\"><span "
|
153 |
-
"style=\"color:#0066DC;font-weight:bold;\">Flick</span><span style=\"color:"
|
154 |
-
"#ff0084;font-weight:bold;\">r</span></a>."
|
155 |
Â
msgstr ""
|
156 |
Â
|
157 |
-
#:
|
158 |
-
msgid "
|
159 |
Â
msgstr ""
|
160 |
Â
|
161 |
-
#:
|
162 |
-
msgid ""
|
163 |
-
"<a href=\"http://wordpress.org/tags/custom-login\">WordPress support forums</"
|
164 |
-
"a>."
|
165 |
Â
msgstr ""
|
166 |
Â
|
167 |
-
#:
|
168 |
-
msgid "
|
169 |
Â
msgstr ""
|
170 |
Â
|
171 |
-
#:
|
172 |
-
msgid "
|
173 |
Â
msgstr ""
|
174 |
Â
|
175 |
-
#:
|
176 |
-
msgid "
|
177 |
Â
msgstr ""
|
178 |
Â
|
179 |
-
#:
|
180 |
-
msgid "
|
181 |
Â
msgstr ""
|
182 |
Â
|
183 |
-
#:
|
184 |
-
msgid "
|
185 |
Â
msgstr ""
|
186 |
Â
|
187 |
-
#:
|
188 |
-
msgid "
|
189 |
Â
msgstr ""
|
190 |
Â
|
191 |
-
#:
|
192 |
-
msgid ""
|
193 |
-
"Use HEX color <strong>with</strong> “#” <strong>or</strong> RGB/"
|
194 |
-
"A format.<br />\r\n"
|
195 |
-
"\t\t\t\t<strong>This is the top 15px border color section</strong><br />\r\n"
|
196 |
-
"\t\t\t\tExample: ¹<code>#121212</code> ²<code>rgba(255,255,255,0.4)"
|
197 |
-
"</code>"
|
198 |
Â
msgstr ""
|
199 |
Â
|
200 |
-
#:
|
201 |
-
msgid "
|
202 |
Â
msgstr ""
|
203 |
Â
|
204 |
-
#:
|
205 |
-
msgid ""
|
206 |
-
|
207 |
-
|
208 |
-
|
209 |
-
"
|
210 |
Â
msgstr ""
|
211 |
Â
|
212 |
-
#:
|
213 |
-
msgid "
|
214 |
Â
msgstr ""
|
215 |
Â
|
216 |
-
#:
|
217 |
Â
msgid ""
|
218 |
-
"
|
219 |
-
"
|
220 |
-
"\t\t\t\tExample: ¹<code>#121212</code> ²<code>rgba(255,255,255,0.4)"
|
221 |
-
"</code>"
|
222 |
Â
msgstr ""
|
223 |
Â
|
224 |
-
#:
|
225 |
-
msgid "
|
226 |
Â
msgstr ""
|
227 |
Â
|
228 |
-
#:
|
229 |
-
msgid ""
|
230 |
-
"Upload an image and put the full path here.<br />\r\n"
|
231 |
-
" Suggested size: <code>10px X 500px</code> (for a repeating "
|
232 |
-
"background) or<br />\r\n"
|
233 |
-
" Full size image with a 100% stretched to fit window image."
|
234 |
Â
msgstr ""
|
235 |
Â
|
236 |
-
#:
|
237 |
-
msgid "
|
238 |
Â
msgstr ""
|
239 |
Â
|
240 |
-
#:
|
241 |
-
|
242 |
-
"
|
243 |
-
"<code>repeat.</code>"
|
244 |
Â
msgstr ""
|
245 |
Â
|
246 |
-
#:
|
247 |
-
|
Â
|
|
248 |
Â
msgstr ""
|
249 |
Â
|
250 |
-
#:
|
251 |
-
msgid ""
|
252 |
-
"Upload an image and put the full path here.<br />\r\n"
|
253 |
-
" Suggested size: <code>310px X 70px</code>, which will "
|
254 |
-
"replace WordPress logo. Be sure to leave blank if not in use. NOTE: Will go "
|
255 |
-
"<strong>above</strong> the form and it′s border."
|
256 |
Â
msgstr ""
|
257 |
Â
|
258 |
-
#:
|
259 |
-
msgid "
|
260 |
Â
msgstr ""
|
261 |
Â
|
262 |
-
#:
|
263 |
-
|
264 |
-
msgid ""
|
265 |
-
"Use HEX color <strong>with</strong> “#” or RGB/A format.<br />"
|
266 |
-
"\r\n"
|
267 |
-
"\t\t\t\tExample: ¹<code>#121212</code> ²<code>rgba(255,255,255,0.4)"
|
268 |
-
"</code>"
|
269 |
Â
msgstr ""
|
270 |
Â
|
271 |
-
#:
|
272 |
-
msgid "
|
273 |
Â
msgstr ""
|
274 |
Â
|
275 |
-
#:
|
276 |
-
msgid "
|
277 |
Â
msgstr ""
|
278 |
Â
|
279 |
-
#:
|
280 |
-
msgid ""
|
281 |
-
"Choose your border radius, ie <code>8</code> or <code>12</code>. Do not put "
|
282 |
-
"“<strong>px</strong>”!"
|
283 |
Â
msgstr ""
|
284 |
Â
|
285 |
-
#:
|
286 |
-
msgid "
|
287 |
Â
msgstr ""
|
288 |
Â
|
289 |
-
#:
|
290 |
-
msgid ""
|
291 |
-
"Choose your border thickness, i.e. <code>1</code> or <code>2</code>. Do not "
|
292 |
-
"put “<strong>px</strong>”!"
|
293 |
Â
msgstr ""
|
294 |
Â
|
295 |
-
#:
|
296 |
-
msgid "
|
297 |
Â
msgstr ""
|
298 |
Â
|
299 |
-
#:
|
300 |
-
msgid "
|
301 |
Â
msgstr ""
|
302 |
Â
|
303 |
-
#:
|
304 |
-
msgid ""
|
305 |
-
"Choose your box shadow settings, i.e. <code>5px 5px 18px #464646</code> "
|
306 |
-
"<em>example code - <code>offset, offset, blur, color</code></em>."
|
307 |
Â
msgstr ""
|
308 |
Â
|
309 |
-
#:
|
310 |
-
msgid "
|
311 |
Â
msgstr ""
|
312 |
Â
|
313 |
-
#:
|
314 |
-
msgid "
|
315 |
Â
msgstr ""
|
316 |
Â
|
317 |
-
#:
|
318 |
-
msgid "
|
319 |
Â
msgstr ""
|
320 |
Â
|
321 |
-
#:
|
322 |
-
msgid "
|
323 |
Â
msgstr ""
|
324 |
Â
|
325 |
-
#:
|
326 |
-
msgid ""
|
327 |
-
"Use this box to enter any custom CSS code that may not be shown below.<br />"
|
328 |
-
"\r\n"
|
329 |
-
" <strong>Example:</strong> <code>.login #backtoblog a { color:"
|
330 |
-
"#990000; }</code><br />\r\n"
|
331 |
-
" § <strong>Example:</strong> <code>#snow { display:"
|
332 |
-
"block; position:absolute; } #snow img { height:auto; width:100%; }</"
|
333 |
-
"code><br />\r\n"
|
334 |
-
" § example CSS code for custom html code example.."
|
335 |
Â
msgstr ""
|
336 |
Â
|
337 |
-
#:
|
338 |
-
msgid "
|
339 |
Â
msgstr ""
|
340 |
Â
|
341 |
-
#:
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
342 |
Â
msgid ""
|
343 |
-
"
|
344 |
-
"
|
345 |
-
" <strong>Example:</strong> <code><div id=\"snow\"><"
|
346 |
-
"img src=\"../image.jpg\" alt=\"\" /></div><br /><div id=\"snow-"
|
347 |
-
"bird\"> </div></code>"
|
348 |
Â
msgstr ""
|
349 |
Â
|
350 |
-
#:
|
351 |
-
|
Â
|
|
352 |
Â
msgstr ""
|
353 |
Â
|
354 |
-
#:
|
355 |
-
msgid "
|
356 |
Â
msgstr ""
|
357 |
Â
|
358 |
-
#:
|
359 |
-
msgid "
|
360 |
Â
msgstr ""
|
361 |
Â
|
362 |
-
#:
|
363 |
-
msgid "
|
364 |
Â
msgstr ""
|
365 |
Â
|
366 |
-
#:
|
367 |
-
msgid "
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
368 |
Â
msgstr ""
|
369 |
Â
|
370 |
-
#:
|
Â
|
|
371 |
Â
msgid ""
|
372 |
-
"
|
373 |
-
"
|
Â
|
|
Â
|
|
374 |
Â
msgstr ""
|
375 |
Â
|
376 |
-
#:
|
377 |
-
msgid "
|
378 |
Â
msgstr ""
|
379 |
Â
|
380 |
-
|
381 |
-
msgid "
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
382 |
Â
msgstr ""
|
383 |
Â
|
384 |
-
|
385 |
-
msgid "
|
386 |
Â
msgstr ""
|
387 |
Â
|
388 |
-
|
Â
|
|
389 |
Â
msgid ""
|
390 |
-
"
|
391 |
-
"
|
392 |
-
"page to do the work for you. So simple a neanderthal can do it! Now "
|
393 |
-
"featuring a HTML & CSS box for advanced users. Share you designs on <a "
|
394 |
-
"href=\"http://flickr.com/groups/custom-login/\">Flickr</a> or upgrade to the "
|
395 |
-
"<a href=\"http://thefrosty.com/custom-login-pro/\">PRO</a> version!"
|
396 |
Â
msgstr ""
|
397 |
Â
|
398 |
-
|
399 |
-
msgid "
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
400 |
Â
msgstr ""
|
401 |
Â
|
402 |
-
|
403 |
-
msgid "
|
404 |
Â
msgstr ""
|
Â
|
|
Â
|
|
1 |
Â
msgid ""
|
2 |
Â
msgstr ""
|
3 |
+
"Project-Id-Version: Custom Login 2.0\n"
|
4 |
+
"POT-Creation-Date: 2013-04-15 22:01-0800\n"
|
5 |
+
"PO-Revision-Date: 2013-04-15 22:03-0800\n"
|
6 |
+
"Last-Translator: Austin Passy <austin@thefrosty.com>\n"
|
7 |
+
"Language-Team: \n"
|
8 |
Â
"MIME-Version: 1.0\n"
|
9 |
Â
"Content-Type: text/plain; charset=UTF-8\n"
|
10 |
Â
"Content-Transfer-Encoding: 8bit\n"
|
11 |
+
"X-Generator: Poedit 1.5.5\n"
|
12 |
+
"X-Poedit-KeywordsList: _;gettext;gettext_noop;__;_e;_x\n"
|
13 |
+
"X-Poedit-Basepath: .\n"
|
14 |
+
"X-Poedit-SearchPath-0: .\n"
|
15 |
Â
|
16 |
+
#: custom-login.php:319 custom-login.php:630 functions/install.php:32
|
17 |
+
#: functions/install.php:40
|
18 |
+
msgid "Custom Login Settings"
|
19 |
Â
msgstr ""
|
20 |
Â
|
21 |
+
#: custom-login.php:324
|
22 |
+
msgid "General Settings"
|
23 |
Â
msgstr ""
|
24 |
Â
|
25 |
+
#: custom-login.php:332
|
26 |
+
msgid "Activate"
|
27 |
Â
msgstr ""
|
28 |
Â
|
29 |
+
#: custom-login.php:333
|
30 |
+
msgid "Toggle this plugin on & off."
|
31 |
Â
msgstr ""
|
32 |
Â
|
33 |
+
#: custom-login.php:339
|
34 |
+
msgid "<h4><abbr title=\"Hyper Text Markup Language\">HTML</abbr></h4>"
|
35 |
Â
msgstr ""
|
36 |
Â
|
37 |
+
#: custom-login.php:346
|
38 |
+
msgid "HTML Background Color"
|
39 |
Â
msgstr ""
|
40 |
Â
|
41 |
+
#: custom-login.php:353
|
42 |
+
msgid "HTML Background Image"
|
43 |
Â
msgstr ""
|
44 |
Â
|
45 |
+
#: custom-login.php:354
|
46 |
+
msgid "Upload an image or a repeating pattern (optional)."
|
47 |
Â
msgstr ""
|
48 |
Â
|
49 |
+
#: custom-login.php:361
|
50 |
+
msgid "HTML Background Position"
|
51 |
Â
msgstr ""
|
52 |
Â
|
53 |
+
#: custom-login.php:362 custom-login.php:410 custom-login.php:465
|
54 |
+
msgid ""
|
55 |
+
"Allowed strings <code>left, top, center, right, bottom</code>. No more than "
|
56 |
+
"two combined! Space delimiter."
|
57 |
Â
msgstr ""
|
58 |
Â
|
59 |
+
#: custom-login.php:369
|
60 |
+
msgid "HTML Background repeat"
|
61 |
Â
msgstr ""
|
62 |
Â
|
63 |
+
#: custom-login.php:381
|
64 |
+
msgid "HTML Background size"
|
65 |
Â
msgstr ""
|
66 |
Â
|
67 |
+
#: custom-login.php:394
|
68 |
+
msgid "<h4>Logo</h4>"
|
69 |
Â
msgstr ""
|
70 |
Â
|
71 |
+
#: custom-login.php:401
|
72 |
+
msgid "Logo"
|
73 |
Â
msgstr ""
|
74 |
Â
|
75 |
+
#: custom-login.php:402
|
76 |
+
msgid "Replace the WordPress logo (optional)."
|
Â
|
|
77 |
Â
msgstr ""
|
78 |
Â
|
79 |
+
#: custom-login.php:409
|
80 |
+
msgid "Logo Background Position"
|
81 |
Â
msgstr ""
|
82 |
Â
|
83 |
+
#: custom-login.php:417
|
84 |
+
msgid "Logo Background repeat"
|
85 |
Â
msgstr ""
|
86 |
Â
|
87 |
+
#: custom-login.php:429
|
88 |
+
msgid "Logo Background size"
|
89 |
Â
msgstr ""
|
90 |
Â
|
91 |
+
#: custom-login.php:442
|
92 |
+
msgid "<h4>Login form</h4>"
|
93 |
Â
msgstr ""
|
94 |
Â
|
95 |
+
#: custom-login.php:449
|
96 |
+
msgid "Login Form Background Color"
|
97 |
Â
msgstr ""
|
98 |
Â
|
99 |
+
#: custom-login.php:456
|
100 |
+
msgid "Login Form Background URL"
|
101 |
Â
msgstr ""
|
102 |
Â
|
103 |
+
#: custom-login.php:457
|
104 |
+
msgid "Add an image to the form (optional)."
|
105 |
Â
msgstr ""
|
106 |
Â
|
107 |
+
#: custom-login.php:464
|
108 |
+
msgid "Login Form Background Position"
|
109 |
Â
msgstr ""
|
110 |
Â
|
111 |
+
#: custom-login.php:472
|
112 |
+
msgid "Login Form Background repeat"
|
Â
|
|
Â
|
|
113 |
Â
msgstr ""
|
114 |
Â
|
115 |
+
#: custom-login.php:484
|
116 |
+
msgid "Login Form Background size"
|
117 |
Â
msgstr ""
|
118 |
Â
|
119 |
+
#: custom-login.php:496
|
120 |
+
msgid "Login Form Border Radius"
|
121 |
Â
msgstr ""
|
122 |
Â
|
123 |
+
#: custom-login.php:504
|
124 |
+
msgid "Login Form Border Size"
|
125 |
Â
msgstr ""
|
126 |
Â
|
127 |
+
#: custom-login.php:512
|
128 |
+
msgid "Login Form Border Color"
|
129 |
Â
msgstr ""
|
130 |
Â
|
131 |
+
#: custom-login.php:519
|
132 |
+
msgid "Login Form Box Shadow"
|
Â
|
|
Â
|
|
133 |
Â
msgstr ""
|
134 |
Â
|
135 |
+
#: custom-login.php:520
|
136 |
+
#, php-format
|
137 |
+
msgid "Use <a href=\"%s\">box shadow</a> syntax w/ out color. <code>%s</code>"
|
138 |
Â
msgstr ""
|
139 |
Â
|
140 |
+
#: custom-login.php:527
|
141 |
+
msgid "Login Form Box Shadow Color"
|
Â
|
|
Â
|
|
142 |
Â
msgstr ""
|
143 |
Â
|
144 |
+
#: custom-login.php:535
|
145 |
+
msgid "<h4>Misc.</h4>"
|
146 |
Â
msgstr ""
|
147 |
Â
|
148 |
+
#: custom-login.php:542
|
149 |
+
msgid "Login Form Label Color"
|
Â
|
|
Â
|
|
Â
|
|
150 |
Â
msgstr ""
|
151 |
Â
|
152 |
+
#: custom-login.php:550
|
153 |
+
msgid "<h4>Below form anchor</h4>"
|
154 |
Â
msgstr ""
|
155 |
Â
|
156 |
+
#: custom-login.php:557
|
157 |
+
msgid "Below form nav color"
|
Â
|
|
Â
|
|
158 |
Â
msgstr ""
|
159 |
Â
|
160 |
+
#: custom-login.php:564
|
161 |
+
msgid "Below form nav text-shadow color"
|
162 |
Â
msgstr ""
|
163 |
Â
|
164 |
+
#: custom-login.php:571
|
165 |
+
msgid "Below form nav color hover"
|
166 |
Â
msgstr ""
|
167 |
Â
|
168 |
+
#: custom-login.php:578
|
169 |
+
msgid "Below form nav text-shadow hover"
|
170 |
Â
msgstr ""
|
171 |
Â
|
172 |
+
#: custom-login.php:586
|
173 |
+
msgid "<h4>Custom HTML/CSS & jQuery</h4>"
|
174 |
Â
msgstr ""
|
175 |
Â
|
176 |
+
#: custom-login.php:593
|
177 |
+
msgid "Custom CSS"
|
178 |
Â
msgstr ""
|
179 |
Â
|
180 |
+
#: custom-login.php:599
|
181 |
+
msgid "Custom HTML"
|
182 |
Â
msgstr ""
|
183 |
Â
|
184 |
+
#: custom-login.php:606
|
185 |
+
msgid "Custom jQuery"
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
186 |
Â
msgstr ""
|
187 |
Â
|
188 |
+
#: custom-login.php:630 functions/post-types.php:37
|
189 |
+
msgid "Custom Login"
|
190 |
Â
msgstr ""
|
191 |
Â
|
192 |
+
#: custom-login.php:640
|
193 |
+
msgid "Settings"
|
194 |
+
msgstr ""
|
195 |
+
|
196 |
+
#: custom-login.php:672
|
197 |
+
msgid "Support this plugin and buy me a beer"
|
198 |
Â
msgstr ""
|
199 |
Â
|
200 |
+
#: custom-login.php:673
|
201 |
+
msgid "Rate this plugin on WordPress.org"
|
202 |
Â
msgstr ""
|
203 |
Â
|
204 |
+
#: custom-login.php:674
|
205 |
Â
msgid ""
|
206 |
+
"Share your designs on <strong style=\"color:#0066DC;\">Flick</strong><strong "
|
207 |
+
"style=\"color:#ff0084;\">r</strong>"
|
Â
|
|
Â
|
|
208 |
Â
msgstr ""
|
209 |
Â
|
210 |
+
#: custom-login.php:675
|
211 |
+
msgid "Get support on WordPress.org"
|
212 |
Â
msgstr ""
|
213 |
Â
|
214 |
+
#: custom-login.php:676
|
215 |
+
msgid "Contribute development on GitHub"
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
216 |
Â
msgstr ""
|
217 |
Â
|
218 |
+
#: custom-login.php:677
|
219 |
+
msgid "Get Custom Login Add-ons"
|
220 |
Â
msgstr ""
|
221 |
Â
|
222 |
+
#: custom-login.php:683
|
223 |
+
#, php-format
|
224 |
+
msgid "<a href=\"%s\">%s</a> | <code>version %s</code>"
|
Â
|
|
225 |
Â
msgstr ""
|
226 |
Â
|
227 |
+
#: classes/class.settings-api.php:745
|
228 |
+
#, php-format
|
229 |
+
msgid "%1$s | <a href=\"%2$s\">Dismiss notice</a>"
|
230 |
Â
msgstr ""
|
231 |
Â
|
232 |
+
#: classes/class.settings-api.php:930
|
233 |
+
msgid "Error fetching feed"
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
234 |
Â
msgstr ""
|
235 |
Â
|
236 |
+
#: classes/class.settings-api.php:941
|
237 |
+
msgid "Like Extendd on Facebook"
|
238 |
Â
msgstr ""
|
239 |
Â
|
240 |
+
#: classes/class.settings-api.php:942
|
241 |
+
msgid "Follow Extendd on Twitter"
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
242 |
Â
msgstr ""
|
243 |
Â
|
244 |
+
#: classes/class.settings-api.php:943
|
245 |
+
msgid "Follow Austin on Twitter"
|
246 |
Â
msgstr ""
|
247 |
Â
|
248 |
+
#: classes/class.settings-api.php:944
|
249 |
+
msgid "Circle Extendd on Google+"
|
250 |
Â
msgstr ""
|
251 |
Â
|
252 |
+
#: classes/class.settings-api.php:945
|
253 |
+
msgid "Subscribe via email"
|
Â
|
|
Â
|
|
254 |
Â
msgstr ""
|
255 |
Â
|
256 |
+
#: classes/class.settings-api.php:948
|
257 |
+
msgid "Latest plugins from Extendd.com"
|
258 |
Â
msgstr ""
|
259 |
Â
|
260 |
+
#: functions/post-types.php:25
|
261 |
+
msgid "Logins"
|
Â
|
|
Â
|
|
262 |
Â
msgstr ""
|
263 |
Â
|
264 |
+
#: functions/post-types.php:26
|
265 |
+
msgid "Login"
|
266 |
Â
msgstr ""
|
267 |
Â
|
268 |
+
#: functions/post-types.php:27
|
269 |
+
msgid "Add New"
|
270 |
Â
msgstr ""
|
271 |
Â
|
272 |
+
#: functions/post-types.php:28
|
273 |
+
msgid "Add New Login"
|
Â
|
|
Â
|
|
274 |
Â
msgstr ""
|
275 |
Â
|
276 |
+
#: functions/post-types.php:29
|
277 |
+
msgid "Edit Login"
|
278 |
Â
msgstr ""
|
279 |
Â
|
280 |
+
#: functions/post-types.php:30
|
281 |
+
msgid "New Login"
|
282 |
Â
msgstr ""
|
283 |
Â
|
284 |
+
#: functions/post-types.php:31
|
285 |
+
msgid "All Logins"
|
286 |
Â
msgstr ""
|
287 |
Â
|
288 |
+
#: functions/post-types.php:32
|
289 |
+
msgid "View Login"
|
290 |
Â
msgstr ""
|
291 |
Â
|
292 |
+
#: functions/post-types.php:33
|
293 |
+
msgid "Search Logins"
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
294 |
Â
msgstr ""
|
295 |
Â
|
296 |
+
#: functions/post-types.php:34
|
297 |
+
msgid "No Logins found"
|
298 |
Â
msgstr ""
|
299 |
Â
|
300 |
+
#: functions/post-types.php:35
|
301 |
+
msgid "No Logins found in Trash"
|
302 |
+
msgstr ""
|
303 |
+
|
304 |
+
#: functions/welcome.php:56 functions/welcome.php:57
|
305 |
+
msgid "Welcome to Custom Login"
|
306 |
+
msgstr ""
|
307 |
+
|
308 |
+
#: functions/welcome.php:111
|
309 |
+
#, php-format
|
310 |
+
msgid "Welcome to Custom Login %s"
|
311 |
+
msgstr ""
|
312 |
+
|
313 |
+
#: functions/welcome.php:112
|
314 |
+
#, php-format
|
315 |
Â
msgid ""
|
316 |
+
"Thank you for updating to the latest version! Custom Login %s is ready to "
|
317 |
+
"make your login page better!"
|
Â
|
|
Â
|
|
Â
|
|
318 |
Â
msgstr ""
|
319 |
Â
|
320 |
+
#: functions/welcome.php:113
|
321 |
+
#, php-format
|
322 |
+
msgid "Version %s"
|
323 |
Â
msgstr ""
|
324 |
Â
|
325 |
+
#: functions/welcome.php:117
|
326 |
+
msgid "What's New"
|
327 |
Â
msgstr ""
|
328 |
Â
|
329 |
+
#: functions/welcome.php:122
|
330 |
+
msgid "Improved Settings"
|
331 |
Â
msgstr ""
|
332 |
Â
|
333 |
+
#: functions/welcome.php:126
|
334 |
+
msgid "Load times"
|
335 |
Â
msgstr ""
|
336 |
Â
|
337 |
+
#: functions/welcome.php:127
|
338 |
+
msgid ""
|
339 |
+
"There were issues in the past version that had the plugin loading on pages "
|
340 |
+
"it wasn't supposted to. <strong>CL</strong> now caches all queries and "
|
341 |
+
"database calls."
|
342 |
+
msgstr ""
|
343 |
+
|
344 |
+
#: functions/welcome.php:129
|
345 |
+
msgid "Better features"
|
346 |
Â
msgstr ""
|
347 |
Â
|
348 |
+
#: functions/welcome.php:130
|
349 |
+
#, php-format
|
350 |
Â
msgid ""
|
351 |
+
"With a complete rewrite of the plugin, I have to ability to build custom add-"
|
352 |
+
"ons (think extensions), like stealth login, email logins and 2-step "
|
353 |
+
"authentication to name a few of the add-ons you can find on %sExtendd.com%s "
|
354 |
+
"in the future."
|
355 |
Â
msgstr ""
|
356 |
Â
|
357 |
+
#: functions/welcome.php:136
|
358 |
+
msgid "Under the Hood"
|
359 |
Â
msgstr ""
|
360 |
Â
|
361 |
+
#: functions/welcome.php:140
|
362 |
+
msgid "Settings Class"
|
363 |
+
msgstr ""
|
364 |
+
|
365 |
+
#: functions/welcome.php:141
|
366 |
+
#, php-format
|
367 |
+
msgid ""
|
368 |
+
"The new settings class allows to add your own add-ons! Documentation can be "
|
369 |
+
"found on the %sExtendd.com%s site."
|
370 |
Â
msgstr ""
|
371 |
Â
|
372 |
+
#: functions/welcome.php:145
|
373 |
+
msgid "Templates"
|
374 |
Â
msgstr ""
|
375 |
Â
|
376 |
+
#: functions/welcome.php:146
|
377 |
+
#, php-format
|
378 |
Â
msgid ""
|
379 |
+
"Custom login %stemplates%s can be created in your theme using the new login "
|
380 |
+
"template add-on (coming soon)."
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
381 |
Â
msgstr ""
|
382 |
Â
|
383 |
+
#: functions/welcome.php:156
|
384 |
+
msgid "Go to Custom Login Settings"
|
385 |
+
msgstr ""
|
386 |
+
|
387 |
+
#: functions/upgrades/upgrades.php:25
|
388 |
+
msgid "Custom Login - Upgrades"
|
389 |
+
msgstr ""
|
390 |
+
|
391 |
+
#: functions/upgrades/upgrades.php:28
|
392 |
+
msgid ""
|
393 |
+
"The upgrade process has started, please be patient. This could take several "
|
394 |
+
"minutes. You will be automatically redirected when the upgrade is finished."
|
395 |
Â
msgstr ""
|
396 |
Â
|
397 |
+
#: functions/upgrades/upgrades.php:59
|
398 |
+
msgid "Custom Login Upgrades"
|
399 |
Â
msgstr ""
|
library/admin/Sprite.jpg
DELETED
Binary file
|
library/admin/admin.php
DELETED
@@ -1,925 +0,0 @@
|
|
1 |
-
<?php
|
2 |
-
/**
|
3 |
-
* Administration functions for loading and displaying the settings page and saving settings
|
4 |
-
* are handled in this file.
|
5 |
-
*
|
6 |
-
* @package CustomLogin
|
7 |
-
*/
|
8 |
-
|
9 |
-
/* Initialize the theme admin functionality. */
|
10 |
-
add_action( 'init', 'custom_login_admin_init' );
|
11 |
-
|
12 |
-
/**
|
13 |
-
* Initializes the theme administration functions.
|
14 |
-
*
|
15 |
-
* @since 0.8
|
16 |
-
*/
|
17 |
-
function custom_login_admin_init() {
|
18 |
-
add_action( 'admin_init', 'custom_login_scripts' );
|
19 |
-
|
20 |
-
add_action( 'admin_init', 'custom_login_styles' );
|
21 |
-
|
22 |
-
add_action( 'admin_menu', 'custom_login_settings_page_init' );
|
23 |
-
|
24 |
-
add_action( 'custom_login_update_settings_page', 'custom_login_save_settings' );
|
25 |
-
}
|
26 |
-
|
27 |
-
/**
|
28 |
-
* Register the javascript.
|
29 |
-
*
|
30 |
-
* @since 0.8
|
31 |
-
*/
|
32 |
-
function custom_login_scripts() {
|
33 |
-
$plugin_data = get_plugin_data( CUSTOM_LOGIN_DIR . 'custom-login.php' );
|
34 |
-
|
35 |
-
wp_register_script( 'autosize', CUSTOM_LOGIN_JS . 'jquery.autosize.js', array( 'jquery' ), '1.15.3', false );
|
36 |
-
|
37 |
-
wp_register_script( 'custom-login', CUSTOM_LOGIN_JS . 'custom-login.js', array( 'jquery' ), $plugin_data['Version'], false );
|
38 |
-
|
39 |
-
wp_register_script( 'jscolor', CUSTOM_LOGIN_JS . 'jscolor.js', false, '1.4.0', false );
|
40 |
-
|
41 |
-
wp_register_script( 'gravatar', CUSTOM_LOGIN_JS . 'gravatar.js', array( 'jquery' ), '1.2', false );
|
42 |
-
}
|
43 |
-
|
44 |
-
/**
|
45 |
-
* Register the stylesheets.
|
46 |
-
*
|
47 |
-
* @since 0.8
|
48 |
-
*/
|
49 |
-
function custom_login_styles() {
|
50 |
-
$plugin_data = get_plugin_data( CUSTOM_LOGIN_DIR . 'custom-login.php' );
|
51 |
-
|
52 |
-
wp_register_style( 'custom-login-tabs', CUSTOM_LOGIN_CSS . 'tabs.css', false, $plugin_data['Version'], 'screen' );
|
53 |
-
|
54 |
-
wp_register_style( 'custom-login-admin', CUSTOM_LOGIN_CSS . 'admin.css', false, $plugin_data['Version'], 'screen' );
|
55 |
-
}
|
56 |
-
|
57 |
-
/**
|
58 |
-
* Sets up the cleaner gallery settings page and loads the appropriate functions when needed.
|
59 |
-
*
|
60 |
-
* @since 0.8
|
61 |
-
*/
|
62 |
-
function custom_login_settings_page_init() {
|
63 |
-
global $custom_login;
|
64 |
-
|
65 |
-
$role = 'manage_options';
|
66 |
-
$img = '<div style="width: 16px; height: 16px; overflow: hidden; display: block; float: left;"><img src="' . plugin_dir_url( __FILE__ ) . 'Sprite.jpg" style="background-position: -31px 0 !important" /></div>';
|
67 |
-
$img = '';
|
68 |
-
|
69 |
-
/* Create the theme settings page. */
|
70 |
-
$custom_login->settings_page = add_options_page( __( 'Custom Login', 'custom-login' ), $img . __( 'Custom Login', 'custom-login' ), $role, 'custom-login', 'custom_login_settings_page' );
|
71 |
-
|
72 |
-
/* Register the default theme settings meta boxes. */
|
73 |
-
add_action( "load-{$custom_login->settings_page}", 'custom_login_create_settings_meta_boxes' );
|
74 |
-
|
75 |
-
/* Make sure the settings are saved. */
|
76 |
-
add_action( "load-{$custom_login->settings_page}", 'custom_login_load_settings_page' );
|
77 |
-
|
78 |
-
/* Load the JavaScript and stylehsheets needed for the theme settings. */
|
79 |
-
add_action( "load-{$custom_login->settings_page}", 'custom_login_settings_page_enqueue_script' );
|
80 |
-
add_action( "load-{$custom_login->settings_page}", 'custom_login_settings_page_enqueue_style' );
|
81 |
-
|
82 |
-
add_action( "admin_head-{$custom_login->settings_page}", 'custom_login_settings_page_load_scripts' );
|
83 |
-
}
|
84 |
-
|
85 |
-
/**
|
86 |
-
* Returns an array with the default plugin settings.
|
87 |
-
*
|
88 |
-
* @since 0.8
|
89 |
-
*/
|
90 |
-
function custom_login_settings() {
|
91 |
-
$plugin_data = get_plugin_data( CUSTOM_LOGIN_DIR . 'custom-login.php' );
|
92 |
-
|
93 |
-
$settings = array(
|
94 |
-
'version' => $plugin_data['Version'],
|
95 |
-
/* Activate */
|
96 |
-
'custom' => false,
|
97 |
-
/* Gravatar */
|
98 |
-
'gravatar' => false,
|
99 |
-
/* Core */
|
100 |
-
'hide_dashboard' => false,
|
101 |
-
'disable_presstrends' => false,
|
102 |
-
/* Upgrade */
|
103 |
-
'hide_upgrade' => false,
|
104 |
-
'upgrade_complete' => false, //if the upgrade is good, hide it all forever.
|
105 |
-
/* Custom css */
|
106 |
-
'custom_css' => '',
|
107 |
-
/* Custom html */
|
108 |
-
'custom_html' => '',
|
109 |
-
/* Custom jQUery */
|
110 |
-
'custom_jquery' => '',
|
111 |
-
/* html */
|
112 |
-
'html_border_top_color' => '', //WP < 3.x
|
113 |
-
'html_border_top_background' => '', //WP > 3.x
|
114 |
-
'html_background_color' => '',
|
115 |
-
'html_background_url' => '',
|
116 |
-
'html_background_repeat' => 'repeat-x',
|
117 |
-
'html_background_size' => 'cover',
|
118 |
-
/* Login form */
|
119 |
-
'login_form_logo' => '',
|
120 |
-
'login_form_border_top_color' => '',
|
121 |
-
'login_form_background_color' => '',
|
122 |
-
'login_form_background' => '',
|
123 |
-
'login_form_background_size' => 'cover',
|
124 |
-
'login_form_border_radius' => '11',
|
125 |
-
'login_form_border' => '1',
|
126 |
-
'login_form_border_color' => '',
|
127 |
-
/* Box Shadows */
|
128 |
-
'login_form_box_shadow_1' => '5',
|
129 |
-
'login_form_box_shadow_2' => '5',
|
130 |
-
'login_form_box_shadow_3' => '18',
|
131 |
-
'login_form_box_shadow_4' => '#464646',
|
132 |
-
/* Form Padding */
|
133 |
-
'login_form_padding_top' => true,
|
134 |
-
/* Label color */
|
135 |
-
'label_color' => '#ffffff',
|
136 |
-
);
|
137 |
-
return apply_filters( 'custom_login_settings', $settings );
|
138 |
-
}
|
139 |
-
|
140 |
-
/**
|
141 |
-
* Function run at load time of the settings page, which is useful for hooking save functions into.
|
142 |
-
*
|
143 |
-
* @since 0.8
|
144 |
-
*/
|
145 |
-
function custom_login_load_settings_page() {
|
146 |
-
|
147 |
-
//delete_option( 'custom_login_settings' );
|
148 |
-
/* Get theme settings from the database. */
|
149 |
-
$settings = get_option( 'custom_login_settings' );
|
150 |
-
|
151 |
-
///////////////////////////////////////////////////////////////////////////////////////////////
|
152 |
-
// TO BE REMOVED IN VERSION 0.9 //
|
153 |
-
/* If the old settings are available, delete the old settings. */
|
154 |
-
//if ( !empty( $settings['use_custom'] ) ) {
|
155 |
-
//delete_option( 'custom_login_settings' );
|
156 |
-
|
157 |
-
/* Redirect the page so that the settings are reflected on the settings page. */
|
158 |
-
//wp_redirect( admin_url( 'options-general.php?page=custom-login' ) );
|
159 |
-
//exit;
|
160 |
-
//}
|
161 |
-
///////////////////////////////////////////////////////////////////////////////////////////////
|
162 |
-
|
163 |
-
/* If no settings are available, add the default settings to the database. */
|
164 |
-
if ( empty( $settings ) ) {
|
165 |
-
add_option( 'custom_login_settings', custom_login_settings(), '', 'yes' );
|
166 |
-
|
167 |
-
/* Redirect the page so that the settings are reflected on the settings page. */
|
168 |
-
wp_redirect( admin_url( 'options-general.php?page=custom-login' ) );
|
169 |
-
exit;
|
170 |
-
}
|
171 |
-
|
172 |
-
/* If the form has been submitted, check the referer and execute available actions. */
|
173 |
-
elseif ( isset( $_POST['custom-login-settings-submit'] ) ) {
|
174 |
-
|
175 |
-
/* Make sure the form is valid. */
|
176 |
-
check_admin_referer( 'custom-login-settings-page' );
|
177 |
-
|
178 |
-
/* Available hook for saving settings. */
|
179 |
-
do_action( 'custom_login_update_settings_page' );
|
180 |
-
|
181 |
-
/* Redirect the page so that the new settings are reflected on the settings page. */
|
182 |
-
wp_redirect( admin_url( 'options-general.php?page=custom-login&updated=true' ) );
|
183 |
-
exit;
|
184 |
-
}
|
185 |
-
}
|
186 |
-
|
187 |
-
|
188 |
-
/**
|
189 |
-
* Validates the plugin settings.
|
190 |
-
*
|
191 |
-
* @since 0.8
|
192 |
-
*/
|
193 |
-
function custom_login_save_settings() {
|
194 |
-
|
195 |
-
/* Get the current theme settings. */
|
196 |
-
$settings = get_option( 'custom_login_settings' );
|
197 |
-
$plugin_data = get_plugin_data( CUSTOM_LOGIN_DIR . 'custom-login.php' );
|
198 |
-
|
199 |
-
$settings['version'] = ( ( isset( $_POST['version'] ) ) ? esc_html( $_POST['version'] ) : $plugin_data['Version'] );
|
200 |
-
$settings['custom'] = ( ( isset( $_POST['custom'] ) ) ? true : false );
|
201 |
-
$settings['gravatar'] = ( ( isset( $_POST['gravatar'] ) ) ? true : false );
|
202 |
-
$settings['hide_dashboard'] = ( ( isset( $_POST['hide_dashboard'] ) ) ? true : false );
|
203 |
-
$settings['disable_presstrends'] = ( ( isset( $_POST['disable_presstrends'] ) ) ? true : false );
|
204 |
-
$settings['hide_upgrade'] = ( ( isset( $_POST['hide_upgrade'] ) ) ? true : false );
|
205 |
-
|
206 |
-
$settings['custom_css'] = esc_html( $_POST['custom_css'] );
|
207 |
-
$settings['custom_html'] = esc_html( $_POST['custom_html'] );
|
208 |
-
$settings['custom_jquery'] = esc_html( $_POST['custom_jquery'] );
|
209 |
-
|
210 |
-
$settings['html_border_top_color'] = ( ( isset( $_POST['html_border_top_color'] ) ) ? esc_html( $_POST['html_border_top_color'] ) : '' ); // > 3.0.x
|
211 |
-
$settings['html_border_top_background'] = isset( $_POST['html_border_top_background'] ) ? esc_html( $_POST['html_border_top_background'] ) : '';
|
212 |
-
$settings['html_background_color'] = esc_html( $_POST['html_background_color'] );
|
213 |
-
$settings['html_background_url'] = esc_html( $_POST['html_background_url'] );
|
214 |
-
$settings['html_background_repeat'] = esc_attr( $_POST['html_background_repeat'] );
|
215 |
-
$settings['html_background_size'] = esc_attr( $_POST['html_background_size'] );
|
216 |
-
|
217 |
-
$settings['login_form_logo'] = esc_html( $_POST['login_form_logo'] );
|
218 |
-
$settings['login_form_border_top_color'] = ( ( isset( $_POST['login_form_border_top_color'] ) ) ? esc_html( $_POST['login_form_border_top_color'] ) : '' );
|
219 |
-
$settings['login_form_background_color'] = esc_html( $_POST['login_form_background_color'] );
|
220 |
-
$settings['login_form_background'] = esc_html( $_POST['login_form_background'] );
|
221 |
-
$settings['login_form_background_size'] = esc_attr( $_POST['login_form_background_size'] );
|
222 |
-
$settings['login_form_border_radius'] = esc_html( $_POST['login_form_border_radius'] );
|
223 |
-
$settings['login_form_border'] = esc_html( $_POST['login_form_border'] );
|
224 |
-
$settings['login_form_border_color'] = esc_html( $_POST['login_form_border_color'] );
|
225 |
-
$settings['login_form_box_shadow_1'] = esc_html( $_POST['login_form_box_shadow_1'] );
|
226 |
-
$settings['login_form_box_shadow_2'] = esc_html( $_POST['login_form_box_shadow_2'] );
|
227 |
-
$settings['login_form_box_shadow_3'] = esc_html( $_POST['login_form_box_shadow_3'] );
|
228 |
-
$settings['login_form_box_shadow_4'] = esc_html( $_POST['login_form_box_shadow_4'] );
|
229 |
-
$settings['login_form_padding_top'] = ( ( isset( $_POST['login_form_padding_top'] ) ) ? true : false );
|
230 |
-
$settings['label_color'] = esc_html( $_POST['label_color'] );
|
231 |
-
|
232 |
-
/* Update the theme settings. */
|
233 |
-
$updated = update_option( 'custom_login_settings', $settings );
|
234 |
-
}
|
235 |
-
|
236 |
-
/**
|
237 |
-
* Registers the plugin meta boxes for use on the settings page.
|
238 |
-
*
|
239 |
-
* @since 0.8
|
240 |
-
*/
|
241 |
-
function custom_login_create_settings_meta_boxes() {
|
242 |
-
global $custom_login;
|
243 |
-
|
244 |
-
|
245 |
-
add_meta_box( 'custom-login-activate-meta-box', __( 'Avtivation — <em>to infinity and beyond</em>', 'custom-login' ), 'custom_login_activate_meta_box', $custom_login->settings_page, 'normal', 'high' );
|
246 |
-
|
247 |
-
add_meta_box( 'custom-login-announcement-meta-box', __( 'Announcements', 'custom-login' ), 'custom_login_announcement_meta_box', $custom_login->settings_page, 'normal', 'high' );
|
248 |
-
|
249 |
-
add_meta_box( 'custom-login-about-meta-box', __( 'About Custom Login', 'custom-login' ), 'custom_login_about_meta_box', $custom_login->settings_page, 'advanced', 'high' );
|
250 |
-
|
251 |
-
add_meta_box( 'custom-login-support-meta-box', __( 'Support Custom Login', 'custom-login' ), 'custom_login_support_meta_box', $custom_login->settings_page, 'advanced', 'high' );
|
252 |
-
|
253 |
-
add_meta_box( 'custom-login-dasboard-meta-box', __( 'Core Settings', 'custom-login' ), 'custom_login_dashboard_meta_box', $custom_login->settings_page, 'advanced', 'high' );
|
254 |
-
|
255 |
-
add_meta_box( 'custom-login-preview-meta-box', __( 'Preview your work, <em>Master</em>', 'custom-login' ), 'custom_login_preview_meta_box', $custom_login->settings_page, 'advanced', 'high' );
|
256 |
-
|
257 |
-
/* Remove the upgrade meta box when upgrade is good */
|
258 |
-
add_meta_box( 'custom-login-upgrade-link-meta-box', __( 'Upgrade Custom Login', 'custom-login' ), 'custom_login_upgrade_link_meta_box', $custom_login->settings_page, 'advanced', 'high' );
|
259 |
-
|
260 |
-
add_meta_box( 'custom-login-general-meta-box', __( 'General Settings', 'custom-login' ), 'custom_login_general_meta_box', $custom_login->settings_page, 'normal', 'high' );
|
261 |
-
|
262 |
-
add_meta_box( 'custom-login-advanced-meta-box', __( 'Advanced Settings', 'custom-login' ), 'custom_login_advanced_meta_box', $custom_login->settings_page, 'normal', 'high' );
|
263 |
-
|
264 |
-
add_meta_box( 'custom-login-tabs-meta-box', __( 'TheFrosty Network', 'custom-login' ), 'custom_login_tabs_meta_box', $custom_login->settings_page, 'side', 'low' );
|
265 |
-
}
|
266 |
-
|
267 |
-
/**
|
268 |
-
* Displays activation meta box.
|
269 |
-
*
|
270 |
-
* @since 0.8
|
271 |
-
*/
|
272 |
-
function custom_login_activate_meta_box() { ?>
|
273 |
-
|
274 |
-
<table class="form-table side">
|
275 |
-
<tr>
|
276 |
-
<th>
|
277 |
-
<label for="custom"><?php _e( 'Activate:', 'custom-login' ); ?></label>
|
278 |
-
</th>
|
279 |
-
<td>
|
280 |
-
<input id="custom" name="custom" type="checkbox" <?php checked( custom_login_get_setting( 'custom' ), true ); ?> value="true" />
|
281 |
-
<a class="question" title="Help & Examples">[?]</a><br />
|
282 |
-
<span class="hide"><?php _e( 'Check this box to use your own CSS, leave unchecked to use the default style.', 'custom-login' ); ?></span>
|
283 |
-
</td>
|
284 |
-
</tr>
|
285 |
-
<tr>
|
286 |
-
<th>
|
287 |
-
<label for="gravatar"><?php _e( 'Gravatar:', 'custom-login' ); ?></label>
|
288 |
-
</th>
|
289 |
-
<td>
|
290 |
-
<input id="gravatar" name="gravatar" type="checkbox" <?php checked( custom_login_get_setting( 'gravatar' ), true ); ?> value="true" <?php if ( !get_option( 'users_can_register' ) ) echo 'disabled="disabled" readonly="readonly"'; ?> />
|
291 |
-
<a class="question" title="Help & Examples">[?]</a><br />
|
292 |
-
<span class="hide"><?php if ( !get_option( 'users_can_register' ) ) { _e( 'This feature only works for sites with registration enabled.', 'custom-login' ); } else { _e( 'Check this box to activate a AJAX Gravatar image for registration.', 'custom-login' ); } ?></span>
|
293 |
-
</td>
|
294 |
-
</tr>
|
295 |
-
</table><!-- .form-table --><?php
|
296 |
-
}
|
297 |
-
|
298 |
-
/**
|
299 |
-
* Display an announcement meta box.
|
300 |
-
*
|
301 |
-
* @since 0.8
|
302 |
-
*/
|
303 |
-
function custom_login_announcement_meta_box() { ?>
|
304 |
-
|
305 |
-
<iframe allowtransparency="true" src="http://austinpassy.com/custom-login.php" scrolling="no" style="height:50px;width:100%;">
|
306 |
-
</iframe><!-- .form-table --><?php
|
307 |
-
}
|
308 |
-
|
309 |
-
/**
|
310 |
-
* Displays the about meta box.
|
311 |
-
*
|
312 |
-
* @since 0.8
|
313 |
-
*/
|
314 |
-
function custom_login_about_meta_box() {
|
315 |
-
$plugin_data = get_plugin_data( CUSTOM_LOGIN_DIR . 'custom-login.php' ); ?>
|
316 |
-
|
317 |
-
<table class="form-table side">
|
318 |
-
<tr>
|
319 |
-
<th><?php _e( 'Plugin:', 'custom-login' ); ?></th>
|
320 |
-
<td><?php echo $plugin_data['Title']; ?> <?php echo $plugin_data['Version']; ?></td>
|
321 |
-
</tr>
|
322 |
-
<tr>
|
323 |
-
<th><?php _e( 'Author:', 'custom-login' ); ?></th>
|
324 |
-
<td><?php echo $plugin_data['Author']; ?> – @<a href="http://twitter.com/TheFrosty" title="Follow me on Twitter">TheFrosty</a></td>
|
325 |
-
</tr>
|
326 |
-
<tr style="display: none;">
|
327 |
-
<th><?php _e( 'Description:', 'custom-login' ); ?></th>
|
328 |
-
<td><?php echo $plugin_data['Description']; ?></td>
|
329 |
-
</tr>
|
330 |
-
</table><!-- .form-table --><?php
|
331 |
-
}
|
332 |
-
|
333 |
-
/**
|
334 |
-
* link to upgrade page
|
335 |
-
* http://codex.wordpress.org/Function_Reference/remove_submenu_page
|
336 |
-
*
|
337 |
-
* @since 1.0.1
|
338 |
-
*/
|
339 |
-
function custom_login_upgrade_link_meta_box() {
|
340 |
-
global $custom_login; ?>
|
341 |
-
|
342 |
-
<div style="height: 25px; padding: 25px; text-align: center"><a href="http://extendd.com/plugin/custom-login-pro/" class="button-secondary"/><?php esc_attr_e('Upgrade to Custom Login PRO', 'custom-login'); ?></a></div><?php
|
343 |
-
}
|
344 |
-
|
345 |
-
/**
|
346 |
-
* Displays the support meta box.
|
347 |
-
*
|
348 |
-
* @since 0.8
|
349 |
-
*/
|
350 |
-
function custom_login_support_meta_box() { ?>
|
351 |
-
|
352 |
-
<table class="form-table side">
|
353 |
-
<tr>
|
354 |
-
<th><?php _e( 'Donate:', 'custom-login' ); ?></th>
|
355 |
-
<td><?php _e( '<a href="https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=X4JPT57AWMTYW">PayPal</a>.', 'custom-login' ); ?></td>
|
356 |
-
</tr>
|
357 |
-
<tr>
|
358 |
-
<th><?php _e( 'Flattr:', 'custom-login' ); ?></th>
|
359 |
-
<td><a href="http://flattr.com/thing/846561/Custom-Login" target="_blank"><img src="http://api.flattr.com/button/flattr-badge-large.png" alt="<?php _e( 'Flattr:', 'custom-login' ); ?>" title="<?php _e( 'Flattr:', 'custom-login' ); ?>" /></a></td>
|
360 |
-
</tr>
|
361 |
-
<tr>
|
362 |
-
<th><?php _e( 'Rate:', 'custom-login' ); ?></th>
|
363 |
-
<td><?php _e( '<a href="http://wordpress.org/extend/plugins/custom-login/">This plugin on WordPress.org</a>.', 'custom-login' ); ?></td>
|
364 |
-
</tr>
|
365 |
-
<tr>
|
366 |
-
<th><?php _e( 'Share:', 'custom-login' ); ?></th>
|
367 |
-
<td><?php _e( 'Your design on <a href="http://www.flickr.com/groups/custom-login/"><span style="color:#0066DC;font-weight:bold;">Flick</span><span style="color:#ff0084;font-weight:bold;">r</span></a>.', 'custom-login' ); ?></td>
|
368 |
-
</tr>
|
369 |
-
<tr>
|
370 |
-
<th><?php _e( 'Support:', 'custom-login' ); ?></th>
|
371 |
-
<td><?php _e( '<a href="http://wordpress.org/support/plugin/custom-login">WordPress support forums</a>.', 'custom-login' ); ?></td>
|
372 |
-
</tr>
|
373 |
-
<tr>
|
374 |
-
<th><?php _e( 'Contribute:', 'custom-login' ); ?></th>
|
375 |
-
<td><?php _e( '<a href="https://github.com/thefrosty/custom-login">GitHub</a>.', 'custom-login' ); ?></td>
|
376 |
-
</tr>
|
377 |
-
<tr class="alt">
|
378 |
-
<th><?php _e( 'Go PRO:', 'custom-login' ); ?></th>
|
379 |
-
<td><?php _e( '<a href="http://extendd.com/plugin/custom-login-pro/?ref=custom-login&url='.get_home_url().'">Custom Login PRO</a>.', 'custom-login' ); ?></td>
|
380 |
-
</tr>
|
381 |
-
</table><!-- .form-table --><?php
|
382 |
-
}
|
383 |
-
|
384 |
-
/**
|
385 |
-
* Displays the preview meta box.
|
386 |
-
*
|
387 |
-
* @since 0.8
|
388 |
-
*/
|
389 |
-
function custom_login_dashboard_meta_box() { ?>
|
390 |
-
|
391 |
-
<table class="form-table side">
|
392 |
-
<tr>
|
393 |
-
<td>
|
394 |
-
<input id="hide_dashboard" name="hide_dashboard" type="checkbox" <?php checked( custom_login_get_setting( 'hide_dashboard' ), true ); ?> value="true" />
|
395 |
-
<span class="hide"><?php _e( 'Hide the dashboard widget?', 'custom-login' ); ?></span>
|
396 |
-
</td>
|
397 |
-
</tr>
|
398 |
-
<tr>
|
399 |
-
<td>
|
400 |
-
<input id="disable_presstrends" name="disable_presstrends" type="checkbox" <?php checked( custom_login_get_setting( 'disable_presstrends' ), true ); ?> value="true" />
|
401 |
-
<span class="hide"><?php _e( 'Disable <a href="http://presstrends.io">presstrends.io</a>', 'custom-login' ); ?></span>
|
402 |
-
</td>
|
403 |
-
</tr>
|
404 |
-
</table><!-- .form-table --><?php
|
405 |
-
|
406 |
-
if ( defined( 'WP_LOCAL_DEV' ) && WP_LOCAL_DEV ) echo '<code>' . print_r( CUSTOM_LOGIN_FILE, true ) . '</code>';
|
407 |
-
}
|
408 |
-
|
409 |
-
/**
|
410 |
-
* Displays the preview meta box.
|
411 |
-
*
|
412 |
-
* @since 0.8
|
413 |
-
*/
|
414 |
-
function custom_login_preview_meta_box() { ?>
|
415 |
-
|
416 |
-
<p style="font-weight: bold; text-align: center;"><a class="thickbox thickbox-preview" href="<?php echo wp_login_url(); ?>?TB_iframe=true" title=""><?php _e( 'Click here to see a live preview!', 'custom-login' ); ?></a></p>
|
417 |
-
<p style="text-align: center;"><small><?php //_e( '(May not work as of WordPress 3.1.1)', 'custom-login' ); ?></small></p><?php
|
418 |
-
}
|
419 |
-
|
420 |
-
///////////////////////////////////////////////////////////////////////////////////////////////////////////
|
421 |
-
///////////////////////////////////////////////////////////////////////////////////////////////////////////
|
422 |
-
///////////////////////////////////////////////////////////////////////////////////////////////////////////
|
423 |
-
// login_form_border_top_color
|
424 |
-
///////////////////////////////////////////////////////////////////////////////////////////////////////////
|
425 |
-
|
426 |
-
/**
|
427 |
-
* Displays the general meta box.
|
428 |
-
*
|
429 |
-
* @since 0.8
|
430 |
-
*/
|
431 |
-
function custom_login_general_meta_box() {
|
432 |
-
|
433 |
-
$background_size = array( 'none', 'cover', 'contain', 'flex' );
|
434 |
-
|
435 |
-
?>
|
436 |
-
<table class="form-table">
|
437 |
-
<th>
|
438 |
-
<label for="html_background_color"><?php _e( 'html background color:', 'custom-login' ); ?></label>
|
439 |
-
</th>
|
440 |
-
<td>
|
441 |
-
<input class="color {hash:true,required:false,adjust:false}" id="html_background_color" name="html_background_color" value="<?php echo custom_login_get_setting( 'html_background_color' ); ?>" size="10" maxlength="21" />
|
442 |
-
<a class="question" title="Help & Examples">[?]</a><br />
|
443 |
-
<span class="hide"><?php _e( 'Use HEX color <strong>with</strong> “#” <strong>or</strong> RGB/A format.<br />
|
444 |
-
Example: ¹<code>#121212</code> ²<code>rgba(255,255,255,0.4)</code>', 'custom-login' ); ?>
|
445 |
-
</span>
|
446 |
-
</td>
|
447 |
-
</tr>
|
448 |
-
|
449 |
-
<tr>
|
450 |
-
<th>
|
451 |
-
<label for="html_background_url"><?php _e( 'html background url:', 'custom-login' ); ?></label>
|
452 |
-
</th>
|
453 |
-
<td>
|
454 |
-
<input class="upload_image" id="html_background_url" name="html_background_url" value="<?php echo custom_login_get_setting( 'html_background_url' ); ?>" size="40" />
|
455 |
-
<input class="upload_image_button" type="button" value="Upload" />
|
456 |
-
<a class="question" title="Help & Examples">[?]</a><br />
|
457 |
-
<span class="hide"><?php _e( 'Upload an image and put the full path here.<br />
|
458 |
-
Suggested size: <code>10px X 500px</code> (for a repeating background) or<br />
|
459 |
-
Full size image with a 100% stretched to fit window image.', 'custom-login' ); ?>
|
460 |
-
</span>
|
461 |
-
</td>
|
462 |
-
</tr>
|
463 |
-
|
464 |
-
<tr>
|
465 |
-
<th>
|
466 |
-
<label for="html_background_repeat"><?php _e( 'html background repeat:', 'custom-login' ); ?></label>
|
467 |
-
</th>
|
468 |
-
<td>
|
469 |
-
<?php $background_repeat = array( 'no-repeat', 'repeat', 'repeat-x', 'repeat-y' ); ?>
|
470 |
-
<select name="html_background_repeat" id="html_background_repeat" style="width:88px;">
|
471 |
-
<?php foreach ( $background_repeat as $option ) { ?>
|
472 |
-
<option value="<?php echo $option; ?>" <?php selected( $option, custom_login_get_setting( 'html_background_repeat' ) ); ?>><?php echo $option; ?></option>
|
473 |
-
<?php } ?>
|
474 |
-
</select>
|
475 |
-
<a class="question" title="Help & Examples">[?]</a><br />
|
476 |
-
<span class="hide"><?php _e( 'Use <code>no-repeat</code>, <code>repeat</code>, <code>repeat-x</code> or <code>repeat-y.</code>', 'custom-login' ); ?></span>
|
477 |
-
</td>
|
478 |
-
</tr>
|
479 |
-
|
480 |
-
<tr>
|
481 |
-
<th>
|
482 |
-
<label for="html_background_size"><?php _e( 'html background size:', 'custom-login' ); ?></label>
|
483 |
-
</th>
|
484 |
-
<td>
|
485 |
-
<select name="html_background_size" id="html_background_size" style="width:88px;">
|
486 |
-
<?php foreach ( $background_size as $option ) { ?>
|
487 |
-
<option value="<?php echo $option; ?>" <?php selected( $option, custom_login_get_setting( 'html_background_size' ) ); ?>><?php echo $option; ?></option>
|
488 |
-
<?php } ?>
|
489 |
-
</select>
|
490 |
-
<a class="question" title="Help & Examples">[?]</a><br />
|
491 |
-
<span class="hide"><?php _e( 'See <a href="http://css-tricks.com/perfect-full-page-background-image/">CSS-Tricks</a> and <a href="http://davidwalsh.name/background-size">David Walsh</a> for examples.', 'custom-login' ); ?></span>
|
492 |
-
</td>
|
493 |
-
</tr>
|
494 |
-
<!-- Break -->
|
495 |
-
|
496 |
-
<tr style="border-top: 1px solid #eee;">
|
497 |
-
<th>
|
498 |
-
<label for="login_form_logo"><?php _e( 'Logo:', 'custom-login' ); ?></label>
|
499 |
-
</th>
|
500 |
-
<td>
|
501 |
-
<input class="upload_image" id="login_form_logo" name="login_form_logo" value="<?php echo custom_login_get_setting( 'login_form_logo' ); ?>" size="40" />
|
502 |
-
<input class="upload_image_button" type="button" value="Upload" />
|
503 |
-
<a class="question" title="Help & Examples">[?]</a><br />
|
504 |
-
<span class="hide"><?php _e( 'Upload an image and put the full path here.<br />
|
505 |
-
Suggested size: <code>310px X 70px</code>, which will replace WordPress logo. Be sure to leave blank if not in use. NOTE: Will go <strong>above</strong> the form and it′s border.', 'custom-login' ); ?>
|
506 |
-
</span>
|
507 |
-
</td>
|
508 |
-
</tr>
|
509 |
-
<!-- Break -->
|
510 |
-
|
511 |
-
<tr style="border-top: 1px solid #eee;">
|
512 |
-
<th>
|
513 |
-
<label for="login_form_background_color"><?php _e( 'login form background color:', 'custom-login' ); ?></label>
|
514 |
-
</th>
|
515 |
-
<td>
|
516 |
-
<input class="color {hash:true,required:false,adjust:false}" id="login_form_background_color" name="login_form_background_color" value="<?php echo custom_login_get_setting( 'login_form_background_color' ); ?>" size="10" maxlength="21" />
|
517 |
-
<a class="question" title="Help & Examples">[?]</a><br />
|
518 |
-
<span class="hide"><?php _e( 'Use HEX color <strong>with</strong> “#” or RGB/A format.<br />
|
519 |
-
Example: ¹<code>#121212</code> ²<code>rgba(255,255,255,0.4)</code>', 'custom-login' ); ?>
|
520 |
-
</span>
|
521 |
-
</td>
|
522 |
-
</tr>
|
523 |
-
|
524 |
-
<tr>
|
525 |
-
<th>
|
526 |
-
<label for="login_form_background"><?php _e( 'login form background url:', 'custom-login' ); ?></label>
|
527 |
-
</th>
|
528 |
-
<td>
|
529 |
-
<input class="upload_image" id="login_form_background" name="login_form_background" value="<?php echo custom_login_get_setting( 'login_form_background' ); ?>" size="40" />
|
530 |
-
<input class="upload_image_button" type="button" value="Upload" />
|
531 |
-
<a class="question" title="Help & Examples">[?]</a><br />
|
532 |
-
<span class="hide"><?php _e( 'Upload an image and put the full path here. Suggested size: <code>308px X 108px</code><br />
|
533 |
-
My suggestion: use a transparent .png or .gif. <a href="' . CUSTOM_LOGIN_URL . 'library/psd/custom-login.psd">Download included .psd file</a>.', 'custom-login' ); ?>
|
534 |
-
</span>
|
535 |
-
</td>
|
536 |
-
</tr>
|
537 |
-
|
538 |
-
<tr>
|
539 |
-
<th>
|
540 |
-
<label for="login_form_background_size"><?php _e( 'form background size:', 'custom-login' ); ?></label>
|
541 |
-
</th>
|
542 |
-
<td>
|
543 |
-
<select name="login_form_background_size" id="login_form_background_size" style="width:88px;">
|
544 |
-
<?php foreach ( $background_size as $option ) { ?>
|
545 |
-
<option value="<?php echo $option; ?>" <?php selected( $option, custom_login_get_setting( 'login_form_background_size' ) ); ?>><?php echo $option; ?></option>
|
546 |
-
<?php } ?>
|
547 |
-
</select>
|
548 |
-
<a class="question" title="Help & Examples">[?]</a><br />
|
549 |
-
<span class="hide"><?php _e( 'See <a href="http://css-tricks.com/perfect-full-page-background-image/">CSS-Tricks</a> and <a href="http://davidwalsh.name/background-size">David Walsh</a> for examples.', 'custom-login' ); ?></span>
|
550 |
-
</td>
|
551 |
-
</tr>
|
552 |
-
|
553 |
-
<tr>
|
554 |
-
<th>
|
555 |
-
<label for="login_form_border_radius"><?php _e( 'login form border radius:', 'custom-login' ); ?></label>
|
556 |
-
</th>
|
557 |
-
<td>
|
558 |
-
<input id="login_form_border_radius" name="login_form_border_radius" value="<?php echo custom_login_get_setting( 'login_form_border_radius' ); ?>" size="3" maxlength="2" />px
|
559 |
-
<a class="question" title="Help & Examples">[?]</a><br />
|
560 |
-
<span class="hide"><?php _e( 'Choose your border radius, ie <code>8</code> or <code>12</code>. Do not put “<strong>px</strong>”!', 'custom-login' ); ?></span>
|
561 |
-
</td>
|
562 |
-
</tr>
|
563 |
-
|
564 |
-
<tr>
|
565 |
-
<th>
|
566 |
-
<label for="login_form_border"><?php _e( 'login form border thickness:', 'custom-login' ); ?></label>
|
567 |
-
</th>
|
568 |
-
<td>
|
569 |
-
<input id="login_form_border" name="login_form_border" value="<?php echo custom_login_get_setting( 'login_form_border' ); ?>" size="2" maxlength="2" />px
|
570 |
-
<a class="question" title="Help & Examples">[?]</a><br />
|
571 |
-
<span class="hide"><?php _e( 'Choose your border thickness, i.e. <code>1</code> or <code>2</code>. Do not put “<strong>px</strong>”!', 'custom-login' ); ?></span>
|
572 |
-
</td>
|
573 |
-
</tr>
|
574 |
-
|
575 |
-
<tr>
|
576 |
-
<th>
|
577 |
-
<label for="login_form_border_color"><?php _e( 'login form border color:', 'custom-login' ); ?></label>
|
578 |
-
</th>
|
579 |
-
<td>
|
580 |
-
<input class="color {hash:true,required:false,adjust:false}" id="login_form_border_color" name="login_form_border_color" value="<?php echo custom_login_get_setting( 'login_form_border_color' ); ?>" size="10" maxlength="21" />
|
581 |
-
<a class="question" title="Help & Examples">[?]</a><br />
|
582 |
-
<span class="hide"><?php _e( 'Use HEX color <strong>with</strong> “#” or RGB/A format.<br />
|
583 |
-
Example: ¹<code>#121212</code> ²<code>rgba(255,255,255,0.4)</code>', 'custom-login' ); ?>
|
584 |
-
</span>
|
585 |
-
</td>
|
586 |
-
</tr>
|
587 |
-
|
588 |
-
<tr>
|
589 |
-
<th>
|
590 |
-
<label for="login_form_box_shadow_1"><?php _e( 'login form box shadow:', 'custom-login' ); ?></label>
|
591 |
-
</th>
|
592 |
-
<td>
|
593 |
-
<input id="login_form_box_shadow_1" name="login_form_box_shadow_1" value="<?php echo custom_login_get_setting( 'login_form_box_shadow_1' ); ?>" size="2" maxlength="2" />px
|
594 |
-
<input id="login_form_box_shadow_2" name="login_form_box_shadow_2" value="<?php echo custom_login_get_setting( 'login_form_box_shadow_2' ); ?>" size="2" maxlength="2" />px
|
595 |
-
<input id="login_form_box_shadow_3" name="login_form_box_shadow_3" value="<?php echo custom_login_get_setting( 'login_form_box_shadow_3' ); ?>" size="2" maxlength="2" />px
|
596 |
-
<input class="color {hash:true,required:false,adjust:false}" id="login_form_box_shadow_4" name="login_form_box_shadow_4" value="<?php echo custom_login_get_setting( 'login_form_box_shadow_4' ); ?>" size="10" maxlength="21" />
|
597 |
-
<a class="question" title="Help & Examples">[?]</a><br />
|
598 |
-
<span class="hide"><?php _e( 'Choose your box shadow settings, i.e. <code>5px 5px 18px #464646</code> <em>example code - <code>offset, offset, blur, color</code></em>.', 'custom-login' ); ?>
|
599 |
-
</span>
|
600 |
-
</td>
|
601 |
-
</tr>
|
602 |
-
|
603 |
-
<tr>
|
604 |
-
<th>
|
605 |
-
<label for="login_form_padding_top"><?php _e( 'login form padding fix:', 'custom-login' ); ?></label>
|
606 |
-
</th>
|
607 |
-
<td>
|
608 |
-
<input id="login_form_padding_top" name="login_form_padding_top" type="checkbox" <?php checked( custom_login_get_setting( 'login_form_padding_top' ), true ); ?> value="true" />
|
609 |
-
<a class="question" title="Help & Examples">[?]</a><br />
|
610 |
-
<span class="hide"><?php _e( 'Select the box if you would like the padding of the form to fit better.', 'custom-login' ); ?>
|
611 |
-
</span>
|
612 |
-
</td>
|
613 |
-
</tr>
|
614 |
-
|
615 |
-
<!-- Break -->
|
616 |
-
|
617 |
-
<tr style="border-top: 1px solid #eee;">
|
618 |
-
<th>
|
619 |
-
<label for="label_color"><?php _e( 'label font color:', 'custom-login' ); ?></label>
|
620 |
-
</th>
|
621 |
-
<td>
|
622 |
-
<input class="color {hash:true,required:false,adjust:false}" id="label_color" name="label_color" value="<?php echo custom_login_get_setting( 'label_color' ); ?>" size="10" maxlength="21" /> <a class="question" title="Help & Examples">[?]</a><br />
|
623 |
-
<span class="hide"><?php _e( 'Use HEX color <strong>with</strong> “#” or RGB/A format.<br />
|
624 |
-
Example: ¹<code>#121212</code> ²<code>rgba(255,255,255,0.4)</code>', 'custom-login' ); ?>
|
625 |
-
</span>
|
626 |
-
</td>
|
627 |
-
</tr>
|
628 |
-
</table><!-- .form-table --><?php
|
629 |
-
}
|
630 |
-
|
631 |
-
/**
|
632 |
-
* Displays the gallery settings meta box.
|
633 |
-
*
|
634 |
-
* @since 0.8
|
635 |
-
*/
|
636 |
-
function custom_login_advanced_meta_box() { ?>
|
637 |
-
|
638 |
-
<table class="form-table">
|
639 |
-
<tr>
|
640 |
-
<th>
|
641 |
-
<label for="custom_css"><?php _e( 'Custom CSS:', 'custom-login' ); ?></label>
|
642 |
-
</th>
|
643 |
-
<td>
|
644 |
-
<textarea id="custom_css" name="custom_css" cols="50" rows="3" class="large-text code"><?php echo wp_specialchars_decode( stripslashes( custom_login_get_setting( 'custom_css' ) ), 1, 0, 1 ); ?></textarea>
|
645 |
-
<a class="question" title="Help & Examples">[?]</a><br />
|
646 |
-
<span class="hide"><?php _e( 'Use this box to enter any custom CSS code that may not be shown below.<br />
|
647 |
-
<strong>Example code for resgister, forgot password, back to blog:</strong><br>
|
648 |
-
<code>.login #nav, .login #backtoblog { text-shadow: none;}</code><br />
|
649 |
-
<code>.login #nav a{color:#FFFFFF!important;}
|
650 |
-
.login #nav a:hover{color:#FFFFFF!important;}</code><br />
|
651 |
-
<code>.login #nav a{text-decoration:none!important;}
|
652 |
-
.login #nav a:hover{text-decoration:underline!important;}</code><br />
|
653 |
-
<code>.login #backtoblog a{text-decoration:none!important;}
|
654 |
-
.login #backtoblog a:hover{text-decoration:underline!important;}</code><br />
|
655 |
-
<code>.login #backtoblog a{color:#FFFFFF!important;}
|
656 |
-
.login #backtoblog a:hover{color:#FFFFFF!important;}</code><br />
|
657 |
-
<hr>
|
658 |
-
<strong>Example:</strong> <code>.login #backtoblog a { color:#990000; }</code><br />
|
659 |
-
§ <strong>Example:</strong> <code>#snow { display:block; position:absolute; } #snow img { height:auto; width:100%; }</code><br />
|
660 |
-
§ example CSS code for custom html code example..', 'custom-login' ); ?>
|
661 |
-
</span>
|
662 |
-
</td>
|
663 |
-
</tr>
|
664 |
-
|
665 |
-
<tr>
|
666 |
-
<th>
|
667 |
-
<label for="custom_html"><?php _e( 'Custom HTML:', 'custom-login' ); ?></label>
|
668 |
-
</th>
|
669 |
-
<td>
|
670 |
-
<textarea id="custom_html" name="custom_html" cols="50" rows="3" class="large-text code"><?php echo wp_specialchars_decode( stripslashes( custom_login_get_setting( 'custom_html' ) ), 1, 0, 1 ); ?></textarea>
|
671 |
-
<a class="question" title="Help & Examples">[?]</a><br />
|
672 |
-
<span class="hide"><?php _e( 'Use this box to enter any custom HTML coded that you can add custom style to in the custom CSS box.<br />
|
673 |
-
<strong>Example:</strong> <code><div id="snow"><img src="../image.jpg" alt="" /></div><br /><div id="snow-bird"> </div></code>', 'custom-login' ); ?>
|
674 |
-
</span>
|
675 |
-
</td>
|
676 |
-
</tr>
|
677 |
-
|
678 |
-
<tr>
|
679 |
-
<th>
|
680 |
-
<label for="custom_jquery"><?php _e( 'Custom jQuery:', 'custom-login' ); ?></label>
|
681 |
-
</th>
|
682 |
-
<td>
|
683 |
-
<textarea id="custom_jquery" name="custom_jquery" cols="50" rows="3" class="large-text code"><?php echo wp_specialchars_decode( stripslashes( custom_login_get_setting( 'custom_jquery' ) ), 1, 0, 1 ); ?></textarea>
|
684 |
-
<a class="question" title="Help & Examples">[?]</a><br />
|
685 |
-
<span class="hide"><?php _e( 'Use this box to enter any custom jQuery.<br />
|
686 |
-
<strong>Example:</strong> <code>$(\'#login\').delay(300).fadeTo(800,1);</code>', 'custom-login' ); ?>
|
687 |
-
</span>
|
688 |
-
</td>
|
689 |
-
</tr>
|
690 |
-
</table><!-- .form-table --><?php
|
691 |
-
}
|
692 |
-
|
693 |
-
/**
|
694 |
-
* Displays the support meta box.
|
695 |
-
*
|
696 |
-
* @since 0.8
|
697 |
-
*/
|
698 |
-
function custom_login_tabs_meta_box() { ?>
|
699 |
-
<table class="form-table">
|
700 |
-
<div id="tab" class="tabbed inside">
|
701 |
-
|
702 |
-
<ul class="tabs">
|
703 |
-
<li class="t1 t"><a class="t1 tab">Austin Passy</a></li>
|
704 |
-
<li class="t2 t"><a class="t2 tab">WordCamp<strong>LA</strong></a></li>
|
705 |
-
<li class="t4 t"><a class="t3 tab">Extendd</a></li>
|
706 |
-
<li class="t4 t"><a class="t4 tab">Premium WP Plugins</a></li>
|
707 |
-
<li class="t4 t"><a class="t5 tab">Infield Box</a></li>
|
708 |
-
<li class="t5 t"><a class="t6 tab">Float-O-holics</a></li>
|
709 |
-
<li class="t6 t"><a class="t7 tab">Great Escape</a></li>
|
710 |
-
<li class="t7 t"><a class="t8 tab">PDXbyPix</a></li>
|
711 |
-
<li class="t8 t"><a class="t9 tab">Jeana Arter</a></li>
|
712 |
-
</ul>
|
713 |
-
|
714 |
-
<?php
|
715 |
-
if ( function_exists( 'thefrosty_network_feed' ) ) {
|
716 |
-
thefrosty_network_feed( 'http://feeds.feedburner.com/AustinPassy', '1' );
|
717 |
-
thefrosty_network_feed( 'http://feeds.feedburner.com/WordCampLA', '2' );
|
718 |
-
thefrosty_network_feed( 'http://extendd.com/feed', '3' );
|
719 |
-
thefrosty_network_feed( 'http://extendd.com/feed?post_type=plugin', '4' );
|
720 |
-
thefrosty_network_feed( 'http://infieldbox.com/feed', '5' );
|
721 |
-
thefrosty_network_feed( 'http://floatoholics.com/feed', '6' );
|
722 |
-
thefrosty_network_feed( 'http://greatescapecabofishing.com/feed', '7' );
|
723 |
-
thefrosty_network_feed( 'http://pdxbypix.com/feed', '8' );
|
724 |
-
thefrosty_network_feed( 'http://feeds.feedburner.com/JeanaArter', '9' );
|
725 |
-
} ?>
|
726 |
-
|
727 |
-
</div>
|
728 |
-
</table><!-- .form-table --><?php
|
729 |
-
}
|
730 |
-
|
731 |
-
/**
|
732 |
-
* Displays a settings saved message.
|
733 |
-
*
|
734 |
-
* @since 0.8
|
735 |
-
*/
|
736 |
-
function custom_login_settings_update_message() { ?>
|
737 |
-
<div class="updated fade">
|
738 |
-
<p><strong><?php _e( 'Don′t you feel good. You just saved me.', 'custom-login' ); ?></strong></p>
|
739 |
-
</div><?php
|
740 |
-
}
|
741 |
-
|
742 |
-
/**
|
743 |
-
* Outputs the HTML and calls the meta boxes for the settings page.
|
744 |
-
*
|
745 |
-
* @since 0.8
|
746 |
-
*/
|
747 |
-
function custom_login_settings_page() {
|
748 |
-
global $custom_login;
|
749 |
-
|
750 |
-
$plugin_data = get_plugin_data( CUSTOM_LOGIN_DIR . 'custom-login.php' ); ?>
|
751 |
-
|
752 |
-
<div class="wrap">
|
753 |
-
|
754 |
-
<?php if ( function_exists( 'screen_icon' ) ) screen_icon(); ?>
|
755 |
-
|
756 |
-
<h2><?php _e( 'Custom Login Settings', 'custom-login' ); ?></h2>
|
757 |
-
|
758 |
-
<?php //if ( isset( $_GET['updated'] ) && 'true' == esc_attr( $_GET['updated'] ) ) custom_login_settings_update_message(); ?>
|
759 |
-
|
760 |
-
<div id="poststuff">
|
761 |
-
|
762 |
-
<form method="post" action="<?php echo esc_url( admin_url( 'options-general.php?page=custom-login' ) ); ?>">
|
763 |
-
|
764 |
-
<?php wp_nonce_field( 'custom-login-settings-page' ); ?>
|
765 |
-
<?php wp_nonce_field( 'closedpostboxes', 'closedpostboxesnonce', false ); ?>
|
766 |
-
|
767 |
-
<?php wp_nonce_field( 'meta-box-order', 'meta-box-order-nonce', false ); ?>
|
768 |
-
|
769 |
-
<div class="metabox-holder">
|
770 |
-
<div class="post-box-container column-1 normal"><?php do_meta_boxes( $custom_login->settings_page, 'normal', $plugin_data ); ?></div>
|
771 |
-
<div class="post-box-container column-2 advanced"><?php do_meta_boxes( $custom_login->settings_page, 'advanced', $plugin_data ); ?></div>
|
772 |
-
<div class="post-box-container column-3 side" style="clear:both;"><?php do_meta_boxes( $custom_login->settings_page, 'side', $plugin_data ); ?></div>
|
773 |
-
</div>
|
774 |
-
|
775 |
-
<p class="submit" style="clear: both;">
|
776 |
-
<input type="submit" name="Submit" class="button-primary" value="<?php _e( 'Update Settings', 'custom-login' ); ?>" />
|
777 |
-
<input type="hidden" name="custom-login-settings-submit" value="true" />
|
778 |
-
</p><!-- .submit -->
|
779 |
-
|
780 |
-
</form>
|
781 |
-
|
782 |
-
</div><!-- #poststuff -->
|
783 |
-
|
784 |
-
</div><!-- .wrap --><?php
|
785 |
-
}
|
786 |
-
|
787 |
-
/**
|
788 |
-
* Loads the scripts needed for the settings page.
|
789 |
-
*
|
790 |
-
* @since 0.8
|
791 |
-
*/
|
792 |
-
function custom_login_settings_page_enqueue_script() {
|
793 |
-
wp_enqueue_script( 'media-upload' );
|
794 |
-
wp_enqueue_script( 'common' );
|
795 |
-
wp_enqueue_script( 'wp-lists' );
|
796 |
-
wp_enqueue_script( 'postbox' );
|
797 |
-
wp_enqueue_script( 'thickbox' );
|
798 |
-
wp_enqueue_script( 'theme-preview' );
|
799 |
-
wp_enqueue_script( 'autosize' );
|
800 |
-
wp_enqueue_script( 'custom-login' );
|
801 |
-
wp_enqueue_script( 'jscolor' );
|
802 |
-
}
|
803 |
-
|
804 |
-
/**
|
805 |
-
* Loads the stylesheets needed for the settings page.
|
806 |
-
*
|
807 |
-
* @since 0.8
|
808 |
-
*/
|
809 |
-
function custom_login_settings_page_enqueue_style() {
|
810 |
-
wp_enqueue_style( 'thickbox' );
|
811 |
-
wp_enqueue_style( 'custom-login-tabs' );
|
812 |
-
wp_enqueue_style( 'custom-login-admin' );
|
813 |
-
}
|
814 |
-
|
815 |
-
/**
|
816 |
-
* Loads the metabox toggle JavaScript in the settings page head.
|
817 |
-
*
|
818 |
-
* @since 0.8
|
819 |
-
*/
|
820 |
-
function custom_login_settings_page_load_scripts() {
|
821 |
-
global $custom_login; ?>
|
822 |
-
<script type="text/javascript">
|
823 |
-
//<![CDATA[
|
824 |
-
jQuery(document).ready( function($) {
|
825 |
-
$('.if-js-closed').removeClass('if-js-closed').addClass('closed');
|
826 |
-
postboxes.add_postbox_toggles( '<?php echo $custom_login->settings_page; ?>' );
|
827 |
-
});
|
828 |
-
//]]>
|
829 |
-
</script><?php
|
830 |
-
}
|
831 |
-
|
832 |
-
/**
|
833 |
-
* Plugin Action /Settings on plugins page
|
834 |
-
* @since 0.4.2
|
835 |
-
* @package plugin
|
836 |
-
*/
|
837 |
-
function custom_login_plugin_actions( $links, $file ) {
|
838 |
-
if( $file == 'custom-login/custom-login.php' && function_exists( "admin_url" ) ) {
|
839 |
-
$settings_link = '<a href="' . admin_url( 'options-general.php?page=custom-login' ) . '">' . __('Settings', 'custom-login' ) . '</a>';
|
840 |
-
array_unshift( $links, $settings_link ); // before other links
|
841 |
-
$links[] = '<a href="http://extendd.com/plugin/custom-login-pro/?ref=plugin-upgrade&refer=' . urlencode( home_url() ) . '" target="_blank">' . __('Go Pro', 'custom-login' ) . '</a>';
|
842 |
-
}
|
843 |
-
return $links;
|
844 |
-
}
|
845 |
-
|
846 |
-
/**
|
847 |
-
* Warnings
|
848 |
-
* @since 0.5
|
849 |
-
* @package admin
|
850 |
-
*/
|
851 |
-
function custom_login_admin_warnings() {
|
852 |
-
global $custom_login;
|
853 |
-
|
854 |
-
function custom_login_warning() {
|
855 |
-
global $custom_login;
|
856 |
-
|
857 |
-
if ( custom_login_get_setting( 'use_custom' ) != true )?>
|
858 |
-
<p id="custom-login-warning" class="updated fade below-h2" style="padding: 5px 10px;">
|
859 |
-
<strong><?php sprintf( _e( 'Custom Login plugin is not configured yet. It will use the defualt theme unless you configure the %1$s.', 'custom-login' ), '<a href="' . admin_url( 'options-general.php?page=custom-login' ) . '">options</a>' ); ?></strong>
|
860 |
-
</p><?php
|
861 |
-
}
|
862 |
-
|
863 |
-
add_action( 'admin_notices', 'custom_login_warning' );
|
864 |
-
|
865 |
-
return;
|
866 |
-
}
|
867 |
-
|
868 |
-
/**
|
869 |
-
* RSS Feed
|
870 |
-
* @since 0.3
|
871 |
-
* @updated 1.1
|
872 |
-
* @package Admin
|
873 |
-
*/
|
874 |
-
if ( !function_exists( 'thefrosty_network_feed' ) ) {
|
875 |
-
function thefrosty_network_feed( $url, $count ) {
|
876 |
-
|
877 |
-
$items = custom_login_fetch_rss_items( 3, $url );
|
878 |
-
|
879 |
-
echo '<div class="t' . esc_attr( $count ) . ' tab-content postbox open feed">';
|
880 |
-
echo '<ul>';
|
881 |
-
if ( empty( $items ) ) {
|
882 |
-
echo '<li>' . __( 'Error fetching feed' ) . '</li>';
|
883 |
-
} else {
|
884 |
-
foreach( $items as $item ) : ?>
|
885 |
-
<li>
|
886 |
-
<a href='<?php echo esc_url( $item->get_permalink() ); ?>' title='<?php esc_attr_e( $item->get_description() ); ?>'><?php esc_attr_e( $item->get_title() ); ?></a><br />
|
887 |
-
<span style="font-size:10px; color:#aaa;"><?php esc_attr_e( $item->get_date('F, jS Y | g:i a') ); ?></span>
|
888 |
-
</li>
|
889 |
-
<?php endforeach;
|
890 |
-
}
|
891 |
-
echo '</ul>';
|
892 |
-
echo '</div>';
|
893 |
-
}
|
894 |
-
}
|
895 |
-
|
896 |
-
/**
|
897 |
-
* Fetch RSS items from the feed.
|
898 |
-
*
|
899 |
-
* @param int $num Number of items to fetch.
|
900 |
-
* @param string $feed The feed to fetch.
|
901 |
-
* @return array|bool False on error, array of RSS items on success.
|
902 |
-
*/
|
903 |
-
function custom_login_fetch_rss_items( $num, $feed ) {
|
904 |
-
include_once( ABSPATH . WPINC . '/feed.php' );
|
905 |
-
$rss = fetch_feed( $feed );
|
906 |
-
|
907 |
-
// Bail if feed doesn't work
|
908 |
-
if ( !$rss || is_wp_error( $rss ) )
|
909 |
-
return false;
|
910 |
-
|
911 |
-
$rss_items = $rss->get_items( 0, $rss->get_item_quantity( $num ) );
|
912 |
-
|
913 |
-
// If the feed was erroneous
|
914 |
-
if ( !$rss_items ) {
|
915 |
-
$md5 = md5( $feed );
|
916 |
-
delete_transient( 'feed_' . $md5 );
|
917 |
-
delete_transient( 'feed_mod_' . $md5 );
|
918 |
-
$rss = fetch_feed( $feed );
|
919 |
-
$rss_items = $rss->get_items( 0, $rss->get_item_quantity( $num ) );
|
920 |
-
}
|
921 |
-
|
922 |
-
return $rss_items;
|
923 |
-
}
|
924 |
-
|
925 |
-
?>
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
library/admin/dashboard.php
DELETED
@@ -1,168 +0,0 @@
|
|
1 |
-
<?php
|
2 |
-
|
3 |
-
/**
|
4 |
-
* Load the feed from The Frosty network
|
5 |
-
*
|
6 |
-
* @since 12/3/12
|
7 |
-
* @updated 12/3/12
|
8 |
-
*/
|
9 |
-
if ( !class_exists( 'the_frosty_dashboard' ) ) :
|
10 |
-
class the_frosty_dashboard {
|
11 |
-
|
12 |
-
/**
|
13 |
-
* To infinity.
|
14 |
-
*
|
15 |
-
*/
|
16 |
-
function __construct() {
|
17 |
-
add_action( 'wp_dashboard_setup', array( $this, 'add_dashboard_widget' ) );
|
18 |
-
}
|
19 |
-
|
20 |
-
/**
|
21 |
-
* Add the dashboard widget
|
22 |
-
*
|
23 |
-
* @return void
|
24 |
-
*/
|
25 |
-
function add_dashboard_widget() {
|
26 |
-
wp_add_dashboard_widget( 'thefrosty_dashboard', __( 'The Frosty Network <em>feeds</em>' ), array( $this, 'dashboard' ), array( $this, 'dashboard_control' ) );
|
27 |
-
}
|
28 |
-
|
29 |
-
/**
|
30 |
-
* Fetch RSS items from the feed.
|
31 |
-
*
|
32 |
-
* @param int $num Number of items to fetch.
|
33 |
-
* @param string $feed The feed to fetch.
|
34 |
-
* @return array|bool False on error, array of RSS items on success.
|
35 |
-
*/
|
36 |
-
public function fetch_rss_items( $num, $feed ) {
|
37 |
-
include_once( ABSPATH . WPINC . '/feed.php' );
|
38 |
-
$rss = fetch_feed( $feed );
|
39 |
-
|
40 |
-
// Bail if feed doesn't work
|
41 |
-
if ( !$rss || is_wp_error( $rss ) )
|
42 |
-
return false;
|
43 |
-
|
44 |
-
$rss_items = $rss->get_items( 0, $rss->get_item_quantity( $num ) );
|
45 |
-
|
46 |
-
// If the feed was erroneous
|
47 |
-
if ( !$rss_items ) {
|
48 |
-
$md5 = md5( $feed );
|
49 |
-
delete_transient( 'feed_' . $md5 );
|
50 |
-
delete_transient( 'feed_mod_' . $md5 );
|
51 |
-
$rss = fetch_feed( $feed );
|
52 |
-
$rss_items = $rss->get_items( 0, $rss->get_item_quantity( $num ) );
|
53 |
-
}
|
54 |
-
return $rss_items;
|
55 |
-
}
|
56 |
-
|
57 |
-
/**
|
58 |
-
* Output CSS
|
59 |
-
*
|
60 |
-
* @return string
|
61 |
-
*/
|
62 |
-
function style() {
|
63 |
-
?>
|
64 |
-
<style>
|
65 |
-
#frosty-dashboard .frosty-image {
|
66 |
-
display: inline-block;
|
67 |
-
height: 25px;
|
68 |
-
float: left;
|
69 |
-
width: 25px;
|
70 |
-
overflow: hidden
|
71 |
-
}
|
72 |
-
#frosty-dashboard .frosty-image span {
|
73 |
-
background: url('<?php echo esc_url( plugin_dir_url( __FILE__ ) ) . 'Sprite.jpg'; ?>') 0 0 no-repeat;
|
74 |
-
-webkit-background-size: 300px 25px;
|
75 |
-
-moz-background-size: 300px 25px;
|
76 |
-
-ms-background-size: 300px 25px;
|
77 |
-
-o-background-size: 300px 25px;
|
78 |
-
background-size: 300px 25px;
|
79 |
-
display: inline-block;
|
80 |
-
height: 25px;
|
81 |
-
width: 25px
|
82 |
-
}
|
83 |
-
#frosty-dashboard li { padding-left:30px }
|
84 |
-
span.austinpassy { background-position: -25px 0 !important }
|
85 |
-
span.frostywebdesigns { background-position: -50px 0 !important }
|
86 |
-
span.jeanaarter { background-position: -75px 0 !important }
|
87 |
-
span.wordcampla { background-position: -100px 0 !important }
|
88 |
-
span.floatoholics { background-position: -125px 0 !important }
|
89 |
-
span.thefrosty { background-position: -150px 0 !important }
|
90 |
-
span.greatescapecabofishing { background-position: -175px 0 !important }
|
91 |
-
span.eateryengine { background-position: -200px 0 !important }
|
92 |
-
span.extendd { background-position: -225px 0 !important }
|
93 |
-
</style>
|
94 |
-
<?php
|
95 |
-
}
|
96 |
-
|
97 |
-
/**
|
98 |
-
* Print the dashboard widget
|
99 |
-
*
|
100 |
-
* @return string
|
101 |
-
*/
|
102 |
-
function dashboard( $sidebar_args ) {
|
103 |
-
$widget_options = get_option( 'the_frosty_dashboard_widget_options' );
|
104 |
-
|
105 |
-
$item_count = !empty( $widget_options['items'] ) ? $widget_options['items'] : 6;
|
106 |
-
$rss_items = $this->fetch_rss_items( $item_count, 'http://pipes.yahoo.com/pipes/pipe.run?_id=52c339c010550750e3e64d478b1c96ea&_render=rss' );
|
107 |
-
|
108 |
-
$this->style();
|
109 |
-
$content = '<ul id="frosty-dashboard">';
|
110 |
-
if ( !$rss_items ) {
|
111 |
-
$content .= '<li>' . __( 'Error fetching feed' ) . '</li>';
|
112 |
-
} else {
|
113 |
-
foreach ( $rss_items as $item ) {
|
114 |
-
$title = esc_attr( strtolower( sanitize_title_with_dashes( htmlentities( $item->get_title() ) ) ) );
|
115 |
-
|
116 |
-
$class = str_replace( array( 'http://', 'https://' ), '', $item->get_permalink() );
|
117 |
-
$class = str_replace( array( '2010.', '2011.', '2012.', '2013.', '2014.', '2015.' ), '', $class );
|
118 |
-
$class = str_replace( array( '.com/', '.net/', '.org/', '.la/', 'la.' ), ' ', $class );
|
119 |
-
$class = str_replace( array( '2011/', '2012/', '2013/', '2014/' ), '', $class );
|
120 |
-
$class = str_replace( array( '01/', '02/', '03/', '04/', '05/', '06/', '07/', '08/', '09/', '10/', '11/', '12/' ), '', $class );
|
121 |
-
$class = str_replace( $title, '', $class );
|
122 |
-
$class = str_replace( '/', '', $class );
|
123 |
-
$class = str_replace( 'feedproxy.google', '', $class );
|
124 |
-
$class = str_replace( '~r', '', $class );
|
125 |
-
$class = str_replace( '~', ' ', $class );
|
126 |
-
$class = trim( $class );
|
127 |
-
list( $class, $therest ) = explode( ' ', $class );
|
128 |
-
// Redundant, I know. Can you make a preg_replace for this?
|
129 |
-
|
130 |
-
$url = preg_replace( '/#.*/', '', esc_url( $item->get_permalink(), null, 'display' ) );
|
131 |
-
$content .= '<div class="frosty-image"><span class="' . strtolower( $class ) . '"> </span></div>';
|
132 |
-
$content .= '<li>';
|
133 |
-
$content .= '<a class="rsswidget" href="' . $url . '">' . esc_html( $item->get_title() ) . '</a> ';
|
134 |
-
$content .= '<span style="font-size:10px; color:#aaa;">' . esc_attr( $item->get_date('F, jS Y') ) . '</span>';
|
135 |
-
$content .= '</li>';
|
136 |
-
}
|
137 |
-
}
|
138 |
-
$content .= '</ul>';
|
139 |
-
echo $content;
|
140 |
-
}
|
141 |
-
|
142 |
-
/**
|
143 |
-
* Print the dashboard control widget
|
144 |
-
*
|
145 |
-
* @return string
|
146 |
-
*/
|
147 |
-
function dashboard_control() {
|
148 |
-
if ( !$widget_options = get_option( 'the_frosty_dashboard_widget_options' ) )
|
149 |
-
$widget_options = array();
|
150 |
-
|
151 |
-
if ( 'POST' == $_SERVER['REQUEST_METHOD'] && isset($_POST['widget_id']) && 'thefrosty_dashboard' == $_POST['widget_id'] ) {
|
152 |
-
$items = stripslashes_deep( $_POST['thefrosty_dashboard_items'] );
|
153 |
-
$widget_options['items'] = $items;
|
154 |
-
update_option( 'the_frosty_dashboard_widget_options', $widget_options );
|
155 |
-
}
|
156 |
-
//print_r( $widget_options ); ?>
|
157 |
-
<p><label for="thefrosty_dashboard_items"><?php _e('How many items would you like to display?'); ?></label>
|
158 |
-
<select name="thefrosty_dashboard_items">
|
159 |
-
<?php for ( $i = 3; $i <= 20; ++$i ) echo "<option value='$i' " . selected( $items, $i, false ) . ">$i</option>"; ?>
|
160 |
-
</select></p>
|
161 |
-
<?php
|
162 |
-
}
|
163 |
-
|
164 |
-
}
|
165 |
-
$the_frosty_dashboard = new the_frosty_dashboard;
|
166 |
-
endif;
|
167 |
-
|
168 |
-
?>
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
library/admin/presstrends.php
DELETED
@@ -1,69 +0,0 @@
|
|
1 |
-
<?php
|
2 |
-
|
3 |
-
function presstrends_dirname() {
|
4 |
-
return dirname( dirname( __FILE__ ) );
|
5 |
-
}
|
6 |
-
/**
|
7 |
-
* PressTrends Plugin API
|
8 |
-
*/
|
9 |
-
function presstrends_CustomLogin_plugin() {
|
10 |
-
|
11 |
-
// PressTrends Account API Key
|
12 |
-
$api_key = 'ehq5aafw0sujyv62ks5roabop0flmh0admwh';
|
13 |
-
$auth = 'ynpujn2oj1xgterwuv8ce93gmx9y3w1lr';
|
14 |
-
|
15 |
-
// Start of Metrics
|
16 |
-
global $wpdb;
|
17 |
-
$data = get_transient( 'presstrends_cache_data' );
|
18 |
-
if ( !$data || $data == '' ) {
|
19 |
-
$api_base = 'http://api.presstrends.io/index.php/api/pluginsites/update/auth/';
|
20 |
-
$url = $api_base . $auth . '/api/' . $api_key . '/';
|
21 |
-
|
22 |
-
$count_posts = wp_count_posts();
|
23 |
-
$count_pages = wp_count_posts( 'page' );
|
24 |
-
$comments_count = wp_count_comments();
|
25 |
-
|
26 |
-
// wp_get_theme was introduced in 3.4, for compatibility with older versions, let's do a workaround for now.
|
27 |
-
if ( function_exists( 'wp_get_theme' ) ) {
|
28 |
-
$theme_data = wp_get_theme();
|
29 |
-
$theme_name = urlencode( $theme_data->Name );
|
30 |
-
} else {
|
31 |
-
$theme_data = get_theme_data( get_stylesheet_directory() . '/style.css' );
|
32 |
-
$theme_name = $theme_data['Name'];
|
33 |
-
}
|
34 |
-
|
35 |
-
$plugin_name = '&';
|
36 |
-
foreach ( get_plugins() as $plugin_info ) {
|
37 |
-
$plugin_name .= $plugin_info['Name'] . '&';
|
38 |
-
}
|
39 |
-
// CHANGE __FILE__ PATH IF LOCATED OUTSIDE MAIN PLUGIN FILE
|
40 |
-
$plugin_data = get_plugin_data( CUSTOM_LOGIN_FILE );
|
41 |
-
$posts_with_comments = $wpdb->get_var( "SELECT COUNT(*) FROM $wpdb->posts WHERE post_type='post' AND comment_count > 0" );
|
42 |
-
$data = array(
|
43 |
-
'url' => stripslashes( str_replace( array( 'http://', '/', ':' ), '', site_url() ) ),
|
44 |
-
'posts' => $count_posts->publish,
|
45 |
-
'pages' => $count_pages->publish,
|
46 |
-
'comments' => $comments_count->total_comments,
|
47 |
-
'approved' => $comments_count->approved,
|
48 |
-
'spam' => $comments_count->spam,
|
49 |
-
'pingbacks' => $wpdb->get_var( "SELECT COUNT(comment_ID) FROM $wpdb->comments WHERE comment_type = 'pingback'" ),
|
50 |
-
'post_conversion' => ( $count_posts->publish > 0 && $posts_with_comments > 0 ) ? number_format( ( $posts_with_comments / $count_posts->publish ) * 100, 0, '.', '' ) : 0,
|
51 |
-
'theme_version' => $plugin_data['Version'],
|
52 |
-
'theme_name' => $theme_name,
|
53 |
-
'site_name' => str_replace( ' ', '', get_bloginfo( 'name' ) ),
|
54 |
-
'plugins' => count( get_option( 'active_plugins' ) ),
|
55 |
-
'plugin' => urlencode( $plugin_name ),
|
56 |
-
'wpversion' => get_bloginfo( 'version' ),
|
57 |
-
);
|
58 |
-
|
59 |
-
foreach ( $data as $k => $v ) {
|
60 |
-
$url .= $k . '/' . $v . '/';
|
61 |
-
}
|
62 |
-
wp_remote_get( $url );
|
63 |
-
set_transient( 'presstrends_cache_data', $data, 60 * 60 * 24 );
|
64 |
-
}
|
65 |
-
}
|
66 |
-
|
67 |
-
// PressTrends WordPress Action
|
68 |
-
add_action('admin_init', 'presstrends_CustomLogin_plugin');
|
69 |
-
?>
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
library/css/admin.css
DELETED
@@ -1,49 +0,0 @@
|
|
1 |
-
/* Theme settings page. */
|
2 |
-
.form-table.side th {
|
3 |
-
width: 20% !important;
|
4 |
-
}
|
5 |
-
#custom-login-general-meta-box .form-table th {
|
6 |
-
width: 33% !important;
|
7 |
-
}
|
8 |
-
|
9 |
-
.upload_image {
|
10 |
-
float: left;
|
11 |
-
margin-right: 5px;
|
12 |
-
}
|
13 |
-
.upload_image_button {
|
14 |
-
height: 22px;
|
15 |
-
padding-top: 1px;
|
16 |
-
}
|
17 |
-
.upload_image_button:hover {
|
18 |
-
cursor: pointer;
|
19 |
-
}
|
20 |
-
|
21 |
-
.metabox-holder .column-1 {
|
22 |
-
float: left;
|
23 |
-
width: 65%;
|
24 |
-
}
|
25 |
-
.metabox-holder .column-2 {
|
26 |
-
float: right;
|
27 |
-
width: 33%;
|
28 |
-
}
|
29 |
-
.metabox-holder .column-3 {
|
30 |
-
clear: both;
|
31 |
-
width: 100%;
|
32 |
-
}
|
33 |
-
|
34 |
-
/* Questions */
|
35 |
-
a.question, a.addrows {
|
36 |
-
font-weight: bold;
|
37 |
-
text-decoration: none;
|
38 |
-
}
|
39 |
-
a.question:hover, a.addrows:hover {
|
40 |
-
cursor: pointer;
|
41 |
-
}
|
42 |
-
textarea {
|
43 |
-
display: block;
|
44 |
-
-webkit-transition: height 0.2s;
|
45 |
-
-moz-transition: height 0.2s;
|
46 |
-
-ms-transition: height 0.2s;
|
47 |
-
-o-transition: height 0.2s;
|
48 |
-
transition: height 0.2s;
|
49 |
-
}
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
library/css/custom-login.css
DELETED
@@ -1,171 +0,0 @@
|
|
1 |
-
body {
|
2 |
-
background-color: #666;
|
3 |
-
background-image: -webkit-gradient(
|
4 |
-
linear,
|
5 |
-
left bottom,
|
6 |
-
left top,
|
7 |
-
color-stop(0, #666),
|
8 |
-
color-stop(1, #999)
|
9 |
-
);
|
10 |
-
background-image: -webkit-linear-gradient(
|
11 |
-
center bottom,
|
12 |
-
color-stop(0, #666) 37%,
|
13 |
-
color-stop(1, #999) 69%
|
14 |
-
);
|
15 |
-
background-image: -moz-linear-gradient(
|
16 |
-
center bottom,
|
17 |
-
color-stop(0, #666) 37%,
|
18 |
-
color-stop(1, #999) 69%
|
19 |
-
);
|
20 |
-
background-image: -ms-linear-gradient(
|
21 |
-
center bottom,
|
22 |
-
color-stop(0, #666) 37%,
|
23 |
-
color-stop(1, #999) 69%
|
24 |
-
);
|
25 |
-
background-image: -o-linear-gradient(
|
26 |
-
center bottom,
|
27 |
-
color-stop(0, #666) 37%,
|
28 |
-
color-stop(1, #999) 69%
|
29 |
-
);
|
30 |
-
}
|
31 |
-
body.login {
|
32 |
-
background: grey;
|
33 |
-
}
|
34 |
-
body:before {
|
35 |
-
content: "Powered by the Custom Login lite plugin for WordPress";
|
36 |
-
position: absolute;
|
37 |
-
left: 25px;
|
38 |
-
bottom: 10px;
|
39 |
-
}
|
40 |
-
body:after {
|
41 |
-
content: "";
|
42 |
-
position: absolute;
|
43 |
-
top: 0; left: 0; bottom: 0; right: 0;
|
44 |
-
background-image:
|
45 |
-
-webkit-gradient(linear, 0 0, 100% 100%,
|
46 |
-
color-stop(.25, rgba(255, 255, 255, .2)),
|
47 |
-
color-stop(.25, transparent), color-stop(.5, transparent),
|
48 |
-
color-stop(.5, rgba(255, 255, 255, .2)),
|
49 |
-
color-stop(.75, rgba(255, 255, 255, .2)),
|
50 |
-
color-stop(.75, transparent), to(transparent)
|
51 |
-
);
|
52 |
-
background-image:
|
53 |
-
-webkit-linear-gradient(
|
54 |
-
-45deg,
|
55 |
-
rgba(255, 255, 255, .2) 25%,
|
56 |
-
transparent 25%,
|
57 |
-
transparent 50%,
|
58 |
-
rgba(255, 255, 255, .2) 50%,
|
59 |
-
rgba(255, 255, 255, .2) 75%,
|
60 |
-
transparent 75%,
|
61 |
-
transparent
|
62 |
-
);
|
63 |
-
background-image:
|
64 |
-
-moz-linear-gradient(
|
65 |
-
-45deg,
|
66 |
-
rgba(255, 255, 255, .2) 25%,
|
67 |
-
transparent 25%,
|
68 |
-
transparent 50%,
|
69 |
-
rgba(255, 255, 255, .2) 50%,
|
70 |
-
rgba(255, 255, 255, .2) 75%,
|
71 |
-
transparent 75%,
|
72 |
-
transparent
|
73 |
-
);
|
74 |
-
background-image:
|
75 |
-
-ms-linear-gradient(
|
76 |
-
-45deg,
|
77 |
-
rgba(255, 255, 255, .2) 25%,
|
78 |
-
transparent 25%,
|
79 |
-
transparent 50%,
|
80 |
-
rgba(255, 255, 255, .2) 50%,
|
81 |
-
rgba(255, 255, 255, .2) 75%,
|
82 |
-
transparent 75%,
|
83 |
-
transparent
|
84 |
-
);
|
85 |
-
background-image:
|
86 |
-
-o-linear-gradient(
|
87 |
-
-45deg,
|
88 |
-
rgba(255, 255, 255, .2) 25%,
|
89 |
-
transparent 25%,
|
90 |
-
transparent 50%,
|
91 |
-
rgba(255, 255, 255, .2) 50%,
|
92 |
-
rgba(255, 255, 255, .2) 75%,
|
93 |
-
transparent 75%,
|
94 |
-
transparent
|
95 |
-
);
|
96 |
-
z-index: 1;
|
97 |
-
-webkit-background-size: 50px 50px;
|
98 |
-
-moz-background-size: 50px 50px;
|
99 |
-
overflow: hidden;
|
100 |
-
}
|
101 |
-
|
102 |
-
#login {
|
103 |
-
position: relative;
|
104 |
-
z-index: 2;
|
105 |
-
}
|
106 |
-
#login form {
|
107 |
-
background: #5A5E78;
|
108 |
-
padding-top: 20px;
|
109 |
-
margin-top: 0;
|
110 |
-
-moz-border-radius: 8px;
|
111 |
-
-khtml-border-radius: 8px;
|
112 |
-
-webkit-border-radius: 8px;
|
113 |
-
-o-border-radius: 8px;
|
114 |
-
border-radius: 8px;
|
115 |
-
border: 1px solid #003333;
|
116 |
-
-moz-box-shadow: 8px 8px 18px #122222;
|
117 |
-
-webkit-box-shadow: 8px 8px 18px #122222;
|
118 |
-
-khtml-box-shadow: 8px 8px 18px #122222;
|
119 |
-
-o-box-shadow: 8px 8px 18px #122222;
|
120 |
-
box-shadow: 8px 8px 18px #122222;
|
121 |
-
|
122 |
-
-webkit-transition: all .5s linear;
|
123 |
-
-khtml-transition: all .5s linear;
|
124 |
-
-moz-transition: all .5s linear;
|
125 |
-
-o-transition: all .5s linear;
|
126 |
-
transition: all .5s linear;
|
127 |
-
}
|
128 |
-
#login form:hover, #login form:active {
|
129 |
-
background: #111;
|
130 |
-
border: 1px solid #aaa;
|
131 |
-
-moz-box-shadow: 0 0 28px 15px #ddd;
|
132 |
-
-webkit-box-shadow: 0 0 28px 15px #ddd;
|
133 |
-
-khtml-box-shadow: 0 0 28px 15px #ddd;
|
134 |
-
-o-box-shadow: 0 0 28px 15px #ddd;
|
135 |
-
box-shadow: 0 0 28px 15px #ddd;
|
136 |
-
}
|
137 |
-
|
138 |
-
#login h1 {
|
139 |
-
margin: 0;
|
140 |
-
display: none;
|
141 |
-
}
|
142 |
-
|
143 |
-
.login #nav a, .login #backtoblog a {
|
144 |
-
color: #222 !important;
|
145 |
-
text-shadow: 0 1px 0 #bbb;
|
146 |
-
-moz-text-shadow: 0 1px 0 #bbb;
|
147 |
-
-webkit-text-shadow: 0 1px 0 #bbb;
|
148 |
-
-khtml-text-shadow: 0 1px 0 #bbb;
|
149 |
-
}
|
150 |
-
.login #nav a:hover, .login #backtoblog a:hover {
|
151 |
-
color: #000 !important;
|
152 |
-
}
|
153 |
-
|
154 |
-
label {
|
155 |
-
color: #fff !important;
|
156 |
-
text-shadow: 0 1px 0 #000;
|
157 |
-
-moz-text-shadow: 0 1px 0 #000;
|
158 |
-
-webkit-text-shadow: 0 1px 0 #000;
|
159 |
-
-khtml-text-shadow: 0 1px 0 #000;
|
160 |
-
}
|
161 |
-
|
162 |
-
span.byauthor {
|
163 |
-
color: #ccc;
|
164 |
-
position: absolute;
|
165 |
-
right: 10px;
|
166 |
-
text-decoration: none;
|
167 |
-
top: 7px;
|
168 |
-
}
|
169 |
-
span.byauthor a {
|
170 |
-
position: static !important;
|
171 |
-
}
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
library/css/custom-login.css.php
DELETED
@@ -1,133 +0,0 @@
|
|
1 |
-
<?php
|
2 |
-
|
3 |
-
error_reporting(0);
|
4 |
-
|
5 |
-
/**
|
6 |
-
* Extract the options from the database
|
7 |
-
* print_r( get_option( 'custom_login_settings' ) );
|
8 |
-
*
|
9 |
-
* @return Array (
|
10 |
-
[version]
|
11 |
-
[custom]
|
12 |
-
[gravatar]
|
13 |
-
[hide_dashboard]
|
14 |
-
[disable_presstrends]
|
15 |
-
[hide_upgrade]
|
16 |
-
[upgrade_complete]
|
17 |
-
[custom_css]
|
18 |
-
[custom_html]
|
19 |
-
[html_border_top_color] //Deprecated
|
20 |
-
[html_border_top_background] //Deprecated
|
21 |
-
[html_background_color]
|
22 |
-
[html_background_url]
|
23 |
-
[html_background_repeat]
|
24 |
-
[login_form_logo]
|
25 |
-
[login_form_border_top_color]
|
26 |
-
[login_form_background_color]
|
27 |
-
[login_form_background]
|
28 |
-
[login_form_background_size]
|
29 |
-
[login_form_border_radius]
|
30 |
-
[login_form_border]
|
31 |
-
[login_form_border_color]
|
32 |
-
[login_form_box_shadow_1]
|
33 |
-
[login_form_box_shadow_2]
|
34 |
-
[login_form_box_shadow_3]
|
35 |
-
[login_form_box_shadow_4]
|
36 |
-
[login_form_padding_top]
|
37 |
-
[label_color]
|
38 |
-
[html_background_size]
|
39 |
-
*/
|
40 |
-
extract( get_option( 'custom_login_settings' ) );
|
41 |
-
|
42 |
-
?><style type="text/css"><?php
|
43 |
-
|
44 |
-
echo "
|
45 |
-
/**
|
46 |
-
* Custom Login lite by Austin Passy
|
47 |
-
*
|
48 |
-
* Plugin URI : http://austinpassy.com/wordpress-plugins/custom-login
|
49 |
-
* Version : $version
|
50 |
-
* Author URI : http://austinpassy.com
|
51 |
-
* Pro Version : http://extendd.com/plugin/custom-login-pro
|
52 |
-
*
|
53 |
-
*/\n\n";
|
54 |
-
|
55 |
-
/* Custom user input */
|
56 |
-
if ( $custom_css ) echo wp_specialchars_decode( stripslashes( $custom_css ), 1, 0, 1 ) . "\n"; ?>
|
57 |
-
|
58 |
-
html {
|
59 |
-
background-color: <?php
|
60 |
-
|
61 |
-
if ( !empty( $html_background_color ) ) echo trailingsemicolonit( $html_background_color );
|
62 |
-
|
63 |
-
if ( !empty( $html_background_url ) ) {
|
64 |
-
echo trailingsemicolonit( "background-image: url('{$html_background_url}')" );
|
65 |
-
echo trailingsemicolonit( 'background-position: left top' );
|
66 |
-
echo trailingsemicolonit( "background-repeat: {$html_background_repeat}" );
|
67 |
-
|
68 |
-
if ( !empty( $html_background_size ) && 'none' != $html_background_size ) {
|
69 |
-
$html_background_size = ( 'flex' != $html_background_size ) ? $html_background_size : '100% auto';
|
70 |
-
custom_login_prefix_it( 'background-size', $html_background_size );
|
71 |
-
}
|
72 |
-
} ?>
|
73 |
-
|
74 |
-
}
|
75 |
-
|
76 |
-
<?php if ( !empty( $html_background_url ) ) { ?>
|
77 |
-
body.login {
|
78 |
-
background: transparent !important;
|
79 |
-
}
|
80 |
-
<?php } ?>
|
81 |
-
|
82 |
-
#login form {
|
83 |
-
<?php
|
84 |
-
if ( !empty( $login_form_background_color ) ) echo trailingsemicolonit( "background-color: {$login_form_background_color}" );
|
85 |
-
if ( !empty( $login_form_background ) ) {
|
86 |
-
echo trailingsemicolonit( "background-image: url('{$login_form_background}')" );
|
87 |
-
echo trailingsemicolonit( 'background-position: center top' );
|
88 |
-
echo trailingsemicolonit( 'background-repeat: no-repeat' );
|
89 |
-
|
90 |
-
if ( !empty( $form_background_size ) && 'none' != $form_background_size ) {
|
91 |
-
$form_background_size = ( 'flex' != $login_form_background_size ) ? $login_form_background_size : '100% auto';
|
92 |
-
custom_login_prefix_it( 'background-size', $form_background_size );
|
93 |
-
}
|
94 |
-
}
|
95 |
-
|
96 |
-
if ( true == $login_form_padding_top ) echo trailingsemicolonit( 'padding-top: 20px' ); else echo trailingsemicolonit( 'padding-top: 100px' );
|
97 |
-
|
98 |
-
if ( !empty( $login_form_border ) ) {
|
99 |
-
$login_form_border = rtrim( $login_form_border, 'px' );
|
100 |
-
echo trailingsemicolonit( "border: {$login_form_border}px solid {$login_form_border_color}" );
|
101 |
-
}
|
102 |
-
|
103 |
-
if ( absint( $login_form_border_radius ) ) {
|
104 |
-
$login_form_border_radius = rtrim( $login_form_border_radius, 'px' ) . 'px';
|
105 |
-
custom_login_prefix_it( 'border-radius', $login_form_border_radius );
|
106 |
-
}
|
107 |
-
|
108 |
-
$login_form_box_shadow_1 = rtrim( $login_form_box_shadow_1, 'px' ) . 'px';
|
109 |
-
$login_form_box_shadow_2 = rtrim( $login_form_box_shadow_2, 'px' ) . 'px';
|
110 |
-
$login_form_box_shadow_3 = rtrim( $login_form_box_shadow_3, 'px' ) . 'px';
|
111 |
-
|
112 |
-
$box_shadow = $login_form_box_shadow_1 . ' ' . $login_form_box_shadow_2 . ' ' . $login_form_box_shadow_3 . ' ' . $login_form_box_shadow_4;
|
113 |
-
|
114 |
-
custom_login_prefix_it( 'box-shadow', $box_shadow ); ?>
|
115 |
-
|
116 |
-
}
|
117 |
-
|
118 |
-
<?php if ( empty( $login_form_logo ) ) { ?>
|
119 |
-
#login h1 {
|
120 |
-
display: none;
|
121 |
-
}
|
122 |
-
<?php }
|
123 |
-
|
124 |
-
if ( !empty( $login_form_logo ) ) { ?>
|
125 |
-
.login h1 a {
|
126 |
-
background: transparent url('<?php echo $login_form_logo; ?>') no-repeat scroll center top;
|
127 |
-
}
|
128 |
-
<?php } ?>
|
129 |
-
|
130 |
-
label {
|
131 |
-
color: <?php echo $label_color; ?> !important;
|
132 |
-
}
|
133 |
-
</style>
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
library/css/tabs.css
DELETED
@@ -1,47 +0,0 @@
|
|
1 |
-
ul.tabs {
|
2 |
-
display: block !important;
|
3 |
-
list-style: none;
|
4 |
-
margin: 0;
|
5 |
-
overflow: hidden;
|
6 |
-
width: 100%;
|
7 |
-
}
|
8 |
-
ul.tabs li {
|
9 |
-
float: left;
|
10 |
-
display: inline;
|
11 |
-
margin: 0;
|
12 |
-
padding: 0;
|
13 |
-
background: transparent;
|
14 |
-
}
|
15 |
-
ul.tabs li a {
|
16 |
-
border-radius: 6px 6px 0 0 !important;
|
17 |
-
-moz-border-radius: 6px 6px 0 0 !important;
|
18 |
-
-webkit-border-radius: 6px 6px 0 0 !important;
|
19 |
-
-khtml-border-radius: 6px 6px 0 0 !important;
|
20 |
-
display: block;
|
21 |
-
float: left;
|
22 |
-
margin: 0 3px 0 0;
|
23 |
-
padding: 4px 6px;
|
24 |
-
color: #aaa;
|
25 |
-
text-shadow: 0 1px 0 #fff;
|
26 |
-
-moz-text-shadow: 0 1px 0 #fff;
|
27 |
-
-webkit-text-shadow: 0 1px 0 #fff;
|
28 |
-
-khtml-text-shadow: 0 1px 0 #fff;
|
29 |
-
}
|
30 |
-
ul.tabs li a:hover {
|
31 |
-
background: #DFDFDF url(../../../../../../wp-admin/images/gray-grad.png) repeat-x scroll left top;
|
32 |
-
color: #444;
|
33 |
-
text-decoration: none;
|
34 |
-
}
|
35 |
-
ul.tabs li a.tab-current {
|
36 |
-
background: #DFDFDF url(../../../../../../wp-admin/images/gray-grad.png) repeat-x scroll left top;
|
37 |
-
color: #222;
|
38 |
-
font-weight: bold;
|
39 |
-
}
|
40 |
-
.postbox.open.feed {
|
41 |
-
border-radius: 0 0 6px 6px !important;
|
42 |
-
-moz-border-radius: 0 0 6px 6px !important;
|
43 |
-
-webkit-border-radius: 0 0 6px 6px !important;
|
44 |
-
-khtml-border-radius: 0 0 6px 6px !important;
|
45 |
-
padding: 5px 6px;
|
46 |
-
width: 95.6%;
|
47 |
-
}
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
library/js/arrow.gif
DELETED
Binary file
|
library/js/cross.gif
DELETED
Binary file
|
library/js/custom-login.js
DELETED
@@ -1,54 +0,0 @@
|
|
1 |
-
jQuery(document).ready(
|
2 |
-
function($) {
|
3 |
-
var Version = jQuery.fn.jquery;
|
4 |
-
|
5 |
-
$('.upload_image_button').click(function() {
|
6 |
-
if( Version > '1.6' )
|
7 |
-
formfield = $(this).parent().find('.upload_image').prop('name');
|
8 |
-
else
|
9 |
-
formfield = $(this).parent().find('.upload_image').attr('name');
|
10 |
-
//console.log(formfield);
|
11 |
-
tb_show('', 'media-upload.php?type=image&TB_iframe=true');
|
12 |
-
return false;
|
13 |
-
});
|
14 |
-
|
15 |
-
window.send_to_editor = function(html) {
|
16 |
-
if( Version > '1.6' )
|
17 |
-
imgurl = $('img',html).prop('src');
|
18 |
-
else
|
19 |
-
imgurl = $('img',html).attr('src');
|
20 |
-
$('#' + formfield).val(imgurl);
|
21 |
-
tb_remove();
|
22 |
-
}
|
23 |
-
|
24 |
-
// Tabs
|
25 |
-
$('div.tabbed div').hide();
|
26 |
-
$('div.t1').show();
|
27 |
-
$('div.tabbed ul.tabs li.t1 a').addClass('tab-current');
|
28 |
-
$('div.tabbed ul li a').css('cursor','pointer');
|
29 |
-
|
30 |
-
$('div.tabbed ul li a').click(function(){
|
31 |
-
var thisClass = this.className.slice(0,2);
|
32 |
-
$('div.tabbed div').hide();
|
33 |
-
$('div.' + thisClass).show();
|
34 |
-
$('div.tabbed ul.tabs li a').removeClass('tab-current');
|
35 |
-
$(this).addClass('tab-current');
|
36 |
-
});
|
37 |
-
|
38 |
-
// Queations
|
39 |
-
$('#normal-sortables span.hide').hide();
|
40 |
-
$('#normal-sortables a.question').click(function() {
|
41 |
-
$(this).next().next().toggleClass('hide').toggleClass('show').toggle(380);
|
42 |
-
});
|
43 |
-
|
44 |
-
$('textarea').autosize({
|
45 |
-
append : "\n"
|
46 |
-
});
|
47 |
-
|
48 |
-
// External links
|
49 |
-
$('a').filter(function() {
|
50 |
-
return this.hostname && this.hostname !== location.hostname;
|
51 |
-
}).attr('target','_blank');
|
52 |
-
|
53 |
-
}
|
54 |
-
);
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
library/js/gravatar.js
DELETED
@@ -1,6 +0,0 @@
|
|
1 |
-
/*************************************************
|
2 |
-
** Get Gravatar v1.2
|
3 |
-
** Copyright � 2009 Josh Pyles / Pixelmatrix Design LLC
|
4 |
-
** http://pixelmatrixdesign.com
|
5 |
-
**************************************************/
|
6 |
-
(function(a){a.fn.getGravatar=function(b){var c=a.extend({},a.fn.getGravatar.defaults,b);return this.each(function(){$this=a(this);var e=a.meta?a.extend({},c,$this.data()):c;var d="";if($this.is("input[type='text']")){a.fn.getGravatar.getUrl(e,$this.val());$this.keyup(function(){clearTimeout(d);var f=$this.val();d=setTimeout(function(){a.fn.getGravatar.getUrl(e,f)},500)})}})};a.fn.getGravatar.getUrl=function(d,c){if(d.start){d.start($this)}id=a.fn.getGravatar.md5(c);var b="http://gravatar.com/avatar.php?gravatar_id="+id+"&default="+d.fallback+"&size="+d.avatarSize;a.fn.getGravatar.output(d.avatarContainer,b,d.stop)};a.fn.getGravatar.output=function(b,c,d){img=new Image();a(img).load(function(){a(b).prop("src",c);if(d){d()}}).prop("src",c)};a.fn.getGravatar.md5=function(C){var D;var w=function(c,b){return(c<<b)|(c>>>(32-b))};var H=function(x,c){var W,b,k,V,d;k=(x&2147483648);V=(c&2147483648);W=(x&1073741824);b=(c&1073741824);d=(x&1073741823)+(c&1073741823);if(W&b){return(d^2147483648^k^V)}if(W|b){if(d&1073741824){return(d^3221225472^k^V)}else{return(d^1073741824^k^V)}}else{return(d^k^V)}};var r=function(b,d,c){return(b&d)|((~b)&c)};var q=function(b,d,c){return(b&c)|(d&(~c))};var p=function(b,d,c){return(b^d^c)};var n=function(b,d,c){return(d^(b|(~c)))};var u=function(W,V,aa,Z,k,X,Y){W=H(W,H(H(r(V,aa,Z),k),Y));return H(w(W,X),V)};var f=function(W,V,aa,Z,k,X,Y){W=H(W,H(H(q(V,aa,Z),k),Y));return H(w(W,X),V)};var F=function(W,V,aa,Z,k,X,Y){W=H(W,H(H(p(V,aa,Z),k),Y));return H(w(W,X),V)};var t=function(W,V,aa,Z,k,X,Y){W=H(W,H(H(n(V,aa,Z),k),Y));return H(w(W,X),V)};var e=function(W){var X;var k=W.length;var d=k+8;var c=(d-(d%64))/64;var V=(c+1)*16;var Y=new Array(V-1);var b=0;var x=0;while(x<k){X=(x-(x%4))/4;b=(x%4)*8;Y[X]=(Y[X]|(W.charCodeAt(x)<<b));x++}X=(x-(x%4))/4;b=(x%4)*8;Y[X]=Y[X]|(128<<b);Y[V-2]=k<<3;Y[V-1]=k>>>29;return Y};var s=function(k){var b="",c="",x,d;for(d=0;d<=3;d++){x=(k>>>(d*8))&255;c="0"+x.toString(16);b=b+c.substr(c.length-2,2)}return b};var E=[],L,h,G,v,g,U,T,S,R,O=7,M=12,J=17,I=22,B=5,A=9,z=14,y=20,o=4,m=11,l=16,j=23,Q=6,P=10,N=15,K=21;C=a.fn.getGravatar.utf8_encode(C);E=e(C);U=1732584193;T=4023233417;S=2562383102;R=271733878;D=E.length;for(L=0;L<D;L+=16){h=U;G=T;v=S;g=R;U=u(U,T,S,R,E[L+0],O,3614090360);R=u(R,U,T,S,E[L+1],M,3905402710);S=u(S,R,U,T,E[L+2],J,606105819);T=u(T,S,R,U,E[L+3],I,3250441966);U=u(U,T,S,R,E[L+4],O,4118548399);R=u(R,U,T,S,E[L+5],M,1200080426);S=u(S,R,U,T,E[L+6],J,2821735955);T=u(T,S,R,U,E[L+7],I,4249261313);U=u(U,T,S,R,E[L+8],O,1770035416);R=u(R,U,T,S,E[L+9],M,2336552879);S=u(S,R,U,T,E[L+10],J,4294925233);T=u(T,S,R,U,E[L+11],I,2304563134);U=u(U,T,S,R,E[L+12],O,1804603682);R=u(R,U,T,S,E[L+13],M,4254626195);S=u(S,R,U,T,E[L+14],J,2792965006);T=u(T,S,R,U,E[L+15],I,1236535329);U=f(U,T,S,R,E[L+1],B,4129170786);R=f(R,U,T,S,E[L+6],A,3225465664);S=f(S,R,U,T,E[L+11],z,643717713);T=f(T,S,R,U,E[L+0],y,3921069994);U=f(U,T,S,R,E[L+5],B,3593408605);R=f(R,U,T,S,E[L+10],A,38016083);S=f(S,R,U,T,E[L+15],z,3634488961);T=f(T,S,R,U,E[L+4],y,3889429448);U=f(U,T,S,R,E[L+9],B,568446438);R=f(R,U,T,S,E[L+14],A,3275163606);S=f(S,R,U,T,E[L+3],z,4107603335);T=f(T,S,R,U,E[L+8],y,1163531501);U=f(U,T,S,R,E[L+13],B,2850285829);R=f(R,U,T,S,E[L+2],A,4243563512);S=f(S,R,U,T,E[L+7],z,1735328473);T=f(T,S,R,U,E[L+12],y,2368359562);U=F(U,T,S,R,E[L+5],o,4294588738);R=F(R,U,T,S,E[L+8],m,2272392833);S=F(S,R,U,T,E[L+11],l,1839030562);T=F(T,S,R,U,E[L+14],j,4259657740);U=F(U,T,S,R,E[L+1],o,2763975236);R=F(R,U,T,S,E[L+4],m,1272893353);S=F(S,R,U,T,E[L+7],l,4139469664);T=F(T,S,R,U,E[L+10],j,3200236656);U=F(U,T,S,R,E[L+13],o,681279174);R=F(R,U,T,S,E[L+0],m,3936430074);S=F(S,R,U,T,E[L+3],l,3572445317);T=F(T,S,R,U,E[L+6],j,76029189);U=F(U,T,S,R,E[L+9],o,3654602809);R=F(R,U,T,S,E[L+12],m,3873151461);S=F(S,R,U,T,E[L+15],l,530742520);T=F(T,S,R,U,E[L+2],j,3299628645);U=t(U,T,S,R,E[L+0],Q,4096336452);R=t(R,U,T,S,E[L+7],P,1126891415);S=t(S,R,U,T,E[L+14],N,2878612391);T=t(T,S,R,U,E[L+5],K,4237533241);U=t(U,T,S,R,E[L+12],Q,1700485571);R=t(R,U,T,S,E[L+3],P,2399980690);S=t(S,R,U,T,E[L+10],N,4293915773);T=t(T,S,R,U,E[L+1],K,2240044497);U=t(U,T,S,R,E[L+8],Q,1873313359);R=t(R,U,T,S,E[L+15],P,4264355552);S=t(S,R,U,T,E[L+6],N,2734768916);T=t(T,S,R,U,E[L+13],K,1309151649);U=t(U,T,S,R,E[L+4],Q,4149444226);R=t(R,U,T,S,E[L+11],P,3174756917);S=t(S,R,U,T,E[L+2],N,718787259);T=t(T,S,R,U,E[L+9],K,3951481745);U=H(U,h);T=H(T,G);S=H(S,v);R=H(R,g)}var i=s(U)+s(T)+s(S)+s(R);return i.toLowerCase()};a.fn.getGravatar.utf8_encode=function(b){var i=(b+"");var j="";var c,f;var d=0;c=f=0;d=i.length;for(var e=0;e<d;e++){var h=i.charCodeAt(e);var g=null;if(h<128){f++}else{if(h>127&&h<2048){g=String.fromCharCode((h>>6)|192)+String.fromCharCode((h&63)|128)}else{g=String.fromCharCode((h>>12)|224)+String.fromCharCode(((h>>6)&63)|128)+String.fromCharCode((h&63)|128)}}if(g!==null){if(f>c){j+=i.substring(c,f)}j+=g;c=f=e+1}}if(f>c){j+=i.substring(c,i.length)}return j};a.fn.getGravatar.defaults={fallback:"",avatarSize:50,avatarContainer:"#gravatar",start:null,stop:null}})(jQuery);
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
library/js/hs.png
DELETED
Binary file
|
library/js/hv.png
DELETED
Binary file
|
library/js/jquery.autosize.js
DELETED
@@ -1,171 +0,0 @@
|
|
1 |
-
// Autosize 1.15.3 - jQuery plugin for textareas
|
2 |
-
// (c) 2013 Jack Moore - jacklmoore.com
|
3 |
-
// license: www.opensource.org/licenses/mit-license.php
|
4 |
-
|
5 |
-
(function ($) {
|
6 |
-
var
|
7 |
-
defaults = {
|
8 |
-
className: 'autosizejs',
|
9 |
-
append: '',
|
10 |
-
callback: false
|
11 |
-
},
|
12 |
-
hidden = 'hidden',
|
13 |
-
borderBox = 'border-box',
|
14 |
-
lineHeight = 'lineHeight',
|
15 |
-
|
16 |
-
// border:0 is unnecessary, but avoids a bug in FireFox on OSX (http://www.jacklmoore.com/autosize#comment-851)
|
17 |
-
copy = '<textarea tabindex="-1" style="position:absolute; top:-9999px; left:-9999px; right:auto; bottom:auto; border:0; -moz-box-sizing:content-box; -webkit-box-sizing:content-box; box-sizing:content-box; word-wrap:break-word; height:0 !important; min-height:0 !important; overflow:hidden;"/>',
|
18 |
-
|
19 |
-
// line-height is conditionally included because IE7/IE8/old Opera do not return the correct value.
|
20 |
-
copyStyle = [
|
21 |
-
'fontFamily',
|
22 |
-
'fontSize',
|
23 |
-
'fontWeight',
|
24 |
-
'fontStyle',
|
25 |
-
'letterSpacing',
|
26 |
-
'textTransform',
|
27 |
-
'wordSpacing',
|
28 |
-
'textIndent'
|
29 |
-
],
|
30 |
-
oninput = 'oninput',
|
31 |
-
onpropertychange = 'onpropertychange',
|
32 |
-
|
33 |
-
// to keep track which textarea is being mirrored when adjust() is called.
|
34 |
-
mirrored,
|
35 |
-
|
36 |
-
// the mirror element, which is used to calculate what size the mirrored element should be.
|
37 |
-
mirror = $(copy).data('autosize', true)[0];
|
38 |
-
|
39 |
-
// test that line-height can be accurately copied.
|
40 |
-
mirror.style.lineHeight = '99px';
|
41 |
-
if ($(mirror).css(lineHeight) === '99px') {
|
42 |
-
copyStyle.push(lineHeight);
|
43 |
-
}
|
44 |
-
mirror.style.lineHeight = '';
|
45 |
-
|
46 |
-
$.fn.autosize = function (options) {
|
47 |
-
options = $.extend({}, defaults, options || {});
|
48 |
-
|
49 |
-
if (mirror.parentNode !== document.body) {
|
50 |
-
$(document.body).append(mirror);
|
51 |
-
}
|
52 |
-
|
53 |
-
return this.each(function () {
|
54 |
-
var
|
55 |
-
ta = this,
|
56 |
-
$ta = $(ta),
|
57 |
-
minHeight = $ta.height(),
|
58 |
-
active,
|
59 |
-
resize,
|
60 |
-
boxOffset = 0,
|
61 |
-
callback = $.isFunction(options.callback);
|
62 |
-
|
63 |
-
if ($ta.data('autosize')) {
|
64 |
-
// exit if autosize has already been applied, or if the textarea is the mirror element.
|
65 |
-
return;
|
66 |
-
}
|
67 |
-
|
68 |
-
if ($ta.css('box-sizing') === borderBox || $ta.css('-moz-box-sizing') === borderBox || $ta.css('-webkit-box-sizing') === borderBox){
|
69 |
-
boxOffset = $ta.outerHeight() - $ta.height();
|
70 |
-
}
|
71 |
-
|
72 |
-
resize = ($ta.css('resize') === 'none' || $ta.css('resize') === 'vertical') ? 'none' : 'horizontal';
|
73 |
-
|
74 |
-
$ta.css({
|
75 |
-
overflow: hidden,
|
76 |
-
overflowY: hidden,
|
77 |
-
wordWrap: 'break-word',
|
78 |
-
resize: resize
|
79 |
-
}).data('autosize', true);
|
80 |
-
|
81 |
-
function initMirror() {
|
82 |
-
mirrored = ta;
|
83 |
-
mirror.className = options.className;
|
84 |
-
|
85 |
-
// mirror is a duplicate textarea located off-screen that
|
86 |
-
// is automatically updated to contain the same text as the
|
87 |
-
// original textarea. mirror always has a height of 0.
|
88 |
-
// This gives a cross-browser supported way getting the actual
|
89 |
-
// height of the text, through the scrollTop property.
|
90 |
-
$.each(copyStyle, function(i, val){
|
91 |
-
mirror.style[val] = $ta.css(val);
|
92 |
-
});
|
93 |
-
}
|
94 |
-
|
95 |
-
// Using mainly bare JS in this function because it is going
|
96 |
-
// to fire very often while typing, and needs to very efficient.
|
97 |
-
function adjust() {
|
98 |
-
var height, overflow, original;
|
99 |
-
|
100 |
-
if (mirrored !== ta) {
|
101 |
-
initMirror();
|
102 |
-
}
|
103 |
-
|
104 |
-
// the active flag keeps IE from tripping all over itself. Otherwise
|
105 |
-
// actions in the adjust function will cause IE to call adjust again.
|
106 |
-
if (!active) {
|
107 |
-
active = true;
|
108 |
-
mirror.value = ta.value + options.append;
|
109 |
-
mirror.style.overflowY = ta.style.overflowY;
|
110 |
-
original = parseInt(ta.style.height,10);
|
111 |
-
|
112 |
-
// Update the width in case the original textarea width has changed
|
113 |
-
mirror.style.width = $ta.width() + 'px';
|
114 |
-
|
115 |
-
// The following three lines can be replaced with `height = mirror.scrollHeight` when dropping IE7 support.
|
116 |
-
mirror.scrollTop = 0;
|
117 |
-
mirror.scrollTop = 9e4;
|
118 |
-
height = mirror.scrollTop;
|
119 |
-
|
120 |
-
var maxHeight = parseInt($ta.css('maxHeight'), 10);
|
121 |
-
// Opera returns '-1px' when max-height is set to 'none'.
|
122 |
-
maxHeight = maxHeight && maxHeight > 0 ? maxHeight : 9e4;
|
123 |
-
if (height > maxHeight) {
|
124 |
-
height = maxHeight;
|
125 |
-
overflow = 'scroll';
|
126 |
-
} else if (height < minHeight) {
|
127 |
-
height = minHeight;
|
128 |
-
}
|
129 |
-
height += boxOffset;
|
130 |
-
ta.style.overflowY = overflow || hidden;
|
131 |
-
|
132 |
-
if (original !== height) {
|
133 |
-
ta.style.height = height + 'px';
|
134 |
-
if (callback) {
|
135 |
-
options.callback.call(ta);
|
136 |
-
}
|
137 |
-
}
|
138 |
-
|
139 |
-
// This small timeout gives IE a chance to draw it's scrollbar
|
140 |
-
// before adjust can be run again (prevents an infinite loop).
|
141 |
-
setTimeout(function () {
|
142 |
-
active = false;
|
143 |
-
}, 1);
|
144 |
-
}
|
145 |
-
}
|
146 |
-
|
147 |
-
if (onpropertychange in ta) {
|
148 |
-
if (oninput in ta) {
|
149 |
-
// Detects IE9. IE9 does not fire onpropertychange or oninput for deletions,
|
150 |
-
// so binding to onkeyup to catch most of those occassions. There is no way that I
|
151 |
-
// know of to detect something like 'cut' in IE9.
|
152 |
-
ta[oninput] = ta.onkeyup = adjust;
|
153 |
-
} else {
|
154 |
-
// IE7 / IE8
|
155 |
-
ta[onpropertychange] = adjust;
|
156 |
-
}
|
157 |
-
} else {
|
158 |
-
// Modern Browsers
|
159 |
-
ta[oninput] = adjust;
|
160 |
-
}
|
161 |
-
|
162 |
-
$(window).resize(adjust);
|
163 |
-
|
164 |
-
// Allow for manual triggering if needed.
|
165 |
-
$ta.bind('autosize', adjust);
|
166 |
-
|
167 |
-
// Call adjust in case the textarea already contains text.
|
168 |
-
adjust();
|
169 |
-
});
|
170 |
-
};
|
171 |
-
}(window.jQuery || window.Zepto));
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
library/js/jscolor.js
DELETED
@@ -1,953 +0,0 @@
|
|
1 |
-
/**
|
2 |
-
* jscolor, JavaScript Color Picker
|
3 |
-
*
|
4 |
-
* @version 1.4.0
|
5 |
-
* @license GNU Lesser General Public License, http://www.gnu.org/copyleft/lesser.html
|
6 |
-
* @author Jan Odvarko, http://odvarko.cz
|
7 |
-
* @created 2008-06-15
|
8 |
-
* @updated 2012-07-06
|
9 |
-
* @link http://jscolor.com
|
10 |
-
*/
|
11 |
-
|
12 |
-
|
13 |
-
var jscolor = {
|
14 |
-
|
15 |
-
|
16 |
-
dir : '', // location of jscolor directory (leave empty to autodetect)
|
17 |
-
bindClass : 'color', // class name
|
18 |
-
binding : true, // automatic binding via <input class="...">
|
19 |
-
preloading : true, // use image preloading?
|
20 |
-
|
21 |
-
|
22 |
-
install : function() {
|
23 |
-
jscolor.addEvent(window, 'load', jscolor.init);
|
24 |
-
},
|
25 |
-
|
26 |
-
|
27 |
-
init : function() {
|
28 |
-
if(jscolor.binding) {
|
29 |
-
jscolor.bind();
|
30 |
-
}
|
31 |
-
if(jscolor.preloading) {
|
32 |
-
jscolor.preload();
|
33 |
-
}
|
34 |
-
},
|
35 |
-
|
36 |
-
|
37 |
-
getDir : function() {
|
38 |
-
if(!jscolor.dir) {
|
39 |
-
var detected = jscolor.detectDir();
|
40 |
-
jscolor.dir = detected!==false ? detected : 'jscolor/';
|
41 |
-
}
|
42 |
-
return jscolor.dir;
|
43 |
-
},
|
44 |
-
|
45 |
-
|
46 |
-
detectDir : function() {
|
47 |
-
var base = location.href;
|
48 |
-
|
49 |
-
var e = document.getElementsByTagName('base');
|
50 |
-
for(var i=0; i<e.length; i+=1) {
|
51 |
-
if(e[i].href) { base = e[i].href; }
|
52 |
-
}
|
53 |
-
|
54 |
-
var e = document.getElementsByTagName('script');
|
55 |
-
for(var i=0; i<e.length; i+=1) {
|
56 |
-
if(e[i].src && /(^|\/)jscolor\.js([?#].*)?$/i.test(e[i].src)) {
|
57 |
-
var src = new jscolor.URI(e[i].src);
|
58 |
-
var srcAbs = src.toAbsolute(base);
|
59 |
-
srcAbs.path = srcAbs.path.replace(/[^\/]+$/, ''); // remove filename
|
60 |
-
srcAbs.query = null;
|
61 |
-
srcAbs.fragment = null;
|
62 |
-
return srcAbs.toString();
|
63 |
-
}
|
64 |
-
}
|
65 |
-
return false;
|
66 |
-
},
|
67 |
-
|
68 |
-
|
69 |
-
bind : function() {
|
70 |
-
var matchClass = new RegExp('(^|\\s)('+jscolor.bindClass+')\\s*(\\{[^}]*\\})?', 'i');
|
71 |
-
var e = document.getElementsByTagName('input');
|
72 |
-
for(var i=0; i<e.length; i+=1) {
|
73 |
-
var m;
|
74 |
-
if(!e[i].color && e[i].className && (m = e[i].className.match(matchClass))) {
|
75 |
-
var prop = {};
|
76 |
-
if(m[3]) {
|
77 |
-
try {
|
78 |
-
prop = (new Function ('return (' + m[3] + ')'))();
|
79 |
-
} catch(eInvalidProp) {}
|
80 |
-
}
|
81 |
-
e[i].color = new jscolor.color(e[i], prop);
|
82 |
-
}
|
83 |
-
}
|
84 |
-
},
|
85 |
-
|
86 |
-
|
87 |
-
preload : function() {
|
88 |
-
for(var fn in jscolor.imgRequire) {
|
89 |
-
if(jscolor.imgRequire.hasOwnProperty(fn)) {
|
90 |
-
jscolor.loadImage(fn);
|
91 |
-
}
|
92 |
-
}
|
93 |
-
},
|
94 |
-
|
95 |
-
|
96 |
-
images : {
|
97 |
-
pad : [ 181, 101 ],
|
98 |
-
sld : [ 16, 101 ],
|
99 |
-
cross : [ 15, 15 ],
|
100 |
-
arrow : [ 7, 11 ]
|
101 |
-
},
|
102 |
-
|
103 |
-
|
104 |
-
imgRequire : {},
|
105 |
-
imgLoaded : {},
|
106 |
-
|
107 |
-
|
108 |
-
requireImage : function(filename) {
|
109 |
-
jscolor.imgRequire[filename] = true;
|
110 |
-
},
|
111 |
-
|
112 |
-
|
113 |
-
loadImage : function(filename) {
|
114 |
-
if(!jscolor.imgLoaded[filename]) {
|
115 |
-
jscolor.imgLoaded[filename] = new Image();
|
116 |
-
jscolor.imgLoaded[filename].src = jscolor.getDir()+filename;
|
117 |
-
}
|
118 |
-
},
|
119 |
-
|
120 |
-
|
121 |
-
fetchElement : function(mixed) {
|
122 |
-
return typeof mixed === 'string' ? document.getElementById(mixed) : mixed;
|
123 |
-
},
|
124 |
-
|
125 |
-
|
126 |
-
addEvent : function(el, evnt, func) {
|
127 |
-
if(el.addEventListener) {
|
128 |
-
el.addEventListener(evnt, func, false);
|
129 |
-
} else if(el.attachEvent) {
|
130 |
-
el.attachEvent('on'+evnt, func);
|
131 |
-
}
|
132 |
-
},
|
133 |
-
|
134 |
-
|
135 |
-
fireEvent : function(el, evnt) {
|
136 |
-
if(!el) {
|
137 |
-
return;
|
138 |
-
}
|
139 |
-
if(document.createEvent) {
|
140 |
-
var ev = document.createEvent('HTMLEvents');
|
141 |
-
ev.initEvent(evnt, true, true);
|
142 |
-
el.dispatchEvent(ev);
|
143 |
-
} else if(document.createEventObject) {
|
144 |
-
var ev = document.createEventObject();
|
145 |
-
el.fireEvent('on'+evnt, ev);
|
146 |
-
} else if(el['on'+evnt]) { // alternatively use the traditional event model (IE5)
|
147 |
-
el['on'+evnt]();
|
148 |
-
}
|
149 |
-
},
|
150 |
-
|
151 |
-
|
152 |
-
getElementPos : function(e) {
|
153 |
-
var e1=e, e2=e;
|
154 |
-
var x=0, y=0;
|
155 |
-
if(e1.offsetParent) {
|
156 |
-
do {
|
157 |
-
x += e1.offsetLeft;
|
158 |
-
y += e1.offsetTop;
|
159 |
-
} while(e1 = e1.offsetParent);
|
160 |
-
}
|
161 |
-
while((e2 = e2.parentNode) && e2.nodeName.toUpperCase() !== 'BODY') {
|
162 |
-
x -= e2.scrollLeft;
|
163 |
-
y -= e2.scrollTop;
|
164 |
-
}
|
165 |
-
return [x, y];
|
166 |
-
},
|
167 |
-
|
168 |
-
|
169 |
-
getElementSize : function(e) {
|
170 |
-
return [e.offsetWidth, e.offsetHeight];
|
171 |
-
},
|
172 |
-
|
173 |
-
|
174 |
-
getRelMousePos : function(e) {
|
175 |
-
var x = 0, y = 0;
|
176 |
-
if (!e) { e = window.event; }
|
177 |
-
if (typeof e.offsetX === 'number') {
|
178 |
-
x = e.offsetX;
|
179 |
-
y = e.offsetY;
|
180 |
-
} else if (typeof e.layerX === 'number') {
|
181 |
-
x = e.layerX;
|
182 |
-
y = e.layerY;
|
183 |
-
}
|
184 |
-
return { x: x, y: y };
|
185 |
-
},
|
186 |
-
|
187 |
-
|
188 |
-
getViewPos : function() {
|
189 |
-
if(typeof window.pageYOffset === 'number') {
|
190 |
-
return [window.pageXOffset, window.pageYOffset];
|
191 |
-
} else if(document.body && (document.body.scrollLeft || document.body.scrollTop)) {
|
192 |
-
return [document.body.scrollLeft, document.body.scrollTop];
|
193 |
-
} else if(document.documentElement && (document.documentElement.scrollLeft || document.documentElement.scrollTop)) {
|
194 |
-
return [document.documentElement.scrollLeft, document.documentElement.scrollTop];
|
195 |
-
} else {
|
196 |
-
return [0, 0];
|
197 |
-
}
|
198 |
-
},
|
199 |
-
|
200 |
-
|
201 |
-
getViewSize : function() {
|
202 |
-
if(typeof window.innerWidth === 'number') {
|
203 |
-
return [window.innerWidth, window.innerHeight];
|
204 |
-
} else if(document.body && (document.body.clientWidth || document.body.clientHeight)) {
|
205 |
-
return [document.body.clientWidth, document.body.clientHeight];
|
206 |
-
} else if(document.documentElement && (document.documentElement.clientWidth || document.documentElement.clientHeight)) {
|
207 |
-
return [document.documentElement.clientWidth, document.documentElement.clientHeight];
|
208 |
-
} else {
|
209 |
-
return [0, 0];
|
210 |
-
}
|
211 |
-
},
|
212 |
-
|
213 |
-
|
214 |
-
URI : function(uri) { // See RFC3986
|
215 |
-
|
216 |
-
this.scheme = null;
|
217 |
-
this.authority = null;
|
218 |
-
this.path = '';
|
219 |
-
this.query = null;
|
220 |
-
this.fragment = null;
|
221 |
-
|
222 |
-
this.parse = function(uri) {
|
223 |
-
var m = uri.match(/^(([A-Za-z][0-9A-Za-z+.-]*)(:))?((\/\/)([^\/?#]*))?([^?#]*)((\?)([^#]*))?((#)(.*))?/);
|
224 |
-
this.scheme = m[3] ? m[2] : null;
|
225 |
-
this.authority = m[5] ? m[6] : null;
|
226 |
-
this.path = m[7];
|
227 |
-
this.query = m[9] ? m[10] : null;
|
228 |
-
this.fragment = m[12] ? m[13] : null;
|
229 |
-
return this;
|
230 |
-
};
|
231 |
-
|
232 |
-
this.toString = function() {
|
233 |
-
var result = '';
|
234 |
-
if(this.scheme !== null) { result = result + this.scheme + ':'; }
|
235 |
-
if(this.authority !== null) { result = result + '//' + this.authority; }
|
236 |
-
if(this.path !== null) { result = result + this.path; }
|
237 |
-
if(this.query !== null) { result = result + '?' + this.query; }
|
238 |
-
if(this.fragment !== null) { result = result + '#' + this.fragment; }
|
239 |
-
return result;
|
240 |
-
};
|
241 |
-
|
242 |
-
this.toAbsolute = function(base) {
|
243 |
-
var base = new jscolor.URI(base);
|
244 |
-
var r = this;
|
245 |
-
var t = new jscolor.URI;
|
246 |
-
|
247 |
-
if(base.scheme === null) { return false; }
|
248 |
-
|
249 |
-
if(r.scheme !== null && r.scheme.toLowerCase() === base.scheme.toLowerCase()) {
|
250 |
-
r.scheme = null;
|
251 |
-
}
|
252 |
-
|
253 |
-
if(r.scheme !== null) {
|
254 |
-
t.scheme = r.scheme;
|
255 |
-
t.authority = r.authority;
|
256 |
-
t.path = removeDotSegments(r.path);
|
257 |
-
t.query = r.query;
|
258 |
-
} else {
|
259 |
-
if(r.authority !== null) {
|
260 |
-
t.authority = r.authority;
|
261 |
-
t.path = removeDotSegments(r.path);
|
262 |
-
t.query = r.query;
|
263 |
-
} else {
|
264 |
-
if(r.path === '') {
|
265 |
-
t.path = base.path;
|
266 |
-
if(r.query !== null) {
|
267 |
-
t.query = r.query;
|
268 |
-
} else {
|
269 |
-
t.query = base.query;
|
270 |
-
}
|
271 |
-
} else {
|
272 |
-
if(r.path.substr(0,1) === '/') {
|
273 |
-
t.path = removeDotSegments(r.path);
|
274 |
-
} else {
|
275 |
-
if(base.authority !== null && base.path === '') {
|
276 |
-
t.path = '/'+r.path;
|
277 |
-
} else {
|
278 |
-
t.path = base.path.replace(/[^\/]+$/,'')+r.path;
|
279 |
-
}
|
280 |
-
t.path = removeDotSegments(t.path);
|
281 |
-
}
|
282 |
-
t.query = r.query;
|
283 |
-
}
|
284 |
-
t.authority = base.authority;
|
285 |
-
}
|
286 |
-
t.scheme = base.scheme;
|
287 |
-
}
|
288 |
-
t.fragment = r.fragment;
|
289 |
-
|
290 |
-
return t;
|
291 |
-
};
|
292 |
-
|
293 |
-
function removeDotSegments(path) {
|
294 |
-
var out = '';
|
295 |
-
while(path) {
|
296 |
-
if(path.substr(0,3)==='../' || path.substr(0,2)==='./') {
|
297 |
-
path = path.replace(/^\.+/,'').substr(1);
|
298 |
-
} else if(path.substr(0,3)==='/./' || path==='/.') {
|
299 |
-
path = '/'+path.substr(3);
|
300 |
-
} else if(path.substr(0,4)==='/../' || path==='/..') {
|
301 |
-
path = '/'+path.substr(4);
|
302 |
-
out = out.replace(/\/?[^\/]*$/, '');
|
303 |
-
} else if(path==='.' || path==='..') {
|
304 |
-
path = '';
|
305 |
-
} else {
|
306 |
-
var rm = path.match(/^\/?[^\/]*/)[0];
|
307 |
-
path = path.substr(rm.length);
|
308 |
-
out = out + rm;
|
309 |
-
}
|
310 |
-
}
|
311 |
-
return out;
|
312 |
-
}
|
313 |
-
|
314 |
-
if(uri) {
|
315 |
-
this.parse(uri);
|
316 |
-
}
|
317 |
-
|
318 |
-
},
|
319 |
-
|
320 |
-
|
321 |
-
/*
|
322 |
-
* Usage example:
|
323 |
-
* var myColor = new jscolor.color(myInputElement)
|
324 |
-
*/
|
325 |
-
|
326 |
-
color : function(target, prop) {
|
327 |
-
|
328 |
-
|
329 |
-
this.required = true; // refuse empty values?
|
330 |
-
this.adjust = true; // adjust value to uniform notation?
|
331 |
-
this.hash = false; // prefix color with # symbol?
|
332 |
-
this.caps = true; // uppercase?
|
333 |
-
this.slider = true; // show the value/saturation slider?
|
334 |
-
this.valueElement = target; // value holder
|
335 |
-
this.styleElement = target; // where to reflect current color
|
336 |
-
this.onImmediateChange = null; // onchange callback (can be either string or function)
|
337 |
-
this.hsv = [0, 0, 1]; // read-only 0-6, 0-1, 0-1
|
338 |
-
this.rgb = [1, 1, 1]; // read-only 0-1, 0-1, 0-1
|
339 |
-
this.minH = 0; // read-only 0-6
|
340 |
-
this.maxH = 6; // read-only 0-6
|
341 |
-
this.minS = 0; // read-only 0-1
|
342 |
-
this.maxS = 1; // read-only 0-1
|
343 |
-
this.minV = 0; // read-only 0-1
|
344 |
-
this.maxV = 1; // read-only 0-1
|
345 |
-
|
346 |
-
this.pickerOnfocus = true; // display picker on focus?
|
347 |
-
this.pickerMode = 'HSV'; // HSV | HVS
|
348 |
-
this.pickerPosition = 'bottom'; // left | right | top | bottom
|
349 |
-
this.pickerSmartPosition = true; // automatically adjust picker position when necessary
|
350 |
-
this.pickerButtonHeight = 20; // px
|
351 |
-
this.pickerClosable = false;
|
352 |
-
this.pickerCloseText = 'Close';
|
353 |
-
this.pickerButtonColor = 'ButtonText'; // px
|
354 |
-
this.pickerFace = 10; // px
|
355 |
-
this.pickerFaceColor = 'ThreeDFace'; // CSS color
|
356 |
-
this.pickerBorder = 1; // px
|
357 |
-
this.pickerBorderColor = 'ThreeDHighlight ThreeDShadow ThreeDShadow ThreeDHighlight'; // CSS color
|
358 |
-
this.pickerInset = 1; // px
|
359 |
-
this.pickerInsetColor = 'ThreeDShadow ThreeDHighlight ThreeDHighlight ThreeDShadow'; // CSS color
|
360 |
-
this.pickerZIndex = 10000;
|
361 |
-
|
362 |
-
|
363 |
-
for(var p in prop) {
|
364 |
-
if(prop.hasOwnProperty(p)) {
|
365 |
-
this[p] = prop[p];
|
366 |
-
}
|
367 |
-
}
|
368 |
-
|
369 |
-
|
370 |
-
this.hidePicker = function() {
|
371 |
-
if(isPickerOwner()) {
|
372 |
-
removePicker();
|
373 |
-
}
|
374 |
-
};
|
375 |
-
|
376 |
-
|
377 |
-
this.showPicker = function() {
|
378 |
-
if(!isPickerOwner()) {
|
379 |
-
var tp = jscolor.getElementPos(target); // target pos
|
380 |
-
var ts = jscolor.getElementSize(target); // target size
|
381 |
-
var vp = jscolor.getViewPos(); // view pos
|
382 |
-
var vs = jscolor.getViewSize(); // view size
|
383 |
-
var ps = getPickerDims(this); // picker size
|
384 |
-
var a, b, c;
|
385 |
-
switch(this.pickerPosition.toLowerCase()) {
|
386 |
-
case 'left': a=1; b=0; c=-1; break;
|
387 |
-
case 'right':a=1; b=0; c=1; break;
|
388 |
-
case 'top': a=0; b=1; c=-1; break;
|
389 |
-
default: a=0; b=1; c=1; break;
|
390 |
-
}
|
391 |
-
var l = (ts[b]+ps[b])/2;
|
392 |
-
|
393 |
-
// picker pos
|
394 |
-
if (!this.pickerSmartPosition) {
|
395 |
-
var pp = [
|
396 |
-
tp[a],
|
397 |
-
tp[b]+ts[b]-l+l*c
|
398 |
-
];
|
399 |
-
} else {
|
400 |
-
var pp = [
|
401 |
-
-vp[a]+tp[a]+ps[a] > vs[a] ?
|
402 |
-
(-vp[a]+tp[a]+ts[a]/2 > vs[a]/2 && tp[a]+ts[a]-ps[a] >= 0 ? tp[a]+ts[a]-ps[a] : tp[a]) :
|
403 |
-
tp[a],
|
404 |
-
-vp[b]+tp[b]+ts[b]+ps[b]-l+l*c > vs[b] ?
|
405 |
-
(-vp[b]+tp[b]+ts[b]/2 > vs[b]/2 && tp[b]+ts[b]-l-l*c >= 0 ? tp[b]+ts[b]-l-l*c : tp[b]+ts[b]-l+l*c) :
|
406 |
-
(tp[b]+ts[b]-l+l*c >= 0 ? tp[b]+ts[b]-l+l*c : tp[b]+ts[b]-l-l*c)
|
407 |
-
];
|
408 |
-
}
|
409 |
-
drawPicker(pp[a], pp[b]);
|
410 |
-
}
|
411 |
-
};
|
412 |
-
|
413 |
-
|
414 |
-
this.importColor = function() {
|
415 |
-
if(!valueElement) {
|
416 |
-
this.exportColor();
|
417 |
-
} else {
|
418 |
-
if(!this.adjust) {
|
419 |
-
if(!this.fromString(valueElement.value, leaveValue)) {
|
420 |
-
styleElement.style.backgroundImage = styleElement.jscStyle.backgroundImage;
|
421 |
-
styleElement.style.backgroundColor = styleElement.jscStyle.backgroundColor;
|
422 |
-
styleElement.style.color = styleElement.jscStyle.color;
|
423 |
-
this.exportColor(leaveValue | leaveStyle);
|
424 |
-
}
|
425 |
-
} else if(!this.required && /^\s*$/.test(valueElement.value)) {
|
426 |
-
valueElement.value = '';
|
427 |
-
styleElement.style.backgroundImage = styleElement.jscStyle.backgroundImage;
|
428 |
-
styleElement.style.backgroundColor = styleElement.jscStyle.backgroundColor;
|
429 |
-
styleElement.style.color = styleElement.jscStyle.color;
|
430 |
-
this.exportColor(leaveValue | leaveStyle);
|
431 |
-
|
432 |
-
} else if(this.fromString(valueElement.value)) {
|
433 |
-
// OK
|
434 |
-
} else {
|
435 |
-
this.exportColor();
|
436 |
-
}
|
437 |
-
}
|
438 |
-
};
|
439 |
-
|
440 |
-
|
441 |
-
this.exportColor = function(flags) {
|
442 |
-
if(!(flags & leaveValue) && valueElement) {
|
443 |
-
var value = this.toString();
|
444 |
-
if(this.caps) { value = value.toUpperCase(); }
|
445 |
-
if(this.hash) { value = '#'+value; }
|
446 |
-
valueElement.value = value;
|
447 |
-
}
|
448 |
-
if(!(flags & leaveStyle) && styleElement) {
|
449 |
-
styleElement.style.backgroundImage = "none";
|
450 |
-
styleElement.style.backgroundColor =
|
451 |
-
'#'+this.toString();
|
452 |
-
styleElement.style.color =
|
453 |
-
0.213 * this.rgb[0] +
|
454 |
-
0.715 * this.rgb[1] +
|
455 |
-
0.072 * this.rgb[2]
|
456 |
-
< 0.5 ? '#FFF' : '#000';
|
457 |
-
}
|
458 |
-
if(!(flags & leavePad) && isPickerOwner()) {
|
459 |
-
redrawPad();
|
460 |
-
}
|
461 |
-
if(!(flags & leaveSld) && isPickerOwner()) {
|
462 |
-
redrawSld();
|
463 |
-
}
|
464 |
-
};
|
465 |
-
|
466 |
-
|
467 |
-
this.fromHSV = function(h, s, v, flags) { // null = don't change
|
468 |
-
if(h !== null) { h = Math.max(0.0, this.minH, Math.min(6.0, this.maxH, h)); }
|
469 |
-
if(s !== null) { s = Math.max(0.0, this.minS, Math.min(1.0, this.maxS, s)); }
|
470 |
-
if(v !== null) { v = Math.max(0.0, this.minV, Math.min(1.0, this.maxV, v)); }
|
471 |
-
|
472 |
-
this.rgb = HSV_RGB(
|
473 |
-
h===null ? this.hsv[0] : (this.hsv[0]=h),
|
474 |
-
s===null ? this.hsv[1] : (this.hsv[1]=s),
|
475 |
-
v===null ? this.hsv[2] : (this.hsv[2]=v)
|
476 |
-
);
|
477 |
-
|
478 |
-
this.exportColor(flags);
|
479 |
-
};
|
480 |
-
|
481 |
-
|
482 |
-
this.fromRGB = function(r, g, b, flags) { // null = don't change
|
483 |
-
if(r !== null) { r = Math.max(0.0, Math.min(1.0, r)); }
|
484 |
-
if(g !== null) { g = Math.max(0.0, Math.min(1.0, g)); }
|
485 |
-
if(b !== null) { b = Math.max(0.0, Math.min(1.0, b)); }
|
486 |
-
|
487 |
-
var hsv = RGB_HSV(
|
488 |
-
r===null ? this.rgb[0] : r,
|
489 |
-
g===null ? this.rgb[1] : g,
|
490 |
-
b===null ? this.rgb[2] : b
|
491 |
-
);
|
492 |
-
if(hsv[0] !== null) {
|
493 |
-
this.hsv[0] = Math.max(0.0, this.minH, Math.min(6.0, this.maxH, hsv[0]));
|
494 |
-
}
|
495 |
-
if(hsv[2] !== 0) {
|
496 |
-
this.hsv[1] = hsv[1]===null ? null : Math.max(0.0, this.minS, Math.min(1.0, this.maxS, hsv[1]));
|
497 |
-
}
|
498 |
-
this.hsv[2] = hsv[2]===null ? null : Math.max(0.0, this.minV, Math.min(1.0, this.maxV, hsv[2]));
|
499 |
-
|
500 |
-
// update RGB according to final HSV, as some values might be trimmed
|
501 |
-
var rgb = HSV_RGB(this.hsv[0], this.hsv[1], this.hsv[2]);
|
502 |
-
this.rgb[0] = rgb[0];
|
503 |
-
this.rgb[1] = rgb[1];
|
504 |
-
this.rgb[2] = rgb[2];
|
505 |
-
|
506 |
-
this.exportColor(flags);
|
507 |
-
};
|
508 |
-
|
509 |
-
|
510 |
-
this.fromString = function(hex, flags) {
|
511 |
-
var m = hex.match(/^\W*([0-9A-F]{3}([0-9A-F]{3})?)\W*$/i);
|
512 |
-
if(!m) {
|
513 |
-
return false;
|
514 |
-
} else {
|
515 |
-
if(m[1].length === 6) { // 6-char notation
|
516 |
-
this.fromRGB(
|
517 |
-
parseInt(m[1].substr(0,2),16) / 255,
|
518 |
-
parseInt(m[1].substr(2,2),16) / 255,
|
519 |
-
parseInt(m[1].substr(4,2),16) / 255,
|
520 |
-
flags
|
521 |
-
);
|
522 |
-
} else { // 3-char notation
|
523 |
-
this.fromRGB(
|
524 |
-
parseInt(m[1].charAt(0)+m[1].charAt(0),16) / 255,
|
525 |
-
parseInt(m[1].charAt(1)+m[1].charAt(1),16) / 255,
|
526 |
-
parseInt(m[1].charAt(2)+m[1].charAt(2),16) / 255,
|
527 |
-
flags
|
528 |
-
);
|
529 |
-
}
|
530 |
-
return true;
|
531 |
-
}
|
532 |
-
};
|
533 |
-
|
534 |
-
|
535 |
-
this.toString = function() {
|
536 |
-
return (
|
537 |
-
(0x100 | Math.round(255*this.rgb[0])).toString(16).substr(1) +
|
538 |
-
(0x100 | Math.round(255*this.rgb[1])).toString(16).substr(1) +
|
539 |
-
(0x100 | Math.round(255*this.rgb[2])).toString(16).substr(1)
|
540 |
-
);
|
541 |
-
};
|
542 |
-
|
543 |
-
|
544 |
-
function RGB_HSV(r, g, b) {
|
545 |
-
var n = Math.min(Math.min(r,g),b);
|
546 |
-
var v = Math.max(Math.max(r,g),b);
|
547 |
-
var m = v - n;
|
548 |
-
if(m === 0) { return [ null, 0, v ]; }
|
549 |
-
var h = r===n ? 3+(b-g)/m : (g===n ? 5+(r-b)/m : 1+(g-r)/m);
|
550 |
-
return [ h===6?0:h, m/v, v ];
|
551 |
-
}
|
552 |
-
|
553 |
-
|
554 |
-
function HSV_RGB(h, s, v) {
|
555 |
-
if(h === null) { return [ v, v, v ]; }
|
556 |
-
var i = Math.floor(h);
|
557 |
-
var f = i%2 ? h-i : 1-(h-i);
|
558 |
-
var m = v * (1 - s);
|
559 |
-
var n = v * (1 - s*f);
|
560 |
-
switch(i) {
|
561 |
-
case 6:
|
562 |
-
case 0: return [v,n,m];
|
563 |
-
case 1: return [n,v,m];
|
564 |
-
case 2: return [m,v,n];
|
565 |
-
case 3: return [m,n,v];
|
566 |
-
case 4: return [n,m,v];
|
567 |
-
case 5: return [v,m,n];
|
568 |
-
}
|
569 |
-
}
|
570 |
-
|
571 |
-
|
572 |
-
function removePicker() {
|
573 |
-
delete jscolor.picker.owner;
|
574 |
-
document.getElementsByTagName('body')[0].removeChild(jscolor.picker.boxB);
|
575 |
-
}
|
576 |
-
|
577 |
-
|
578 |
-
function drawPicker(x, y) {
|
579 |
-
if(!jscolor.picker) {
|
580 |
-
jscolor.picker = {
|
581 |
-
box : document.createElement('div'),
|
582 |
-
boxB : document.createElement('div'),
|
583 |
-
pad : document.createElement('div'),
|
584 |
-
padB : document.createElement('div'),
|
585 |
-
padM : document.createElement('div'),
|
586 |
-
sld : document.createElement('div'),
|
587 |
-
sldB : document.createElement('div'),
|
588 |
-
sldM : document.createElement('div'),
|
589 |
-
btn : document.createElement('div'),
|
590 |
-
btnS : document.createElement('span'),
|
591 |
-
btnT : document.createTextNode(THIS.pickerCloseText)
|
592 |
-
};
|
593 |
-
for(var i=0,segSize=4; i<jscolor.images.sld[1]; i+=segSize) {
|
594 |
-
var seg = document.createElement('div');
|
595 |
-
seg.style.height = segSize+'px';
|
596 |
-
seg.style.fontSize = '1px';
|
597 |
-
seg.style.lineHeight = '0';
|
598 |
-
jscolor.picker.sld.appendChild(seg);
|
599 |
-
}
|
600 |
-
jscolor.picker.sldB.appendChild(jscolor.picker.sld);
|
601 |
-
jscolor.picker.box.appendChild(jscolor.picker.sldB);
|
602 |
-
jscolor.picker.box.appendChild(jscolor.picker.sldM);
|
603 |
-
jscolor.picker.padB.appendChild(jscolor.picker.pad);
|
604 |
-
jscolor.picker.box.appendChild(jscolor.picker.padB);
|
605 |
-
jscolor.picker.box.appendChild(jscolor.picker.padM);
|
606 |
-
jscolor.picker.btnS.appendChild(jscolor.picker.btnT);
|
607 |
-
jscolor.picker.btn.appendChild(jscolor.picker.btnS);
|
608 |
-
jscolor.picker.box.appendChild(jscolor.picker.btn);
|
609 |
-
jscolor.picker.boxB.appendChild(jscolor.picker.box);
|
610 |
-
}
|
611 |
-
|
612 |
-
var p = jscolor.picker;
|
613 |
-
|
614 |
-
// controls interaction
|
615 |
-
p.box.onmouseup =
|
616 |
-
p.box.onmouseout = function() { target.focus(); };
|
617 |
-
p.box.onmousedown = function() { abortBlur=true; };
|
618 |
-
p.box.onmousemove = function(e) {
|
619 |
-
if (holdPad || holdSld) {
|
620 |
-
holdPad && setPad(e);
|
621 |
-
holdSld && setSld(e);
|
622 |
-
if (document.selection) {
|
623 |
-
document.selection.empty();
|
624 |
-
} else if (window.getSelection) {
|
625 |
-
window.getSelection().removeAllRanges();
|
626 |
-
}
|
627 |
-
dispatchImmediateChange();
|
628 |
-
}
|
629 |
-
};
|
630 |
-
p.padM.onmouseup =
|
631 |
-
p.padM.onmouseout = function() { if(holdPad) { holdPad=false; jscolor.fireEvent(valueElement,'change'); } };
|
632 |
-
p.padM.onmousedown = function(e) {
|
633 |
-
// if the slider is at the bottom, move it up
|
634 |
-
switch(modeID) {
|
635 |
-
case 0: if (THIS.hsv[2] === 0) { THIS.fromHSV(null, null, 1.0); }; break;
|
636 |
-
case 1: if (THIS.hsv[1] === 0) { THIS.fromHSV(null, 1.0, null); }; break;
|
637 |
-
}
|
638 |
-
holdPad=true;
|
639 |
-
setPad(e);
|
640 |
-
dispatchImmediateChange();
|
641 |
-
};
|
642 |
-
p.sldM.onmouseup =
|
643 |
-
p.sldM.onmouseout = function() { if(holdSld) { holdSld=false; jscolor.fireEvent(valueElement,'change'); } };
|
644 |
-
p.sldM.onmousedown = function(e) {
|
645 |
-
holdSld=true;
|
646 |
-
setSld(e);
|
647 |
-
dispatchImmediateChange();
|
648 |
-
};
|
649 |
-
|
650 |
-
// picker
|
651 |
-
var dims = getPickerDims(THIS);
|
652 |
-
p.box.style.width = dims[0] + 'px';
|
653 |
-
p.box.style.height = dims[1] + 'px';
|
654 |
-
|
655 |
-
// picker border
|
656 |
-
p.boxB.style.position = 'absolute';
|
657 |
-
p.boxB.style.clear = 'both';
|
658 |
-
p.boxB.style.left = x+'px';
|
659 |
-
p.boxB.style.top = y+'px';
|
660 |
-
p.boxB.style.zIndex = THIS.pickerZIndex;
|
661 |
-
p.boxB.style.border = THIS.pickerBorder+'px solid';
|
662 |
-
p.boxB.style.borderColor = THIS.pickerBorderColor;
|
663 |
-
p.boxB.style.background = THIS.pickerFaceColor;
|
664 |
-
|
665 |
-
// pad image
|
666 |
-
p.pad.style.width = jscolor.images.pad[0]+'px';
|
667 |
-
p.pad.style.height = jscolor.images.pad[1]+'px';
|
668 |
-
|
669 |
-
// pad border
|
670 |
-
p.padB.style.position = 'absolute';
|
671 |
-
p.padB.style.left = THIS.pickerFace+'px';
|
672 |
-
p.padB.style.top = THIS.pickerFace+'px';
|
673 |
-
p.padB.style.border = THIS.pickerInset+'px solid';
|
674 |
-
p.padB.style.borderColor = THIS.pickerInsetColor;
|
675 |
-
|
676 |
-
// pad mouse area
|
677 |
-
p.padM.style.position = 'absolute';
|
678 |
-
p.padM.style.left = '0';
|
679 |
-
p.padM.style.top = '0';
|
680 |
-
p.padM.style.width = THIS.pickerFace + 2*THIS.pickerInset + jscolor.images.pad[0] + jscolor.images.arrow[0] + 'px';
|
681 |
-
p.padM.style.height = p.box.style.height;
|
682 |
-
p.padM.style.cursor = 'crosshair';
|
683 |
-
|
684 |
-
// slider image
|
685 |
-
p.sld.style.overflow = 'hidden';
|
686 |
-
p.sld.style.width = jscolor.images.sld[0]+'px';
|
687 |
-
p.sld.style.height = jscolor.images.sld[1]+'px';
|
688 |
-
|
689 |
-
// slider border
|
690 |
-
p.sldB.style.display = THIS.slider ? 'block' : 'none';
|
691 |
-
p.sldB.style.position = 'absolute';
|
692 |
-
p.sldB.style.right = THIS.pickerFace+'px';
|
693 |
-
p.sldB.style.top = THIS.pickerFace+'px';
|
694 |
-
p.sldB.style.border = THIS.pickerInset+'px solid';
|
695 |
-
p.sldB.style.borderColor = THIS.pickerInsetColor;
|
696 |
-
|
697 |
-
// slider mouse area
|
698 |
-
p.sldM.style.display = THIS.slider ? 'block' : 'none';
|
699 |
-
p.sldM.style.position = 'absolute';
|
700 |
-
p.sldM.style.right = '0';
|
701 |
-
p.sldM.style.top = '0';
|
702 |
-
p.sldM.style.width = jscolor.images.sld[0] + jscolor.images.arrow[0] + THIS.pickerFace + 2*THIS.pickerInset + 'px';
|
703 |
-
p.sldM.style.height = p.box.style.height;
|
704 |
-
try {
|
705 |
-
p.sldM.style.cursor = 'pointer';
|
706 |
-
} catch(eOldIE) {
|
707 |
-
p.sldM.style.cursor = 'hand';
|
708 |
-
}
|
709 |
-
|
710 |
-
// "close" button
|
711 |
-
function setBtnBorder() {
|
712 |
-
var insetColors = THIS.pickerInsetColor.split(/\s+/);
|
713 |
-
var pickerOutsetColor = insetColors.length < 2 ? insetColors[0] : insetColors[1] + ' ' + insetColors[0] + ' ' + insetColors[0] + ' ' + insetColors[1];
|
714 |
-
p.btn.style.borderColor = pickerOutsetColor;
|
715 |
-
}
|
716 |
-
p.btn.style.display = THIS.pickerClosable ? 'block' : 'none';
|
717 |
-
p.btn.style.position = 'absolute';
|
718 |
-
p.btn.style.left = THIS.pickerFace + 'px';
|
719 |
-
p.btn.style.bottom = THIS.pickerFace + 'px';
|
720 |
-
p.btn.style.padding = '0 15px';
|
721 |
-
p.btn.style.height = '18px';
|
722 |
-
p.btn.style.border = THIS.pickerInset + 'px solid';
|
723 |
-
setBtnBorder();
|
724 |
-
p.btn.style.color = THIS.pickerButtonColor;
|
725 |
-
p.btn.style.font = '12px sans-serif';
|
726 |
-
p.btn.style.textAlign = 'center';
|
727 |
-
try {
|
728 |
-
p.btn.style.cursor = 'pointer';
|
729 |
-
} catch(eOldIE) {
|
730 |
-
p.btn.style.cursor = 'hand';
|
731 |
-
}
|
732 |
-
p.btn.onmousedown = function () {
|
733 |
-
THIS.hidePicker();
|
734 |
-
};
|
735 |
-
p.btnS.style.lineHeight = p.btn.style.height;
|
736 |
-
|
737 |
-
// load images in optimal order
|
738 |
-
switch(modeID) {
|
739 |
-
case 0: var padImg = 'hs.png'; break;
|
740 |
-
case 1: var padImg = 'hv.png'; break;
|
741 |
-
}
|
742 |
-
p.padM.style.backgroundImage = "url('"+jscolor.getDir()+"cross.gif')";
|
743 |
-
p.padM.style.backgroundRepeat = "no-repeat";
|
744 |
-
p.sldM.style.backgroundImage = "url('"+jscolor.getDir()+"arrow.gif')";
|
745 |
-
p.sldM.style.backgroundRepeat = "no-repeat";
|
746 |
-
p.pad.style.backgroundImage = "url('"+jscolor.getDir()+padImg+"')";
|
747 |
-
p.pad.style.backgroundRepeat = "no-repeat";
|
748 |
-
p.pad.style.backgroundPosition = "0 0";
|
749 |
-
|
750 |
-
// place pointers
|
751 |
-
redrawPad();
|
752 |
-
redrawSld();
|
753 |
-
|
754 |
-
jscolor.picker.owner = THIS;
|
755 |
-
document.getElementsByTagName('body')[0].appendChild(p.boxB);
|
756 |
-
}
|
757 |
-
|
758 |
-
|
759 |
-
function getPickerDims(o) {
|
760 |
-
var dims = [
|
761 |
-
2*o.pickerInset + 2*o.pickerFace + jscolor.images.pad[0] +
|
762 |
-
(o.slider ? 2*o.pickerInset + 2*jscolor.images.arrow[0] + jscolor.images.sld[0] : 0),
|
763 |
-
o.pickerClosable ?
|
764 |
-
4*o.pickerInset + 3*o.pickerFace + jscolor.images.pad[1] + o.pickerButtonHeight :
|
765 |
-
2*o.pickerInset + 2*o.pickerFace + jscolor.images.pad[1]
|
766 |
-
];
|
767 |
-
return dims;
|
768 |
-
}
|
769 |
-
|
770 |
-
|
771 |
-
function redrawPad() {
|
772 |
-
// redraw the pad pointer
|
773 |
-
switch(modeID) {
|
774 |
-
case 0: var yComponent = 1; break;
|
775 |
-
case 1: var yComponent = 2; break;
|
776 |
-
}
|
777 |
-
var x = Math.round((THIS.hsv[0]/6) * (jscolor.images.pad[0]-1));
|
778 |
-
var y = Math.round((1-THIS.hsv[yComponent]) * (jscolor.images.pad[1]-1));
|
779 |
-
jscolor.picker.padM.style.backgroundPosition =
|
780 |
-
(THIS.pickerFace+THIS.pickerInset+x - Math.floor(jscolor.images.cross[0]/2)) + 'px ' +
|
781 |
-
(THIS.pickerFace+THIS.pickerInset+y - Math.floor(jscolor.images.cross[1]/2)) + 'px';
|
782 |
-
|
783 |
-
// redraw the slider image
|
784 |
-
var seg = jscolor.picker.sld.childNodes;
|
785 |
-
|
786 |
-
switch(modeID) {
|
787 |
-
case 0:
|
788 |
-
var rgb = HSV_RGB(THIS.hsv[0], THIS.hsv[1], 1);
|
789 |
-
for(var i=0; i<seg.length; i+=1) {
|
790 |
-
seg[i].style.backgroundColor = 'rgb('+
|
791 |
-
(rgb[0]*(1-i/seg.length)*100)+'%,'+
|
792 |
-
(rgb[1]*(1-i/seg.length)*100)+'%,'+
|
793 |
-
(rgb[2]*(1-i/seg.length)*100)+'%)';
|
794 |
-
}
|
795 |
-
break;
|
796 |
-
case 1:
|
797 |
-
var rgb, s, c = [ THIS.hsv[2], 0, 0 ];
|
798 |
-
var i = Math.floor(THIS.hsv[0]);
|
799 |
-
var f = i%2 ? THIS.hsv[0]-i : 1-(THIS.hsv[0]-i);
|
800 |
-
switch(i) {
|
801 |
-
case 6:
|
802 |
-
case 0: rgb=[0,1,2]; break;
|
803 |
-
case 1: rgb=[1,0,2]; break;
|
804 |
-
case 2: rgb=[2,0,1]; break;
|
805 |
-
case 3: rgb=[2,1,0]; break;
|
806 |
-
case 4: rgb=[1,2,0]; break;
|
807 |
-
case 5: rgb=[0,2,1]; break;
|
808 |
-
}
|
809 |
-
for(var i=0; i<seg.length; i+=1) {
|
810 |
-
s = 1 - 1/(seg.length-1)*i;
|
811 |
-
c[1] = c[0] * (1 - s*f);
|
812 |
-
c[2] = c[0] * (1 - s);
|
813 |
-
seg[i].style.backgroundColor = 'rgb('+
|
814 |
-
(c[rgb[0]]*100)+'%,'+
|
815 |
-
(c[rgb[1]]*100)+'%,'+
|
816 |
-
(c[rgb[2]]*100)+'%)';
|
817 |
-
}
|
818 |
-
break;
|
819 |
-
}
|
820 |
-
}
|
821 |
-
|
822 |
-
|
823 |
-
function redrawSld() {
|
824 |
-
// redraw the slider pointer
|
825 |
-
switch(modeID) {
|
826 |
-
case 0: var yComponent = 2; break;
|
827 |
-
case 1: var yComponent = 1; break;
|
828 |
-
}
|
829 |
-
var y = Math.round((1-THIS.hsv[yComponent]) * (jscolor.images.sld[1]-1));
|
830 |
-
jscolor.picker.sldM.style.backgroundPosition =
|
831 |
-
'0 ' + (THIS.pickerFace+THIS.pickerInset+y - Math.floor(jscolor.images.arrow[1]/2)) + 'px';
|
832 |
-
}
|
833 |
-
|
834 |
-
|
835 |
-
function isPickerOwner() {
|
836 |
-
return jscolor.picker && jscolor.picker.owner === THIS;
|
837 |
-
}
|
838 |
-
|
839 |
-
|
840 |
-
function blurTarget() {
|
841 |
-
if(valueElement === target) {
|
842 |
-
THIS.importColor();
|
843 |
-
}
|
844 |
-
if(THIS.pickerOnfocus) {
|
845 |
-
THIS.hidePicker();
|
846 |
-
}
|
847 |
-
}
|
848 |
-
|
849 |
-
|
850 |
-
function blurValue() {
|
851 |
-
if(valueElement !== target) {
|
852 |
-
THIS.importColor();
|
853 |
-
}
|
854 |
-
}
|
855 |
-
|
856 |
-
|
857 |
-
function setPad(e) {
|
858 |
-
var mpos = jscolor.getRelMousePos(e);
|
859 |
-
var x = mpos.x - THIS.pickerFace - THIS.pickerInset;
|
860 |
-
var y = mpos.y - THIS.pickerFace - THIS.pickerInset;
|
861 |
-
switch(modeID) {
|
862 |
-
case 0: THIS.fromHSV(x*(6/(jscolor.images.pad[0]-1)), 1 - y/(jscolor.images.pad[1]-1), null, leaveSld); break;
|
863 |
-
case 1: THIS.fromHSV(x*(6/(jscolor.images.pad[0]-1)), null, 1 - y/(jscolor.images.pad[1]-1), leaveSld); break;
|
864 |
-
}
|
865 |
-
}
|
866 |
-
|
867 |
-
|
868 |
-
function setSld(e) {
|
869 |
-
var mpos = jscolor.getRelMousePos(e);
|
870 |
-
var y = mpos.y - THIS.pickerFace - THIS.pickerInset;
|
871 |
-
switch(modeID) {
|
872 |
-
case 0: THIS.fromHSV(null, null, 1 - y/(jscolor.images.sld[1]-1), leavePad); break;
|
873 |
-
case 1: THIS.fromHSV(null, 1 - y/(jscolor.images.sld[1]-1), null, leavePad); break;
|
874 |
-
}
|
875 |
-
}
|
876 |
-
|
877 |
-
|
878 |
-
function dispatchImmediateChange() {
|
879 |
-
if (THIS.onImmediateChange) {
|
880 |
-
var callback;
|
881 |
-
if (typeof THIS.onImmediateChange === 'string') {
|
882 |
-
callback = new Function (THIS.onImmediateChange);
|
883 |
-
} else {
|
884 |
-
callback = THIS.onImmediateChange;
|
885 |
-
}
|
886 |
-
callback.call(THIS);
|
887 |
-
}
|
888 |
-
}
|
889 |
-
|
890 |
-
|
891 |
-
var THIS = this;
|
892 |
-
var modeID = this.pickerMode.toLowerCase()==='hvs' ? 1 : 0;
|
893 |
-
var abortBlur = false;
|
894 |
-
var
|
895 |
-
valueElement = jscolor.fetchElement(this.valueElement),
|
896 |
-
styleElement = jscolor.fetchElement(this.styleElement);
|
897 |
-
var
|
898 |
-
holdPad = false,
|
899 |
-
holdSld = false;
|
900 |
-
var
|
901 |
-
leaveValue = 1<<0,
|
902 |
-
leaveStyle = 1<<1,
|
903 |
-
leavePad = 1<<2,
|
904 |
-
leaveSld = 1<<3;
|
905 |
-
|
906 |
-
// target
|
907 |
-
jscolor.addEvent(target, 'focus', function() {
|
908 |
-
if(THIS.pickerOnfocus) { THIS.showPicker(); }
|
909 |
-
});
|
910 |
-
jscolor.addEvent(target, 'blur', function() {
|
911 |
-
if(!abortBlur) {
|
912 |
-
window.setTimeout(function(){ abortBlur || blurTarget(); abortBlur=false; }, 0);
|
913 |
-
} else {
|
914 |
-
abortBlur = false;
|
915 |
-
}
|
916 |
-
});
|
917 |
-
|
918 |
-
// valueElement
|
919 |
-
if(valueElement) {
|
920 |
-
var updateField = function() {
|
921 |
-
THIS.fromString(valueElement.value, leaveValue);
|
922 |
-
dispatchImmediateChange();
|
923 |
-
};
|
924 |
-
jscolor.addEvent(valueElement, 'keyup', updateField);
|
925 |
-
jscolor.addEvent(valueElement, 'input', updateField);
|
926 |
-
jscolor.addEvent(valueElement, 'blur', blurValue);
|
927 |
-
valueElement.setAttribute('autocomplete', 'off');
|
928 |
-
}
|
929 |
-
|
930 |
-
// styleElement
|
931 |
-
if(styleElement) {
|
932 |
-
styleElement.jscStyle = {
|
933 |
-
backgroundImage : styleElement.style.backgroundImage,
|
934 |
-
backgroundColor : styleElement.style.backgroundColor,
|
935 |
-
color : styleElement.style.color
|
936 |
-
};
|
937 |
-
}
|
938 |
-
|
939 |
-
// require images
|
940 |
-
switch(modeID) {
|
941 |
-
case 0: jscolor.requireImage('hs.png'); break;
|
942 |
-
case 1: jscolor.requireImage('hv.png'); break;
|
943 |
-
}
|
944 |
-
jscolor.requireImage('cross.gif');
|
945 |
-
jscolor.requireImage('arrow.gif');
|
946 |
-
|
947 |
-
this.importColor();
|
948 |
-
}
|
949 |
-
|
950 |
-
};
|
951 |
-
|
952 |
-
|
953 |
-
jscolor.install();
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
license.txt
DELETED
@@ -1,339 +0,0 @@
|
|
1 |
-
GNU GENERAL PUBLIC LICENSE
|
2 |
-
Version 2, June 1991
|
3 |
-
|
4 |
-
Copyright (C) 1989, 1991 Free Software Foundation, Inc.,
|
5 |
-
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
6 |
-
Everyone is permitted to copy and distribute verbatim copies
|
7 |
-
of this license document, but changing it is not allowed.
|
8 |
-
|
9 |
-
Preamble
|
10 |
-
|
11 |
-
The licenses for most software are designed to take away your
|
12 |
-
freedom to share and change it. By contrast, the GNU General Public
|
13 |
-
License is intended to guarantee your freedom to share and change free
|
14 |
-
software--to make sure the software is free for all its users. This
|
15 |
-
General Public License applies to most of the Free Software
|
16 |
-
Foundation's software and to any other program whose authors commit to
|
17 |
-
using it. (Some other Free Software Foundation software is covered by
|
18 |
-
the GNU Lesser General Public License instead.) You can apply it to
|
19 |
-
your programs, too.
|
20 |
-
|
21 |
-
When we speak of free software, we are referring to freedom, not
|
22 |
-
price. Our General Public Licenses are designed to make sure that you
|
23 |
-
have the freedom to distribute copies of free software (and charge for
|
24 |
-
this service if you wish), that you receive source code or can get it
|
25 |
-
if you want it, that you can change the software or use pieces of it
|
26 |
-
in new free programs; and that you know you can do these things.
|
27 |
-
|
28 |
-
To protect your rights, we need to make restrictions that forbid
|
29 |
-
anyone to deny you these rights or to ask you to surrender the rights.
|
30 |
-
These restrictions translate to certain responsibilities for you if you
|
31 |
-
distribute copies of the software, or if you modify it.
|
32 |
-
|
33 |
-
For example, if you distribute copies of such a program, whether
|
34 |
-
gratis or for a fee, you must give the recipients all the rights that
|
35 |
-
you have. You must make sure that they, too, receive or can get the
|
36 |
-
source code. And you must show them these terms so they know their
|
37 |
-
rights.
|
38 |
-
|
39 |
-
We protect your rights with two steps: (1) copyright the software, and
|
40 |
-
(2) offer you this license which gives you legal permission to copy,
|
41 |
-
distribute and/or modify the software.
|
42 |
-
|
43 |
-
Also, for each author's protection and ours, we want to make certain
|
44 |
-
that everyone understands that there is no warranty for this free
|
45 |
-
software. If the software is modified by someone else and passed on, we
|
46 |
-
want its recipients to know that what they have is not the original, so
|
47 |
-
that any problems introduced by others will not reflect on the original
|
48 |
-
authors' reputations.
|
49 |
-
|
50 |
-
Finally, any free program is threatened constantly by software
|
51 |
-
patents. We wish to avoid the danger that redistributors of a free
|
52 |
-
program will individually obtain patent licenses, in effect making the
|
53 |
-
program proprietary. To prevent this, we have made it clear that any
|
54 |
-
patent must be licensed for everyone's free use or not licensed at all.
|
55 |
-
|
56 |
-
The precise terms and conditions for copying, distribution and
|
57 |
-
modification follow.
|
58 |
-
|
59 |
-
GNU GENERAL PUBLIC LICENSE
|
60 |
-
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
|
61 |
-
|
62 |
-
0. This License applies to any program or other work which contains
|
63 |
-
a notice placed by the copyright holder saying it may be distributed
|
64 |
-
under the terms of this General Public License. The "Program", below,
|
65 |
-
refers to any such program or work, and a "work based on the Program"
|
66 |
-
means either the Program or any derivative work under copyright law:
|
67 |
-
that is to say, a work containing the Program or a portion of it,
|
68 |
-
either verbatim or with modifications and/or translated into another
|
69 |
-
language. (Hereinafter, translation is included without limitation in
|
70 |
-
the term "modification".) Each licensee is addressed as "you".
|
71 |
-
|
72 |
-
Activities other than copying, distribution and modification are not
|
73 |
-
covered by this License; they are outside its scope. The act of
|
74 |
-
running the Program is not restricted, and the output from the Program
|
75 |
-
is covered only if its contents constitute a work based on the
|
76 |
-
Program (independent of having been made by running the Program).
|
77 |
-
Whether that is true depends on what the Program does.
|
78 |
-
|
79 |
-
1. You may copy and distribute verbatim copies of the Program's
|
80 |
-
source code as you receive it, in any medium, provided that you
|
81 |
-
conspicuously and appropriately publish on each copy an appropriate
|
82 |
-
copyright notice and disclaimer of warranty; keep intact all the
|
83 |
-
notices that refer to this License and to the absence of any warranty;
|
84 |
-
and give any other recipients of the Program a copy of this License
|
85 |
-
along with the Program.
|
86 |
-
|
87 |
-
You may charge a fee for the physical act of transferring a copy, and
|
88 |
-
you may at your option offer warranty protection in exchange for a fee.
|
89 |
-
|
90 |
-
2. You may modify your copy or copies of the Program or any portion
|
91 |
-
of it, thus forming a work based on the Program, and copy and
|
92 |
-
distribute such modifications or work under the terms of Section 1
|
93 |
-
above, provided that you also meet all of these conditions:
|
94 |
-
|
95 |
-
a) You must cause the modified files to carry prominent notices
|
96 |
-
stating that you changed the files and the date of any change.
|
97 |
-
|
98 |
-
b) You must cause any work that you distribute or publish, that in
|
99 |
-
whole or in part contains or is derived from the Program or any
|
100 |
-
part thereof, to be licensed as a whole at no charge to all third
|
101 |
-
parties under the terms of this License.
|
102 |
-
|
103 |
-
c) If the modified program normally reads commands interactively
|
104 |
-
when run, you must cause it, when started running for such
|
105 |
-
interactive use in the most ordinary way, to print or display an
|
106 |
-
announcement including an appropriate copyright notice and a
|
107 |
-
notice that there is no warranty (or else, saying that you provide
|
108 |
-
a warranty) and that users may redistribute the program under
|
109 |
-
these conditions, and telling the user how to view a copy of this
|
110 |
-
License. (Exception: if the Program itself is interactive but
|
111 |
-
does not normally print such an announcement, your work based on
|
112 |
-
the Program is not required to print an announcement.)
|
113 |
-
|
114 |
-
These requirements apply to the modified work as a whole. If
|
115 |
-
identifiable sections of that work are not derived from the Program,
|
116 |
-
and can be reasonably considered independent and separate works in
|
117 |
-
themselves, then this License, and its terms, do not apply to those
|
118 |
-
sections when you distribute them as separate works. But when you
|
119 |
-
distribute the same sections as part of a whole which is a work based
|
120 |
-
on the Program, the distribution of the whole must be on the terms of
|
121 |
-
this License, whose permissions for other licensees extend to the
|
122 |
-
entire whole, and thus to each and every part regardless of who wrote it.
|
123 |
-
|
124 |
-
Thus, it is not the intent of this section to claim rights or contest
|
125 |
-
your rights to work written entirely by you; rather, the intent is to
|
126 |
-
exercise the right to control the distribution of derivative or
|
127 |
-
collective works based on the Program.
|
128 |
-
|
129 |
-
In addition, mere aggregation of another work not based on the Program
|
130 |
-
with the Program (or with a work based on the Program) on a volume of
|
131 |
-
a storage or distribution medium does not bring the other work under
|
132 |
-
the scope of this License.
|
133 |
-
|
134 |
-
3. You may copy and distribute the Program (or a work based on it,
|
135 |
-
under Section 2) in object code or executable form under the terms of
|
136 |
-
Sections 1 and 2 above provided that you also do one of the following:
|
137 |
-
|
138 |
-
a) Accompany it with the complete corresponding machine-readable
|
139 |
-
source code, which must be distributed under the terms of Sections
|
140 |
-
1 and 2 above on a medium customarily used for software interchange; or,
|
141 |
-
|
142 |
-
b) Accompany it with a written offer, valid for at least three
|
143 |
-
years, to give any third party, for a charge no more than your
|
144 |
-
cost of physically performing source distribution, a complete
|
145 |
-
machine-readable copy of the corresponding source code, to be
|
146 |
-
distributed under the terms of Sections 1 and 2 above on a medium
|
147 |
-
customarily used for software interchange; or,
|
148 |
-
|
149 |
-
c) Accompany it with the information you received as to the offer
|
150 |
-
to distribute corresponding source code. (This alternative is
|
151 |
-
allowed only for noncommercial distribution and only if you
|
152 |
-
received the program in object code or executable form with such
|
153 |
-
an offer, in accord with Subsection b above.)
|
154 |
-
|
155 |
-
The source code for a work means the preferred form of the work for
|
156 |
-
making modifications to it. For an executable work, complete source
|
157 |
-
code means all the source code for all modules it contains, plus any
|
158 |
-
associated interface definition files, plus the scripts used to
|
159 |
-
control compilation and installation of the executable. However, as a
|
160 |
-
special exception, the source code distributed need not include
|
161 |
-
anything that is normally distributed (in either source or binary
|
162 |
-
form) with the major components (compiler, kernel, and so on) of the
|
163 |
-
operating system on which the executable runs, unless that component
|
164 |
-
itself accompanies the executable.
|
165 |
-
|
166 |
-
If distribution of executable or object code is made by offering
|
167 |
-
access to copy from a designated place, then offering equivalent
|
168 |
-
access to copy the source code from the same place counts as
|
169 |
-
distribution of the source code, even though third parties are not
|
170 |
-
compelled to copy the source along with the object code.
|
171 |
-
|
172 |
-
4. You may not copy, modify, sublicense, or distribute the Program
|
173 |
-
except as expressly provided under this License. Any attempt
|
174 |
-
otherwise to copy, modify, sublicense or distribute the Program is
|
175 |
-
void, and will automatically terminate your rights under this License.
|
176 |
-
However, parties who have received copies, or rights, from you under
|
177 |
-
this License will not have their licenses terminated so long as such
|
178 |
-
parties remain in full compliance.
|
179 |
-
|
180 |
-
5. You are not required to accept this License, since you have not
|
181 |
-
signed it. However, nothing else grants you permission to modify or
|
182 |
-
distribute the Program or its derivative works. These actions are
|
183 |
-
prohibited by law if you do not accept this License. Therefore, by
|
184 |
-
modifying or distributing the Program (or any work based on the
|
185 |
-
Program), you indicate your acceptance of this License to do so, and
|
186 |
-
all its terms and conditions for copying, distributing or modifying
|
187 |
-
the Program or works based on it.
|
188 |
-
|
189 |
-
6. Each time you redistribute the Program (or any work based on the
|
190 |
-
Program), the recipient automatically receives a license from the
|
191 |
-
original licensor to copy, distribute or modify the Program subject to
|
192 |
-
these terms and conditions. You may not impose any further
|
193 |
-
restrictions on the recipients' exercise of the rights granted herein.
|
194 |
-
You are not responsible for enforcing compliance by third parties to
|
195 |
-
this License.
|
196 |
-
|
197 |
-
7. If, as a consequence of a court judgment or allegation of patent
|
198 |
-
infringement or for any other reason (not limited to patent issues),
|
199 |
-
conditions are imposed on you (whether by court order, agreement or
|
200 |
-
otherwise) that contradict the conditions of this License, they do not
|
201 |
-
excuse you from the conditions of this License. If you cannot
|
202 |
-
distribute so as to satisfy simultaneously your obligations under this
|
203 |
-
License and any other pertinent obligations, then as a consequence you
|
204 |
-
may not distribute the Program at all. For example, if a patent
|
205 |
-
license would not permit royalty-free redistribution of the Program by
|
206 |
-
all those who receive copies directly or indirectly through you, then
|
207 |
-
the only way you could satisfy both it and this License would be to
|
208 |
-
refrain entirely from distribution of the Program.
|
209 |
-
|
210 |
-
If any portion of this section is held invalid or unenforceable under
|
211 |
-
any particular circumstance, the balance of the section is intended to
|
212 |
-
apply and the section as a whole is intended to apply in other
|
213 |
-
circumstances.
|
214 |
-
|
215 |
-
It is not the purpose of this section to induce you to infringe any
|
216 |
-
patents or other property right claims or to contest validity of any
|
217 |
-
such claims; this section has the sole purpose of protecting the
|
218 |
-
integrity of the free software distribution system, which is
|
219 |
-
implemented by public license practices. Many people have made
|
220 |
-
generous contributions to the wide range of software distributed
|
221 |
-
through that system in reliance on consistent application of that
|
222 |
-
system; it is up to the author/donor to decide if he or she is willing
|
223 |
-
to distribute software through any other system and a licensee cannot
|
224 |
-
impose that choice.
|
225 |
-
|
226 |
-
This section is intended to make thoroughly clear what is believed to
|
227 |
-
be a consequence of the rest of this License.
|
228 |
-
|
229 |
-
8. If the distribution and/or use of the Program is restricted in
|
230 |
-
certain countries either by patents or by copyrighted interfaces, the
|
231 |
-
original copyright holder who places the Program under this License
|
232 |
-
may add an explicit geographical distribution limitation excluding
|
233 |
-
those countries, so that distribution is permitted only in or among
|
234 |
-
countries not thus excluded. In such case, this License incorporates
|
235 |
-
the limitation as if written in the body of this License.
|
236 |
-
|
237 |
-
9. The Free Software Foundation may publish revised and/or new versions
|
238 |
-
of the General Public License from time to time. Such new versions will
|
239 |
-
be similar in spirit to the present version, but may differ in detail to
|
240 |
-
address new problems or concerns.
|
241 |
-
|
242 |
-
Each version is given a distinguishing version number. If the Program
|
243 |
-
specifies a version number of this License which applies to it and "any
|
244 |
-
later version", you have the option of following the terms and conditions
|
245 |
-
either of that version or of any later version published by the Free
|
246 |
-
Software Foundation. If the Program does not specify a version number of
|
247 |
-
this License, you may choose any version ever published by the Free Software
|
248 |
-
Foundation.
|
249 |
-
|
250 |
-
10. If you wish to incorporate parts of the Program into other free
|
251 |
-
programs whose distribution conditions are different, write to the author
|
252 |
-
to ask for permission. For software which is copyrighted by the Free
|
253 |
-
Software Foundation, write to the Free Software Foundation; we sometimes
|
254 |
-
make exceptions for this. Our decision will be guided by the two goals
|
255 |
-
of preserving the free status of all derivatives of our free software and
|
256 |
-
of promoting the sharing and reuse of software generally.
|
257 |
-
|
258 |
-
NO WARRANTY
|
259 |
-
|
260 |
-
11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
|
261 |
-
FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
|
262 |
-
OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
|
263 |
-
PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
|
264 |
-
OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
265 |
-
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
|
266 |
-
TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
|
267 |
-
PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
|
268 |
-
REPAIR OR CORRECTION.
|
269 |
-
|
270 |
-
12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
|
271 |
-
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
|
272 |
-
REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
|
273 |
-
INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
|
274 |
-
OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
|
275 |
-
TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
|
276 |
-
YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
|
277 |
-
PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
|
278 |
-
POSSIBILITY OF SUCH DAMAGES.
|
279 |
-
|
280 |
-
END OF TERMS AND CONDITIONS
|
281 |
-
|
282 |
-
How to Apply These Terms to Your New Programs
|
283 |
-
|
284 |
-
If you develop a new program, and you want it to be of the greatest
|
285 |
-
possible use to the public, the best way to achieve this is to make it
|
286 |
-
free software which everyone can redistribute and change under these terms.
|
287 |
-
|
288 |
-
To do so, attach the following notices to the program. It is safest
|
289 |
-
to attach them to the start of each source file to most effectively
|
290 |
-
convey the exclusion of warranty; and each file should have at least
|
291 |
-
the "copyright" line and a pointer to where the full notice is found.
|
292 |
-
|
293 |
-
<one line to give the program's name and a brief idea of what it does.>
|
294 |
-
Copyright (C) <year> <name of author>
|
295 |
-
|
296 |
-
This program is free software; you can redistribute it and/or modify
|
297 |
-
it under the terms of the GNU General Public License as published by
|
298 |
-
the Free Software Foundation; either version 2 of the License, or
|
299 |
-
(at your option) any later version.
|
300 |
-
|
301 |
-
This program is distributed in the hope that it will be useful,
|
302 |
-
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
303 |
-
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
304 |
-
GNU General Public License for more details.
|
305 |
-
|
306 |
-
You should have received a copy of the GNU General Public License along
|
307 |
-
with this program; if not, write to the Free Software Foundation, Inc.,
|
308 |
-
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
309 |
-
|
310 |
-
Also add information on how to contact you by electronic and paper mail.
|
311 |
-
|
312 |
-
If the program is interactive, make it output a short notice like this
|
313 |
-
when it starts in an interactive mode:
|
314 |
-
|
315 |
-
Gnomovision version 69, Copyright (C) year name of author
|
316 |
-
Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
|
317 |
-
This is free software, and you are welcome to redistribute it
|
318 |
-
under certain conditions; type `show c' for details.
|
319 |
-
|
320 |
-
The hypothetical commands `show w' and `show c' should show the appropriate
|
321 |
-
parts of the General Public License. Of course, the commands you use may
|
322 |
-
be called something other than `show w' and `show c'; they could even be
|
323 |
-
mouse-clicks or menu items--whatever suits your program.
|
324 |
-
|
325 |
-
You should also get your employer (if you work as a programmer) or your
|
326 |
-
school, if any, to sign a "copyright disclaimer" for the program, if
|
327 |
-
necessary. Here is a sample; alter the names:
|
328 |
-
|
329 |
-
Yoyodyne, Inc., hereby disclaims all copyright interest in the program
|
330 |
-
`Gnomovision' (which makes passes at compilers) written by James Hacker.
|
331 |
-
|
332 |
-
<signature of Ty Coon>, 1 April 1989
|
333 |
-
Ty Coon, President of Vice
|
334 |
-
|
335 |
-
This General Public License does not permit incorporating your program into
|
336 |
-
proprietary programs. If your program is a subroutine library, you may
|
337 |
-
consider it more useful to permit linking proprietary applications with the
|
338 |
-
library. If this is what you want to do, use the GNU Lesser General
|
339 |
-
Public License instead of this License.
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
readme.html
DELETED
@@ -1,118 +0,0 @@
|
|
1 |
-
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
|
2 |
-
<html xmlns="http://www.w3.org/1999/xhtml">
|
3 |
-
<head>
|
4 |
-
<meta http-equiv="Content-Type" content="text/html;charset=utf-8"/>
|
5 |
-
<title>A guide to the Custom Login lite plugin</title>
|
6 |
-
|
7 |
-
<style type="text/css" media="screen">
|
8 |
-
/* Reset values */
|
9 |
-
html,body,div,span,object,h1,h2,h3,h4,h5,h6,p,blockquote,pre,a,abbr,acronym,address,big,cite,code,del,dfn,em,img,ins,kbd,q,samp,small,strong,sub,sup,tt,var,dl,dt,dd,ol,ul,li,fieldset,form,label,legend,table,caption,tbody,tfoot,thead,tr,th,td{margin:0;padding:0;vertical-align:baseline;outline:none;font-size:100%;background:transparent;border:none;text-decoration:none}b,i,hr,u,center,menu,layer,s,strike,font,xmp{margin:0;padding:0;vertical-align:baseline;outline:none;font-size:100%;font-weight:normal;font-style:normal;background:transparent;border:none;text-decoration:none}font{color:#333}center{text-align:left}body{line-height:25px;font-family:Cambria,Georgia,Times,"Times New Roman",serif;color:#333;background:#fff}h1,h2,h3,h4,h5,h6{font-style:normal;font-weight:normal;margin:0 0 25px 0}h1{font-size:1.8em}h2{font-size:1.7em}h3{font-size:1.55em;}h4{font-size:1.4em}h5{font-size:1.25em}h6{font-size:1.1em}p{margin:0 0 25px 0}ol,ul{list-style:none}ul{list-style:disc;margin:0 0 25px 2.5em}ol{list-style-type:decimal;margin:0 0 25px 3em}ol ol{list-style:upper-roman}ol ol ol{list-style:lower-roman}ol ol ol ol{list-style:upper-alpha}ol ol ol ol ol{list-style:lower-alpha}ul ul,ol ol,ul ol,ol ul{margin-bottom:0}dl{margin:0 0 25px 5px}dl dt{font-weight:bold;margin:10px 0 0 0}dl dd{margin:5px 0 0 1.5em}strong{font-weight:bold}strong strong{font-weight:normal}em,cite{font-style:italic}em em,cite cite{font-style:normal}abbr{cursor:help}acronym{text-transform:uppercase;border-bottom:1px dashed #666;cursor:help}big{font-size:120%}small,sup,sub{font-size:80%}sup{vertical-align:baseline;position:relative;bottom:0.3em}sub{vertical-align:baseline;position:relative;top:0.3em}address{font-style:italic;margin:0 0 25px 0}li address,dd address{margin:0}blockquote{margin:0 25px;font-style:normal}blockquote em,blockquote cite{font-style:italic}blockquote,q{quotes:none}blockquote:before,blockquote:after,q:before,q:after{content:'';content:none}a{cursor:pointer}a img{border:none}pre{overflow:auto;font:.9em Monaco,monospace,Courier,"Courier New";line-height:25px;margin-bottom:25px;padding:10px}code{font:.9em Monaco,monospace,Courier,"Courier New"}pre code{font-size:1em}ins,dfn{font-style:italic;text-decoration:none;border-bottom:1px solid #666}del{text-decoration:line-through}object{margin-bottom:25px}input,textarea{font-size:1em;font-family:Cambria,Georgia,Times,"Times New Roman",serif;padding:3px}:focus{outline:none}form label{cursor:pointer}option{padding:1px 2px}table{border-collapse:collapse;border-spacing:0;margin-bottom:25px}th,td{text-align:left}hr{margin-bottom:25px}img.wp-smiley{max-height:12px;margin:0;padding:0;border:none}.gallery{display:block;text-align:center;margin-bottom:25px !important}.alignleft,.left{float:left;margin-right:20px}.alignright,.right{float:right;margin-left:20px}.aligncenter,.center{display:block;margin:0 auto 25px auto}.alignnone,.block{clear:both;margin:0 0 25px 0}.clear{clear:both}img.alignleft,img.alignright{display:inline}
|
10 |
-
|
11 |
-
body {
|
12 |
-
width: 750px;
|
13 |
-
margin: 36px auto 60px auto;
|
14 |
-
font: 15px/21px Arial, 'Helvetica Neue', Helvetica, sans-serif;
|
15 |
-
font: 16px/25px Georgia, Times, 'Times New Roman', serif;
|
16 |
-
}
|
17 |
-
/* Links */
|
18 |
-
a:link, a:visited {
|
19 |
-
color: #2f6eb9;
|
20 |
-
text-decoration: none;
|
21 |
-
}
|
22 |
-
a:hover, a:active {
|
23 |
-
text-decoration: underline;
|
24 |
-
}
|
25 |
-
/* Headers */
|
26 |
-
h1, h2, h3, h4, h5, h6 {
|
27 |
-
margin: 40px 0 30px 0;
|
28 |
-
color: #000;
|
29 |
-
font-weight: bold;
|
30 |
-
font-family: Arial, sans-serif;
|
31 |
-
}
|
32 |
-
h1 {
|
33 |
-
margin-top: 80px;
|
34 |
-
font-size: 2.2em;
|
35 |
-
}
|
36 |
-
code {
|
37 |
-
padding: 0 3px;
|
38 |
-
background: #eee;
|
39 |
-
}
|
40 |
-
pre code {
|
41 |
-
padding: 0;
|
42 |
-
}
|
43 |
-
pre {
|
44 |
-
padding: 9px;
|
45 |
-
background: #eee;
|
46 |
-
border: 1px solid #ccc;
|
47 |
-
}
|
48 |
-
ul {
|
49 |
-
list-style: square;
|
50 |
-
}
|
51 |
-
p.first {
|
52 |
-
font-size: 21px;
|
53 |
-
}
|
54 |
-
p.second {
|
55 |
-
font-size: 15px;
|
56 |
-
}
|
57 |
-
ul.space li {
|
58 |
-
margin-bottom: 10px;
|
59 |
-
}
|
60 |
-
.section {
|
61 |
-
overflow: hidden;
|
62 |
-
}
|
63 |
-
|
64 |
-
.columns-2 {
|
65 |
-
float: left;
|
66 |
-
width: 350px;
|
67 |
-
margin: 0 0 21px 25px;
|
68 |
-
}
|
69 |
-
.columns-3 {
|
70 |
-
float: left;
|
71 |
-
width: 230px;
|
72 |
-
margin: 0 0 21px 20px;
|
73 |
-
}
|
74 |
-
</style>
|
75 |
-
|
76 |
-
</head>
|
77 |
-
<body>
|
78 |
-
|
79 |
-
<h1>A guide to Custom Login lite</h1>
|
80 |
-
|
81 |
-
<p><em>Custom Login</em> was written to take care of the defualt WordPress login page.</p>
|
82 |
-
|
83 |
-
<p>It's been overhauled in version 0.8. Now featuring cleaner code, Draggable and movable meta boxes, a color picker and an uploader built in.</p>
|
84 |
-
|
85 |
-
<h2>How to install the plugin</h2>
|
86 |
-
|
87 |
-
<ol>
|
88 |
-
<li>Uzip the <code>custom-login.zip</code> folder.</li>
|
89 |
-
<li>Upload the<code>custom-login</code> folder to your <code>/wp-content/plugins</code> directory.</li>
|
90 |
-
<li>In your WordPress dashboard, head over to the <em>Plugins</em> section.</li>
|
91 |
-
<li>Activate <em>Custom Login</em>.</li>
|
92 |
-
</ol>
|
93 |
-
|
94 |
-
<h2>How to use the plugin</h2>
|
95 |
-
|
96 |
-
<p>Once you've activated the plugin, you'll have to activate the plugin in the setting page to allow for customizations of the CSS and HTML. By default, when activated via the plugins page it will use the default style sheet, which you may or may not like.</p>
|
97 |
-
<h2>Settings</h2>
|
98 |
-
|
99 |
-
<p>Once on the setting page, you can simply click each option. Color options show the awesome javascript color picker and for URL's, there is a new uploader. Make sure to click send to post to send you current upload to the input field.</p>
|
100 |
-
<p>More to come soon..</p>
|
101 |
-
<h2>Plugin support</h2>
|
102 |
-
|
103 |
-
<p>As of right now, there is no support. But I freaquent the WordPress <a href="http://wordpress.org/support/plugin/custom-login">forums</a>. So please post any questions there.</p>
|
104 |
-
|
105 |
-
<h2>Upgrades</h2>
|
106 |
-
|
107 |
-
<p>I've got a Pro version of Custom Login which you can purchase over at <a href="http://extendd.com/plugin/custom-login-pro/">extendd.com</a>.</p>
|
108 |
-
|
109 |
-
<h2>Copyright & license</h2>
|
110 |
-
|
111 |
-
<p><em>Custom Login</em> is licensed under the <a href="http://www.gnu.org/licenses/old-licenses/gpl-2.0.html" title="GNU GPL">GNU General Public License</a>, version 2 (<acronym title="GNU General Public License">GPL</acronym>).</p>
|
112 |
-
|
113 |
-
<p>This plugin is copyrighted to <a href="http://austinpassy.com" title="Austin Passy">Austin Passy</a> of <a href="http://frostywebdesigns.com" title="Austin Passy">Frosty Web Designs</a>.</p>
|
114 |
-
|
115 |
-
<p>2008 – 2013 © Austin Passy. All rights reserved.</p>
|
116 |
-
|
117 |
-
</body>
|
118 |
-
</html>
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
readme.md
ADDED
@@ -0,0 +1,119 @@
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
1 |
+
# Custom Login #
|
2 |
+
**Contributors:** austyfrosty
|
3 |
+
**Donate link:** https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=7431290
|
4 |
+
**Tags:** admin, branding, customization, custom login, login, logo, error, login error, custom login pro
|
5 |
+
**Requires at least:** 3.5
|
6 |
+
**Tested up to:** 4.0
|
7 |
+
**Stable tag:** trunk
|
8 |
+
**License:** GPLv2 or later
|
9 |
+
**License URI:** http://www.gnu.org/licenses/gpl-2.0.html
|
10 |
+
|
11 |
+
**Use this plugin to customize your login screen, great for client sites!**
|
12 |
+
|
13 |
+
## Description ##
|
14 |
+
|
15 |
+
**Version 2.0** is now 140% faster in the admin and uses a lot less resources! Minimum WordPress version 3.5.
|
16 |
+
|
17 |
+
Join in on the [conversation](http://austin.passy.co/wordpress-plugins/custom-login) on my personal blog.
|
18 |
+
|
19 |
+
You can find Custom Login [PRO](https://extendd.com/plugin/custom-login-pro/) on [Extendd.com](https://extendd.com): A plugin marketplace. New features include faster login loading (no database access), Custom Post Types (for multiple designs) and four default CSS designs. **Custom Login Pro is a completly different plugin than Custom Login**.
|
20 |
+
|
21 |
+
http://www.youtube.com/watch?v=XOZwaLwpjNo
|
22 |
+
|
23 |
+
### Extensions ###
|
24 |
+
|
25 |
+
Custom Login 2.0 now has many extensions to make your login page better!
|
26 |
+
|
27 |
+
**Available Now**
|
28 |
+
|
29 |
+
* *In Custom Login > version 2.2 you can auto-install all extensions within the settings page with an active licence key.*
|
30 |
+
* <a href="https://extendd.com/plugin/custom-login-stealth-login?utm_source=wordpressorg&utm_medium=custom-login&utm_campaign=freemium" title="Custom Login Stealth Login">Stealth Login</a> - obscure your login URL.
|
31 |
+
* <a href="https://extendd.com/plugin/custom-login-page-template?utm_source=wordpressorg&utm_medium=custom-login&utm_campaign=freemium" title="Custom Login Page Template">Page Template</a> - add a login form to any WordPress page.
|
32 |
+
* **NEW** <a href="https://extendd.com/plugin/wordpress-login-redirects?utm_source=wordpressorg&utm_medium=custom-login&utm_campaign=freemium" title="Custom Login Redirects">Login Redirects</a> - Manage login redirects.
|
33 |
+
|
34 |
+
**In Development**
|
35 |
+
|
36 |
+
* User Hash Key logins (think generated guest logins with-out having to use the login form).
|
37 |
+
* Email Logins for usernames.
|
38 |
+
* 2-step Authentication.
|
39 |
+
* "Super User" only access for client sites.
|
40 |
+
* WordPress Login CSS style remover (for sites that see a quick flash of the default login page).
|
41 |
+
* Submit button styles!
|
42 |
+
* Custom Login templates.
|
43 |
+
|
44 |
+
### More info ###
|
45 |
+
|
46 |
+
Activate the plugin and customize your WordPress login screen. Use the built-in and easy to use settings page to do the work for you. There's no need to understand CSS at all!
|
47 |
+
Now featureing a HTML, CSS & jQuery box for advanced users to up the customization!
|
48 |
+
|
49 |
+
1. Works great for client site installs.
|
50 |
+
2. Read more about [Custom Login](http://wp.me/pzgsJ-HY) 2.0
|
51 |
+
|
52 |
+
**For those looking to showoff your login screen, check out the [Flickr group](http://flickr.com/groups/custom-login/)! Share you designs with the community!**
|
53 |
+
|
54 |
+
### links ###
|
55 |
+
|
56 |
+
* Plugin Marketplace: [Extendd.com](https://extendd.com/ "WordPress plugin markeetplace")
|
57 |
+
* My Blog: [http:/austin.passy.co/](http://austin.passy.co/ "Austin Passy's blog")
|
58 |
+
* Follow me on Twitter: @[TheFrosty](https:/twitter.com/TheFrosty "Austin TheFrosty' Passy on Twitter")
|
59 |
+
* Follow Extendd Twitter: @[Extendd](https:/twitter.com/WPExtendd "Extendd on Twitter")
|
60 |
+
* **Contribute on [GitHub](https://github.com/thefrosty/custom-login)**
|
61 |
+
|
62 |
+
### Hooks and Filters ###
|
63 |
+
|
64 |
+
You can build your own extensions.
|
65 |
+
|
66 |
+
## Installation ##
|
67 |
+
|
68 |
+
Follow the steps below to install the plugin.
|
69 |
+
|
70 |
+
1. Upload the `custom-login` directory to the /wp-content/plugins/ directory.
|
71 |
+
2. Activate the plugin through the 'Plugins' menu in WordPress.
|
72 |
+
3. Go to Settings/custom-login to edit your settings.
|
73 |
+
4. Design away.
|
74 |
+
|
75 |
+
## Frequently Asked Questions ##
|
76 |
+
|
77 |
+
### What are extensions? ###
|
78 |
+
They are additional plugins that add functionality to the Custom Login plugin. Depending of what the extension does. You can find all Custom Login extensions on [extendd.com](https://extendd.com).
|
79 |
+
|
80 |
+
### My new settings aren't showing up ###
|
81 |
+
This plugin caches all settings in a transient, try clicking the new 'Update stylesheet' button to delete and refresh the cache.
|
82 |
+
|
83 |
+
### Is there a PRO version? ###
|
84 |
+
Why yes there is, you can purchase the [PRO](https://extendd.com/plugin/custom-login-pro/) version on [https://extendd.com](https://extendd.com). Note that since Custom Login 2.0, Custom Login PRO is a completely different plugin.
|
85 |
+
|
86 |
+
### Why create this plugin? ###
|
87 |
+
I created this plugin to allow for custom login of any WordPress login screen. See working example on: [Extendd.com](https://extendd.com/wp-login.php?action=login).
|
88 |
+
|
89 |
+
### Where can I upload and share my cool login screen? ###
|
90 |
+
Check out the newly created [Flickr group](http://flickr.com/groups/custom-login/)! Upload and add it to our pool!
|
91 |
+
|
92 |
+
### I think i want to uninstall ###
|
93 |
+
Just de-active.
|
94 |
+
|
95 |
+
## Screenshots ##
|
96 |
+
|
97 |
+
Screenshots of working example in our [Flickr group](http://flickr.com/groups/custom-login/)
|
98 |
+
|
99 |
+
### 1. Custom Login Settings page (as of v 2.0). ###
|
100 |
+
![Custom Login Settings page (as of v 2.0).
|
101 |
+
](https://s.w.org/plugins/custom-login/screenshot-1.png)
|
102 |
+
|
103 |
+
|
104 |
+
### 2. Example of a custom login page using the nyan.cat as a animated background! [see user generated designs](http://flickr.com/groups/custom-login/). ###
|
105 |
+
![Example of a custom login page using the nyan.cat as a animated background! [see user generated designs](http://flickr.com/groups/custom-login/).
|
106 |
+
](https://s.w.org/plugins/custom-login/screenshot-2.png)
|
107 |
+
|
108 |
+
|
109 |
+
## Changelog ##
|
110 |
+
|
111 |
+
### Version 2.3.8 (10/17/14) ###
|
112 |
+
|
113 |
+
* Updated admin.js bug.
|
114 |
+
* Update settings page.
|
115 |
+
* Working on extensions auto install fix...
|
116 |
+
|
117 |
+
### Version 2.3.7 (7/7/14) ###
|
118 |
+
|
119 |
+
* Fixes CSS issue on lost password page. Issue [<a href="https://github.com/thefrosty/custom-login/issues/1#issue-37305001">#1</a>].
|
readme.txt
CHANGED
@@ -1,440 +1,290 @@
|
|
1 |
-
=== Custom Login ===
|
2 |
-
Contributors: austyfrosty
|
3 |
-
Donate link: https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=7431290
|
4 |
-
Tags: admin, branding, customization, custom login, login, logo, error, login error, custom login pro
|
5 |
-
Requires at least: 3.
|
6 |
-
Tested up to:
|
7 |
-
Stable tag: trunk
|
8 |
-
|
9 |
-
|
10 |
-
|
11 |
-
|
12 |
-
|
13 |
-
|
14 |
-
|
15 |
-
|
16 |
-
|
17 |
-
|
18 |
-
|
19 |
-
|
20 |
-
|
21 |
-
|
22 |
-
|
23 |
-
|
24 |
-
|
25 |
-
|
26 |
-
|
27 |
-
|
28 |
-
|
29 |
-
*
|
30 |
-
*
|
31 |
-
|
32 |
-
|
33 |
-
|
34 |
-
|
35 |
-
|
36 |
-
|
37 |
-
|
38 |
-
|
39 |
-
|
40 |
-
|
41 |
-
|
42 |
-
|
43 |
-
|
44 |
-
|
45 |
-
|
46 |
-
|
47 |
-
|
48 |
-
|
49 |
-
|
50 |
-
|
51 |
-
|
52 |
-
|
53 |
-
|
54 |
-
=
|
55 |
-
|
56 |
-
|
57 |
-
|
58 |
-
|
59 |
-
|
60 |
-
|
61 |
-
|
62 |
-
|
63 |
-
|
64 |
-
|
65 |
-
|
66 |
-
|
67 |
-
|
68 |
-
|
69 |
-
|
70 |
-
|
71 |
-
|
72 |
-
|
73 |
-
|
74 |
-
|
75 |
-
|
76 |
-
|
77 |
-
|
78 |
-
|
79 |
-
|
80 |
-
|
81 |
-
|
82 |
-
|
83 |
-
|
84 |
-
|
85 |
-
|
86 |
-
|
87 |
-
|
88 |
-
|
89 |
-
|
90 |
-
|
91 |
-
|
92 |
-
|
93 |
-
|
94 |
-
|
95 |
-
|
96 |
-
|
97 |
-
|
98 |
-
|
99 |
-
|
100 |
-
|
101 |
-
|
102 |
-
|
103 |
-
|
104 |
-
|
105 |
-
|
106 |
-
|
107 |
-
|
108 |
-
|
109 |
-
|
110 |
-
|
111 |
-
*
|
112 |
-
|
113 |
-
|
114 |
-
= Version
|
115 |
-
|
116 |
-
*
|
117 |
-
|
118 |
-
|
119 |
-
|
120 |
-
|
121 |
-
|
122 |
-
|
123 |
-
|
124 |
-
|
125 |
-
|
126 |
-
*
|
127 |
-
*
|
128 |
-
|
129 |
-
|
130 |
-
|
131 |
-
|
132 |
-
*
|
133 |
-
|
134 |
-
= Version
|
135 |
-
|
136 |
-
*
|
137 |
-
|
138 |
-
|
139 |
-
|
140 |
-
*
|
141 |
-
|
142 |
-
|
143 |
-
|
144 |
-
|
145 |
-
|
146 |
-
|
147 |
-
|
148 |
-
|
149 |
-
*
|
150 |
-
|
151 |
-
= Version
|
152 |
-
|
153 |
-
*
|
154 |
-
*
|
155 |
-
|
156 |
-
|
157 |
-
|
158 |
-
|
159 |
-
|
160 |
-
|
161 |
-
|
162 |
-
|
163 |
-
*
|
164 |
-
|
165 |
-
= Version
|
166 |
-
|
167 |
-
*
|
168 |
-
* Updated
|
169 |
-
|
170 |
-
|
171 |
-
|
172 |
-
|
173 |
-
|
174 |
-
|
175 |
-
|
176 |
-
|
177 |
-
*
|
178 |
-
*
|
179 |
-
|
180 |
-
= Version
|
181 |
-
|
182 |
-
*
|
183 |
-
|
184 |
-
|
185 |
-
|
186 |
-
|
187 |
-
|
188 |
-
|
189 |
-
|
190 |
-
|
191 |
-
|
192 |
-
|
193 |
-
|
194 |
-
*
|
195 |
-
|
196 |
-
= Version
|
197 |
-
|
198 |
-
*
|
199 |
-
|
200 |
-
= Version
|
201 |
-
|
202 |
-
*
|
203 |
-
|
204 |
-
= Version
|
205 |
-
|
206 |
-
*
|
207 |
-
|
208 |
-
|
209 |
-
|
210 |
-
|
211 |
-
|
212 |
-
|
213 |
-
|
214 |
-
*
|
215 |
-
|
216 |
-
|
217 |
-
|
218 |
-
|
219 |
-
*
|
220 |
-
|
221 |
-
|
222 |
-
|
223 |
-
*
|
224 |
-
|
225 |
-
= Version
|
226 |
-
|
227 |
-
*
|
228 |
-
|
229 |
-
|
230 |
-
|
231 |
-
*
|
232 |
-
|
233 |
-
|
234 |
-
|
235 |
-
|
236 |
-
*
|
237 |
-
|
238 |
-
|
239 |
-
|
240 |
-
|
241 |
-
|
242 |
-
|
243 |
-
* Added
|
244 |
-
|
245 |
-
= Version 0.
|
246 |
-
|
247 |
-
*
|
248 |
-
|
249 |
-
= Version 0.
|
250 |
-
|
251 |
-
*
|
252 |
-
|
253 |
-
|
254 |
-
|
255 |
-
*
|
256 |
-
*
|
257 |
-
|
258 |
-
|
259 |
-
|
260 |
-
*
|
261 |
-
*
|
262 |
-
*
|
263 |
-
|
264 |
-
|
265 |
-
|
266 |
-
|
267 |
-
|
268 |
-
|
269 |
-
|
270 |
-
*
|
271 |
-
|
272 |
-
|
273 |
-
|
274 |
-
|
275 |
-
*
|
276 |
-
*
|
277 |
-
*
|
278 |
-
|
279 |
-
|
280 |
-
|
281 |
-
|
282 |
-
|
283 |
-
|
284 |
-
|
285 |
-
|
286 |
-
|
287 |
-
|
288 |
-
|
289 |
-
|
290 |
-
|
291 |
-
|
292 |
-
* Added dashboard widget.
|
293 |
-
* Moved preview link higher.
|
294 |
-
* Bug fix.
|
295 |
-
|
296 |
-
= Version 0.5.1 =
|
297 |
-
|
298 |
-
* Changes a function name.
|
299 |
-
* Max character fix in `border-top-color`.
|
300 |
-
|
301 |
-
= Version 0.5 =
|
302 |
-
|
303 |
-
* **NEW** Javascript color picker [jscolor](http://jscolor.com)
|
304 |
-
* **NEW** New field allows for colorization of the *body* `border-top` color
|
305 |
-
* More options added
|
306 |
-
* Cleaned up code
|
307 |
-
* Testing new inline ad feature from [wpAds](http://bit.ly/wpadsnet) *Please leave [feedback/comments](http://austinpassy.com/2010/02/custom-login-version-0-5/) on this feature*
|
308 |
-
|
309 |
-
= Version 0.4.8 =
|
310 |
-
|
311 |
-
* Thickbox preview link :) *Let me know if you like the placement of it [in these comments](http://austinpassy.com/2010/02/custom-login-version-0-4-8/)*
|
312 |
-
|
313 |
-
= Version 0.4.7 =
|
314 |
-
|
315 |
-
* Added ability to use RGB/A colors to all color selectors. Max characters is now `21` instead of `7`
|
316 |
-
* Cleaned up options page.
|
317 |
-
* Added expanding textarea's for better coding space.
|
318 |
-
* Allow for expanding help section per item basses.
|
319 |
-
* Added an uninstaller (remove options from the database) *use the uninstall.php script*
|
320 |
-
* **NEW** default style.
|
321 |
-
|
322 |
-
= Version 0.4.6.1 =
|
323 |
-
|
324 |
-
* CSS Bug.
|
325 |
-
|
326 |
-
= Version 0.4.6 =
|
327 |
-
|
328 |
-
* Added custom html coded box. Will only be in use if the box is checked.
|
329 |
-
* New html box used jQuery to write to the page.
|
330 |
-
|
331 |
-
= Version 0.4.5 =
|
332 |
-
|
333 |
-
* Removed: #dock scroller (position fixed)
|
334 |
-
* Added collapsing/expanding boxes on left to allow for visibility of color wheel.
|
335 |
-
|
336 |
-
= Version 0.4.4.1 =
|
337 |
-
|
338 |
-
* Error: Missed a period, caused fatal error.
|
339 |
-
* Noticed issue with color picker error, try to reload page while I troubleshoot.
|
340 |
-
* Fixed missing `div` tag on settings page.
|
341 |
-
* Added two screenshots, one of settings page, one example.
|
342 |
-
|
343 |
-
= Version 0.4.4 =
|
344 |
-
|
345 |
-
* Added custom field box to add in your own CSS
|
346 |
-
* Added in new toggle (hide the color box when you click on the `h3` title so as not to interfere when it auto scrolls)
|
347 |
-
|
348 |
-
= Version 0.4.3 =
|
349 |
-
|
350 |
-
* Bug: When first installed, color fields need the `#` before the HEX numbers shows.
|
351 |
-
|
352 |
-
= Version 0.4.2 =
|
353 |
-
|
354 |
-
* Added an additional save button under the scrolling window dock when the window height is causing the window to jump.
|
355 |
-
|
356 |
-
= Version 0.4.1.1 =
|
357 |
-
|
358 |
-
* Bug fix: `Dock` is in the wrong div
|
359 |
-
|
360 |
-
= Version 0.4.1 =
|
361 |
-
|
362 |
-
* Added a `position:fixed` style to the color picker if the window scrolls below the view of the *Color picker*
|
363 |
-
|
364 |
-
= Version 0.4 =
|
365 |
-
|
366 |
-
* Added jQuery javascript color picker
|
367 |
-
* Remeber to use the new color selections with **#** before the six `hex` keys!
|
368 |
-
|
369 |
-
= Version 0.3.3 =
|
370 |
-
|
371 |
-
* Added ability to have transparent background image for `html`
|
372 |
-
* Added `html > background-repeat`
|
373 |
-
|
374 |
-
= Version 0.3.2.1 =
|
375 |
-
|
376 |
-
* Style: "Addded css style to `Delete/Reset` button"
|
377 |
-
|
378 |
-
= Version 0.3.2 =
|
379 |
-
|
380 |
-
* Bug: "if login form background color was empty, image wouldn't show"
|
381 |
-
|
382 |
-
= Version 0.3.1 =
|
383 |
-
|
384 |
-
* Bug: "login form backgound url" overwrote "login form backgound color"
|
385 |
-
* Auto install into double directory
|
386 |
-
|
387 |
-
= Version 0.3 =
|
388 |
-
|
389 |
-
* Admin panel added
|
390 |
-
* Additional CSS / user options
|
391 |
-
* Custom login
|
392 |
-
* WordPress 2.9 ready
|
393 |
-
|
394 |
-
= Version 0.2 =
|
395 |
-
|
396 |
-
* 2.7 CSS update.
|
397 |
-
* readme.txt link updated.
|
398 |
-
|
399 |
-
= Version 0.1 =
|
400 |
-
|
401 |
-
* Initial release.
|
402 |
-
|
403 |
-
|
404 |
-
== Upgrade Notice ==
|
405 |
-
|
406 |
-
= 1.1.4 =
|
407 |
-
Fixed Fatal error!
|
408 |
-
|
409 |
-
= 1.1.2 =
|
410 |
-
Added background-size to form, please visit and update settings page.
|
411 |
-
|
412 |
-
= 1.1.0 =
|
413 |
-
Fixes a lot of issues reported on the WP forums. Fixes issues with PHP 5.4 object error.
|
414 |
-
|
415 |
-
= 1.0.1 =
|
416 |
-
Fixed save settings and moved upgrade script to new page.
|
417 |
-
|
418 |
-
= 1.0 =
|
419 |
-
Added download script for Custom Login Pro users.
|
420 |
-
|
421 |
-
= 0.9.6 =
|
422 |
-
WordPress 3.3 style registration compatible. Some changes may effect your design, please update accordingly.
|
423 |
-
|
424 |
-
= 0.9.3 =
|
425 |
-
WordPress 3.3 style registration compatible.
|
426 |
-
|
427 |
-
= 0.8.10 =
|
428 |
-
Important! Unescaping characters in the dashboard widget/
|
429 |
-
|
430 |
-
= 0.8.8 =
|
431 |
-
Miscellaneous errors fixed, bugs squashed.
|
432 |
-
|
433 |
-
= 0.8 =
|
434 |
-
Complete rewrite, you will have to re-save your settings!
|
435 |
-
|
436 |
-
= 0.7.2 =
|
437 |
-
Uninstall script no longer valid for WordPress 3.0+
|
438 |
-
|
439 |
-
= 0.7.1 =
|
440 |
-
Compatiblity issue with my other plugin [@Anywhere](http://austinpassy.com/anywhere-plugin) fixed.
|
1 |
+
=== Custom Login ===
|
2 |
+
Contributors: austyfrosty
|
3 |
+
Donate link: https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=7431290
|
4 |
+
Tags: admin, branding, customization, custom login, login, logo, error, login error, custom login pro
|
5 |
+
Requires at least: 3.5
|
6 |
+
Tested up to: 4.0
|
7 |
+
Stable tag: trunk
|
8 |
+
License: GPLv2 or later
|
9 |
+
License URI: http://www.gnu.org/licenses/gpl-2.0.html
|
10 |
+
|
11 |
+
Use this plugin to customize your login screen, great for client sites!
|
12 |
+
|
13 |
+
== Description ==
|
14 |
+
|
15 |
+
**Version 2.0** is now 140% faster in the admin and uses a lot less resources! Minimum WordPress version 3.5.
|
16 |
+
|
17 |
+
Join in on the [conversation](http://austin.passy.co/wordpress-plugins/custom-login) on my personal blog.
|
18 |
+
|
19 |
+
You can find Custom Login [PRO](https://extendd.com/plugin/custom-login-pro/) on [Extendd.com](https://extendd.com): A plugin marketplace. New features include faster login loading (no database access), Custom Post Types (for multiple designs) and four default CSS designs. **Custom Login Pro is a completly different plugin than Custom Login**.
|
20 |
+
|
21 |
+
http://www.youtube.com/watch?v=XOZwaLwpjNo
|
22 |
+
|
23 |
+
= Extensions =
|
24 |
+
|
25 |
+
Custom Login 2.0 now has many extensions to make your login page better!
|
26 |
+
|
27 |
+
**Available Now**
|
28 |
+
|
29 |
+
* *In Custom Login > version 2.2 you can auto-install all extensions within the settings page with an active licence key.*
|
30 |
+
* <a href="https://extendd.com/plugin/custom-login-stealth-login?utm_source=wordpressorg&utm_medium=custom-login&utm_campaign=freemium" title="Custom Login Stealth Login">Stealth Login</a> - obscure your login URL.
|
31 |
+
* <a href="https://extendd.com/plugin/custom-login-page-template?utm_source=wordpressorg&utm_medium=custom-login&utm_campaign=freemium" title="Custom Login Page Template">Page Template</a> - add a login form to any WordPress page.
|
32 |
+
* **NEW** <a href="https://extendd.com/plugin/wordpress-login-redirects?utm_source=wordpressorg&utm_medium=custom-login&utm_campaign=freemium" title="Custom Login Redirects">Login Redirects</a> - Manage login redirects.
|
33 |
+
|
34 |
+
**In Development**
|
35 |
+
|
36 |
+
* User Hash Key logins (think generated guest logins with-out having to use the login form).
|
37 |
+
* Email Logins for usernames.
|
38 |
+
* 2-step Authentication.
|
39 |
+
* "Super User" only access for client sites.
|
40 |
+
* WordPress Login CSS style remover (for sites that see a quick flash of the default login page).
|
41 |
+
* Submit button styles!
|
42 |
+
* Custom Login templates.
|
43 |
+
|
44 |
+
= More info =
|
45 |
+
|
46 |
+
Activate the plugin and customize your WordPress login screen. Use the built-in and easy to use settings page to do the work for you. There's no need to understand CSS at all!
|
47 |
+
Now featureing a HTML, CSS & jQuery box for advanced users to up the customization!
|
48 |
+
|
49 |
+
1. Works great for client site installs.
|
50 |
+
2. Read more about [Custom Login](http://wp.me/pzgsJ-HY) 2.0
|
51 |
+
|
52 |
+
**For those looking to showoff your login screen, check out the [Flickr group](http://flickr.com/groups/custom-login/)! Share you designs with the community!**
|
53 |
+
|
54 |
+
= links =
|
55 |
+
|
56 |
+
* Plugin Marketplace: [Extendd.com](https://extendd.com/ "WordPress plugin markeetplace")
|
57 |
+
* My Blog: [http:/austin.passy.co/](http://austin.passy.co/ "Austin Passy's blog")
|
58 |
+
* Follow me on Twitter: @[TheFrosty](https:/twitter.com/TheFrosty "Austin TheFrosty' Passy on Twitter")
|
59 |
+
* Follow Extendd Twitter: @[Extendd](https:/twitter.com/WPExtendd "Extendd on Twitter")
|
60 |
+
* **Contribute on [GitHub](https://github.com/thefrosty/custom-login)**
|
61 |
+
|
62 |
+
= Hooks and Filters =
|
63 |
+
|
64 |
+
You can build your own extensions.
|
65 |
+
|
66 |
+
== Installation ==
|
67 |
+
|
68 |
+
Follow the steps below to install the plugin.
|
69 |
+
|
70 |
+
1. Upload the `custom-login` directory to the /wp-content/plugins/ directory.
|
71 |
+
2. Activate the plugin through the 'Plugins' menu in WordPress.
|
72 |
+
3. Go to Settings/custom-login to edit your settings.
|
73 |
+
4. Design away.
|
74 |
+
|
75 |
+
== Frequently Asked Questions ==
|
76 |
+
|
77 |
+
= What are extensions? =
|
78 |
+
They are additional plugins that add functionality to the Custom Login plugin. Depending of what the extension does. You can find all Custom Login extensions on [extendd.com](https://extendd.com).
|
79 |
+
|
80 |
+
= My new settings aren't showing up =
|
81 |
+
This plugin caches all settings in a transient, try clicking the new 'Update stylesheet' button to delete and refresh the cache.
|
82 |
+
|
83 |
+
= Is there a PRO version? =
|
84 |
+
Why yes there is, you can purchase the [PRO](https://extendd.com/plugin/custom-login-pro/) version on [https://extendd.com](https://extendd.com). Note that since Custom Login 2.0, Custom Login PRO is a completely different plugin.
|
85 |
+
|
86 |
+
= Why create this plugin? =
|
87 |
+
I created this plugin to allow for custom login of any WordPress login screen. See working example on: [Extendd.com](https://extendd.com/wp-login.php?action=login).
|
88 |
+
|
89 |
+
= Where can I upload and share my cool login screen? =
|
90 |
+
Check out the newly created [Flickr group](http://flickr.com/groups/custom-login/)! Upload and add it to our pool!
|
91 |
+
|
92 |
+
= I think i want to uninstall =
|
93 |
+
Just de-active.
|
94 |
+
|
95 |
+
== Screenshots ==
|
96 |
+
|
97 |
+
Screenshots of working example in our [Flickr group](http://flickr.com/groups/custom-login/)
|
98 |
+
|
99 |
+
1. Custom Login Settings page (as of v 2.0).
|
100 |
+
|
101 |
+
2. Example of a custom login page using the nyan.cat as a animated background! [see user generated designs](http://flickr.com/groups/custom-login/).
|
102 |
+
|
103 |
+
== Changelog ==
|
104 |
+
|
105 |
+
= Version 2.4.0 (11/03/14) =
|
106 |
+
|
107 |
+
* Updated Extendd_Plugin_Settings_API to 1.0.18 to allow [Custom Login Redirects](https://extendd.com/plugin/wordpress-login-redirects/) to redirect by each role see version > 1.1.
|
108 |
+
|
109 |
+
= Version 2.3.9 (10/27/14) =
|
110 |
+
|
111 |
+
* Fixed missing dash in ID for update API.
|
112 |
+
* Removed install button for Custom Login Extensions. Please manually login to [Your Account](http://extendd.com/my-account) to download.
|
113 |
+
|
114 |
+
= Version 2.3.8 (10/17/14) =
|
115 |
+
|
116 |
+
* Updated admin.js bug.
|
117 |
+
* Update settings page.
|
118 |
+
* Working on extensions auto install fix...
|
119 |
+
|
120 |
+
= Version 2.3.7 (7/7/14) =
|
121 |
+
|
122 |
+
* Fixes CSS issue on lost password page. Issue [<a href="https://github.com/thefrosty/custom-login/issues/1#issue-37305001">#1</a>].
|
123 |
+
|
124 |
+
= Version 2.3.6 (6/23/14) =
|
125 |
+
|
126 |
+
* Update Chosen.js to 1.1.0
|
127 |
+
* Update admin.css
|
128 |
+
* Fix opacity select options from being hidden when opacity is checked (on).
|
129 |
+
|
130 |
+
= Version 2.3.5 (6/18/14) =
|
131 |
+
|
132 |
+
* Update all extendd URLs to https.
|
133 |
+
|
134 |
+
= Version 2.3.4 (6/3/14) =
|
135 |
+
|
136 |
+
* Added `do_action( 'custom_login_admin_enqueue_scripts' )` for extenstions to hook into settings page `admin_enqueue_scripts`.
|
137 |
+
|
138 |
+
= Version 2.3.3 (5/14/14) =
|
139 |
+
|
140 |
+
* Attempt to fix `Fatal error: Call to a member function set_sections() on a non-object`.
|
141 |
+
|
142 |
+
= Version 2.3.2 (4/24/14) =
|
143 |
+
|
144 |
+
* Fixed Fatal Error. Sorry.
|
145 |
+
|
146 |
+
= Version 2.3.1 (4/24/14) =
|
147 |
+
|
148 |
+
* Added new extension to manage redirects.
|
149 |
+
* Upate the Welcome page.
|
150 |
+
|
151 |
+
= Version 2.3 (3/13/14) =
|
152 |
+
|
153 |
+
* Renamed helper functions to avoid function exists errors even though I've wrapped those functions in `function_exists`
|
154 |
+
* New: Class 'Custom_Login_Scripts_Styles'.
|
155 |
+
|
156 |
+
= Version 2.2.3 (1/28/14) =
|
157 |
+
|
158 |
+
* Added image previews after file fields.
|
159 |
+
|
160 |
+
= Version 2.2.2 (1/28/14) =
|
161 |
+
|
162 |
+
* Allowed variables to account for unicode in Custom CSS.
|
163 |
+
* - Use `%%BLASH%%` for a backslash.
|
164 |
+
|
165 |
+
= Version 2.2.1 (1/25/14) =
|
166 |
+
|
167 |
+
* $version variable not loading.
|
168 |
+
* Updated sanitization on Custom CSS & HTML textarea fields.
|
169 |
+
* CSS sanitized with `wp_filter_nohtml_kses`.
|
170 |
+
* HTML sanitized with `wp_kses_post`.
|
171 |
+
* Allow use of "Tab" key in the CSS textarea to format CSS.
|
172 |
+
|
173 |
+
= Version 2.2.0 (1/24/14) =
|
174 |
+
|
175 |
+
* Updated settings page and CSS (now responsive).
|
176 |
+
* Updated Genericons to v 3.0.3.
|
177 |
+
* Add Remote Install class to auto-install Custom Login Extensions from Extendd.com (license key needed for paid extensions).
|
178 |
+
* Update and cleanup code.
|
179 |
+
|
180 |
+
= Version 2.1.9 (1/8/14) =
|
181 |
+
|
182 |
+
* Fixed chosen() JS 1.0.0 class variables on opacity options.
|
183 |
+
* Be sure to only output one instace of the settings scripts.
|
184 |
+
* Added actual width and height options to logo to fix WP 3.8 CSS settings.
|
185 |
+
|
186 |
+
= Version 2.1.8 (12/17/13) =
|
187 |
+
|
188 |
+
* Logo CSS fix.
|
189 |
+
* Updated Chosen.js to `1.0.0`
|
190 |
+
|
191 |
+
= Version 2.1.7 (12/13/13) =
|
192 |
+
|
193 |
+
* WordPress 3.8.x compatability.
|
194 |
+
* Adds custom background-size capability to fix new `80px X 80px` background-size standard.
|
195 |
+
|
196 |
+
= Version 2.1.6 (11/21/13) =
|
197 |
+
|
198 |
+
* Updated for PHP 5.4 & WordPress 3.8.x compatibility.
|
199 |
+
|
200 |
+
= Version 2.1.5 (5/20/13) =
|
201 |
+
|
202 |
+
* Fix for some users who still can't dismess the notice.
|
203 |
+
|
204 |
+
= Version 2.1.4 (5/17/13) =
|
205 |
+
|
206 |
+
* Fixed notification not clearing on 'dismiss notice'. Sorry about that.
|
207 |
+
|
208 |
+
= Version 2.1.3 (5/13/13) =
|
209 |
+
|
210 |
+
* Fixed `notice` in class.settings-api.php.
|
211 |
+
|
212 |
+
= Version 2.1.2 (4/22/13) =
|
213 |
+
|
214 |
+
* Changed wrong $hook prefix for scripts.
|
215 |
+
|
216 |
+
= Version 2.1.1 (4/22/13) =
|
217 |
+
|
218 |
+
* Fix untranslatable items in the settings page.
|
219 |
+
* Added clear transient cache to Custom Login sidebar (as well as above save settings).
|
220 |
+
* Changed HTML position from input field to dropdown.
|
221 |
+
* Added notification on transient cache deletion.
|
222 |
+
* Removed "test" echo.
|
223 |
+
* Added delete transient on settings save.
|
224 |
+
|
225 |
+
= Version 2.1.0 (4/18/13) =
|
226 |
+
|
227 |
+
* Updated notice URL.
|
228 |
+
* For reals fixed the "remove notice" button. :D
|
229 |
+
* Moved the CSS back into the login head instead of external CSS (fixes WordPress CSS flash).
|
230 |
+
* Changed custom textarea to sanitize on save and output so line breaks are kept in tact.
|
231 |
+
* More data sanitization on settings.
|
232 |
+
|
233 |
+
= Version 2.0.6 (4/18/13) =
|
234 |
+
|
235 |
+
* Fix notice not going away on dismiss.
|
236 |
+
* Updated translation files.
|
237 |
+
|
238 |
+
= Version 2.0.5 (4/17/13) =
|
239 |
+
|
240 |
+
* Fix double escaped custom HTML on first import with `wp_specialchars_decode`.
|
241 |
+
* Add `SHORTINIT` to the PHP stylesheet and script to limit WordPress loading.
|
242 |
+
* Change wp_cache to transients on PHP scripts and styles, a lot faster!
|
243 |
+
* Added a delete transient cache button atop the 'Save Changes' button.
|
244 |
+
|
245 |
+
= Version 2.0.4 (4/17/13) =
|
246 |
+
|
247 |
+
* Updated JSON file to extenal GitHub.
|
248 |
+
|
249 |
+
= Version 2.0.3 (4/17/13) =
|
250 |
+
|
251 |
+
* Deactivate if minimum WordPress version isn't met.
|
252 |
+
* Min WordPress version **3.5**
|
253 |
+
* Version bump to match readme.txt.
|
254 |
+
* Turkish translations re-added.
|
255 |
+
* Added `rgba2hex` function to fix updates where rgba was set.
|
256 |
+
* Make sure function_exists 'wp_enqueue_media'.
|
257 |
+
|
258 |
+
= Version 2.0.2 (4/16/13) =
|
259 |
+
|
260 |
+
* Updated templates functions into a class.
|
261 |
+
* Moved some files.
|
262 |
+
* Fixed known activation hook not fireing on upgrade.
|
263 |
+
* Removed post_type and install script.
|
264 |
+
* Hide WP_LOCAL_DEV queries.
|
265 |
+
|
266 |
+
= Version 2.0.1 (4/16/13) =
|
267 |
+
|
268 |
+
* Wrap any function that can be replicated in if exists to avoid possible issues.
|
269 |
+
* Prefix any other function with `ap_` as to make sure nothing is replicated in other plugins.
|
270 |
+
* Fixed broken logo CSS.
|
271 |
+
* Add hide WordPress logo to settings.
|
272 |
+
|
273 |
+
= Version 2.0.0 (4/15/13) =
|
274 |
+
|
275 |
+
* Complete rewrite of plugin
|
276 |
+
* Uses all new Settings API (extendable for custom extensions)
|
277 |
+
* Loads 120% faster.
|
278 |
+
* Quick cache of CSS and JS on login page.
|
279 |
+
|
280 |
+
|
281 |
+
== Upgrade Notice ==
|
282 |
+
|
283 |
+
= 2.2.0 =
|
284 |
+
Now you can auto-install Custom Login extensions with an active license key!
|
285 |
+
|
286 |
+
= 2.1.9 =
|
287 |
+
Happy New Year! Finally fixed the logo issue with WordPress 3.8! If you find this plugin useful please consider donating, I've spend countless hours making it better for you.
|
288 |
+
|
289 |
+
= 2.0.6 =
|
290 |
+
Updated translation files and fixed dismiss notice from not getting removed.
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
screenshot-1.png
CHANGED
Binary file
|
screenshot-2.png
CHANGED
Binary file
|
templates/wp-login-script.php
ADDED
@@ -0,0 +1,53 @@
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
1 |
+
<?php
|
2 |
+
|
3 |
+
// Exit if accessed directly
|
4 |
+
if ( ! defined( 'ABSPATH' ) ) exit;
|
5 |
+
|
6 |
+
if ( !defined( 'SHORTINIT' ) ) define( 'SHORTINIT', true );
|
7 |
+
|
8 |
+
/* Setup the plugin */
|
9 |
+
$login = CUSTOMLOGIN();
|
10 |
+
|
11 |
+
if ( !$login->is_active() )
|
12 |
+
return;
|
13 |
+
|
14 |
+
global $cl_js_atts;
|
15 |
+
|
16 |
+
extract( $cl_js_atts, EXTR_SKIP );
|
17 |
+
|
18 |
+
/* Cache ALL THE THINGS! */
|
19 |
+
if ( false === ( $js = get_transient( $login->id . '_script' ) ) ) :
|
20 |
+
|
21 |
+
$js = '';
|
22 |
+
|
23 |
+
if ( defined( 'WP_LOCAL_DEV' ) && WP_LOCAL_DEV ) $js .= "/**\n *\n" . print_r( $cl_js_atts, true ) . " */\n\n";
|
24 |
+
|
25 |
+
$js .= "
|
26 |
+
/**
|
27 |
+
* Custom Login by Austin Passy
|
28 |
+
*
|
29 |
+
* Plugin URI : http://austin.passy.co/wordpress-plugins/custom-login
|
30 |
+
* Version : $version
|
31 |
+
* Author URI : http://austin.passy.co
|
32 |
+
* Pro Version : https://extendd.com/plugin/custom-login-pro
|
33 |
+
*/\n\n";
|
34 |
+
|
35 |
+
$js .= 'jQuery(document).ready(function($) {';
|
36 |
+
|
37 |
+
/* Custom user input */
|
38 |
+
if ( !empty( $custom_jquery ) ) {
|
39 |
+
|
40 |
+
$js .= "\n\t/* Custom JS */\n\t";
|
41 |
+
$js .= wp_specialchars_decode( stripslashes( $custom_jquery ), 1, 0, 1 );
|
42 |
+
$js .= "\n";
|
43 |
+
|
44 |
+
}
|
45 |
+
|
46 |
+
$js .= '});';
|
47 |
+
|
48 |
+
/* WP Magic */
|
49 |
+
set_transient( $login->id . '_script', $js, YEAR_IN_SECONDS ); // Cache for a year
|
50 |
+
endif;
|
51 |
+
|
52 |
+
/* Out of the frying pan, and into the fire! */
|
53 |
+
echo $js;
|
templates/wp-login-style.php
ADDED
@@ -0,0 +1,327 @@
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
1 |
+
<?php
|
2 |
+
|
3 |
+
// Exit if accessed directly
|
4 |
+
if ( !defined( 'ABSPATH' ) ) exit;
|
5 |
+
|
6 |
+
if ( !defined( 'SHORTINIT' ) ) define( 'SHORTINIT', true );
|
7 |
+
|
8 |
+
/* Setup the plugin */
|
9 |
+
$login = CUSTOMLOGIN();
|
10 |
+
$ss = CUSTOM_LOGIN_SCRIPT_STYLES();
|
11 |
+
|
12 |
+
if ( !$login->is_active() )
|
13 |
+
return;
|
14 |
+
|
15 |
+
global $cl_css_atts;
|
16 |
+
|
17 |
+
/* Extract */
|
18 |
+
extract( $cl_css_atts, EXTR_SKIP );
|
19 |
+
|
20 |
+
/* Cache ALL THE THINGS! */
|
21 |
+
if ( false === ( $css = get_transient( $login->id . '_style' ) ) ) :
|
22 |
+
|
23 |
+
$css = '';
|
24 |
+
$close_rule = "}\n";
|
25 |
+
|
26 |
+
if ( defined( 'WP_LOCAL_DEV' ) && WP_LOCAL_DEV ) {
|
27 |
+
|
28 |
+
$css .= "/**\n *\n" . print_r( $cl_css_atts, true ) . " */\n\n";
|
29 |
+
}
|
30 |
+
|
31 |
+
$css .= "
|
32 |
+
/**
|
33 |
+
* Custom Login by Austin Passy
|
34 |
+
*
|
35 |
+
* Plugin URI : http://austin.passy.co/wordpress-plugins/custom-login
|
36 |
+
* Version : $version
|
37 |
+
* Author URI : http://austin.passy.co
|
38 |
+
* Extensions : https://extendd.com/plugins/tag/custom-login-extension/
|
39 |
+
*/\n\n";
|
40 |
+
|
41 |
+
/* Custom user input */
|
42 |
+
if ( !empty( $custom_css ) ) {
|
43 |
+
$custom_css = wp_specialchars_decode( stripslashes( $custom_css ), 1, 0, 1 );
|
44 |
+
|
45 |
+
$css .= "/* START Custom CSS */\n";
|
46 |
+
$css .= str_replace(
|
47 |
+
array( '%%BSLASH%%' ),
|
48 |
+
array( '\\' ),
|
49 |
+
$custom_css
|
50 |
+
);
|
51 |
+
$css .= "\n/* END Custom CSS */\n";
|
52 |
+
$css .= "\n\n";
|
53 |
+
|
54 |
+
}
|
55 |
+
|
56 |
+
/**
|
57 |
+
* Open html
|
58 |
+
*
|
59 |
+
* @rule html
|
60 |
+
*/
|
61 |
+
$css .= $ss->cssrule( 'html' );
|
62 |
+
|
63 |
+
if ( !empty( $html_background_color ) && 'on' === $html_background_color_checkbox ) {
|
64 |
+
|
65 |
+
$color = $ss->hex2rgb( $html_background_color );
|
66 |
+
$css .= $ss->trailingsemicolonit( "background-color: rgba({$color['red']},{$color['green']},{$color['blue']},{$html_background_color_opacity})" );
|
67 |
+
|
68 |
+
} elseif( !empty( $html_background_color ) ) {
|
69 |
+
|
70 |
+
$css .= $ss->trailingsemicolonit( "background-color: {$html_background_color}" );
|
71 |
+
|
72 |
+
}
|
73 |
+
|
74 |
+
if ( !empty( $html_background_url ) ) {
|
75 |
+
|
76 |
+
$css .= $ss->trailingsemicolonit( "background-image: url('{$html_background_url}')" );
|
77 |
+
$css .= $ss->trailingsemicolonit( "background-position: {$html_background_position}" );
|
78 |
+
$css .= $ss->trailingsemicolonit( "background-repeat: {$html_background_repeat}" );
|
79 |
+
|
80 |
+
if ( !empty( $html_background_size ) && 'none' !== $html_background_size ) {
|
81 |
+
|
82 |
+
$html_background_size = ( 'flex' !== $html_background_size ) ? $html_background_size : '100% auto';
|
83 |
+
$css .= $ss->prefixit( 'background-size', $html_background_size );
|
84 |
+
|
85 |
+
}
|
86 |
+
}
|
87 |
+
|
88 |
+
/* CLOSE html */
|
89 |
+
$css .= $close_rule;
|
90 |
+
|
91 |
+
/**
|
92 |
+
* Open body.login
|
93 |
+
*
|
94 |
+
* @rule body.login
|
95 |
+
*/
|
96 |
+
if ( !empty( $html_background_color ) || !empty( $html_background_url ) ) {
|
97 |
+
|
98 |
+
$css .= $ss->cssrule( 'body.login' );
|
99 |
+
$css .= $ss->trailingsemicolonit( "background: transparent" );
|
100 |
+
|
101 |
+
/* CLOSE body */
|
102 |
+
$css .= $close_rule;
|
103 |
+
|
104 |
+
}
|
105 |
+
|
106 |
+
/**
|
107 |
+
* Open login form
|
108 |
+
*
|
109 |
+
* @rule #login form
|
110 |
+
*/
|
111 |
+
$css .= $ss->cssrule( '#login form' );
|
112 |
+
|
113 |
+
if ( !empty( $login_form_background_color ) && 'on' === $login_form_background_color_checkbox ) {
|
114 |
+
|
115 |
+
$color = $ss->hex2rgb( $login_form_background_color );
|
116 |
+
$css .= $ss->trailingsemicolonit( "background-color: rgba({$color['red']},{$color['green']},{$color['blue']},{$login_form_background_color_opacity})" );
|
117 |
+
|
118 |
+
} elseif( !empty( $login_form_background_color ) ) {
|
119 |
+
|
120 |
+
$css .= $ss->trailingsemicolonit( "background-color: {$login_form_background_color}" );
|
121 |
+
|
122 |
+
}
|
123 |
+
if ( !empty( $login_form_background_url ) ) {
|
124 |
+
|
125 |
+
$css .= $ss->trailingsemicolonit( "background-image: url('{$login_form_background_url}')" );
|
126 |
+
$css .= $ss->trailingsemicolonit( "background-position: {$login_form_background_position}" );
|
127 |
+
$css .= $ss->trailingsemicolonit( "background-repeat: {$login_form_background_repeat}" );
|
128 |
+
|
129 |
+
if ( !empty( $login_form_background_size ) && 'none' != $login_form_background_size ) {
|
130 |
+
|
131 |
+
$login_form_background_size = ( 'flex' != $login_form_background_size ) ? $login_form_background_size : '100% auto';
|
132 |
+
$css .= $ss->prefixit( 'background-size', $login_form_background_size );
|
133 |
+
|
134 |
+
}
|
135 |
+
|
136 |
+
}
|
137 |
+
|
138 |
+
if ( !empty( $login_form_border_size ) && !empty( $login_form_border_color ) ) {
|
139 |
+
|
140 |
+
$login_form_border_size = rtrim( $login_form_border_size, 'px' );
|
141 |
+
$css .= $ss->trailingsemicolonit( "border: {$login_form_border_size}px solid {$login_form_border_color}" );
|
142 |
+
|
143 |
+
}
|
144 |
+
|
145 |
+
if ( !empty( $login_form_border_radius ) ) {
|
146 |
+
|
147 |
+
$login_form_border_radius = rtrim( $login_form_border_radius, 'px' ) . 'px';
|
148 |
+
$css .= $ss->prefixit( 'border-radius', $login_form_border_radius );
|
149 |
+
|
150 |
+
}
|
151 |
+
|
152 |
+
if ( !empty( $login_form_box_shadow ) ) {
|
153 |
+
|
154 |
+
$box_shadow = $login_form_box_shadow . ' ' . $login_form_box_shadow_color;
|
155 |
+
$css .= $ss->prefixit( 'box-shadow', trim( $box_shadow ) );
|
156 |
+
|
157 |
+
}
|
158 |
+
|
159 |
+
/* CLOSE login form */
|
160 |
+
$css .= $close_rule;
|
161 |
+
|
162 |
+
/**
|
163 |
+
* Open login h1
|
164 |
+
*
|
165 |
+
* @rule #login h1
|
166 |
+
*/
|
167 |
+
if ( ( !empty( $hide_wp_logo ) && 'on' === $hide_wp_logo ) && empty( $logo_background_url ) ) {
|
168 |
+
|
169 |
+
$css .= $ss->cssrule( '#login h1' );
|
170 |
+
$css .= $ss->trailingsemicolonit( 'display: none' );
|
171 |
+
|
172 |
+
/* CLOSE login h1 */
|
173 |
+
$css .= $close_rule;
|
174 |
+
|
175 |
+
}
|
176 |
+
|
177 |
+
/**
|
178 |
+
* Open login h1 a
|
179 |
+
*
|
180 |
+
* @rule #login h1 a
|
181 |
+
*/
|
182 |
+
if ( !empty( $logo_background_url ) ) {
|
183 |
+
|
184 |
+
$css .= $ss->cssrule( '#login h1 a' );
|
185 |
+
|
186 |
+
if ( !empty( $logo_background_size_height ) && is_int( $logo_background_size_height ) )
|
187 |
+
$css .= $ss->trailingsemicolonit( "height: {$logo_background_size_height}px !important" );
|
188 |
+
|
189 |
+
if ( !empty( $logo_background_size_width ) && is_int( $logo_background_size_width ) )
|
190 |
+
$css .= $ss->trailingsemicolonit( "width: {$logo_background_size_width}px !important" );
|
191 |
+
|
192 |
+
$css .= $ss->trailingsemicolonit( "background-image: url('{$logo_background_url}')" );
|
193 |
+
$css .= $ss->trailingsemicolonit( "background-position: {$logo_background_position}" );
|
194 |
+
$css .= $ss->trailingsemicolonit( "background-repeat: {$logo_background_repeat}" );
|
195 |
+
|
196 |
+
if ( !empty( $logo_background_size ) && 'none' !== $logo_background_size ) {
|
197 |
+
|
198 |
+
$logo_background_size = ( 'flex' !== $logo_background_size ) ? $logo_background_size : '100% auto';
|
199 |
+
$css .= $ss->prefixit( 'background-size', $logo_background_size );
|
200 |
+
|
201 |
+
} elseif ( !empty( $logo_background_size_custom ) && 'custom' === $logo_background_size ) {
|
202 |
+
|
203 |
+
$css .= $ss->prefixit( 'background-size', $logo_background_size_custom );
|
204 |
+
|
205 |
+
} else {
|
206 |
+
$css .= $ss->prefixit( 'background-size', 'inherit' );
|
207 |
+
}
|
208 |
+
|
209 |
+
/* Get width & height from attachment image *
|
210 |
+
$attachment = get_attached_file_id_from_url( $logo_background_url );
|
211 |
+
$attachment_id = isset( $attachment[0] ) && !empty( $attachment[0] ) ? $attachment[0]->ID : $attachment;
|
212 |
+
$image_attributes = wp_get_attachment_image_src( $attachment_id ); // returns an array
|
213 |
+
$css .= !empty( $image_attributes[2] ) ? $ss->trailingsemicolonit( "height: {$image_attributes[2]}" ) : $ss->trailingsemicolonit( "height: inherit" );
|
214 |
+
$css .= !empty( $image_attributes[1] ) ? $ss->trailingsemicolonit( "width: {$image_attributes[1]}" ) : $ss->trailingsemicolonit( "width: inherit" );
|
215 |
+
*
|
216 |
+
$css .= !empty( $logo_background_height ) ? $ss->trailingsemicolonit( "height: {$logo_background_height}" ) : $ss->trailingsemicolonit( "height: inherit" );
|
217 |
+
$css .= !empty( $logo_background_width ) ? $ss->trailingsemicolonit( "width: {$logo_background_width}" ) : $ss->trailingsemicolonit( "width: inherit" );
|
218 |
+
*/
|
219 |
+
|
220 |
+
/* CLOSE login h1 a */
|
221 |
+
$css .= $close_rule;
|
222 |
+
|
223 |
+
}
|
224 |
+
|
225 |
+
/**
|
226 |
+
* Open form label
|
227 |
+
*
|
228 |
+
* @rule .login label | #loginform label, #lostpasswordform label
|
229 |
+
*/
|
230 |
+
if ( !empty( $label_color ) ) {
|
231 |
+
|
232 |
+
$css .= $ss->cssrule( '.login label' );
|
233 |
+
|
234 |
+
if ( 'on' === $label_color_checkbox ) {
|
235 |
+
|
236 |
+
$color = $ss->hex2rgb( $label_color );
|
237 |
+
$css .= $ss->trailingsemicolonit( "color: rgba({$color['red']},{$color['green']},{$color['blue']},{$label_color_opacity})" );
|
238 |
+
|
239 |
+
} else {
|
240 |
+
|
241 |
+
$css .= $ss->trailingsemicolonit( "color: {$label_color}" );
|
242 |
+
|
243 |
+
}
|
244 |
+
|
245 |
+
/* CLOSE login h1 a */
|
246 |
+
$css .= $close_rule;
|
247 |
+
|
248 |
+
}
|
249 |
+
|
250 |
+
/**
|
251 |
+
* Open below form links
|
252 |
+
*
|
253 |
+
* @rule .login #nav a, .login #backtoblog a
|
254 |
+
*/
|
255 |
+
if ( !empty( $nav_color ) ) {
|
256 |
+
|
257 |
+
$css .= $ss->cssrule( '.login #nav a, .login #backtoblog a' );
|
258 |
+
|
259 |
+
if ( 'on' === $nav_color_checkbox ) {
|
260 |
+
|
261 |
+
$color = $ss->hex2rgb( $nav_color );
|
262 |
+
$css .= $ss->trailingsemicolonit( "color: rgba({$color['red']},{$color['green']},{$color['blue']},{$nav_color_opacity}) !important" );
|
263 |
+
|
264 |
+
} else {
|
265 |
+
|
266 |
+
$css .= $ss->trailingsemicolonit( "color: {$nav_color} !important" );
|
267 |
+
|
268 |
+
}
|
269 |
+
|
270 |
+
if ( !empty( $nav_text_shadow_color ) && 'on' === $nav_text_shadow_color_checkbox ) {
|
271 |
+
|
272 |
+
$color = $ss->hex2rgb( $nav_text_shadow_color );
|
273 |
+
$css .= $ss->trailingsemicolonit( "text-shadow: 0 1px 0 rgba({$color['red']},{$color['green']},{$color['blue']},{$nav_text_shadow_color_opacity})" );
|
274 |
+
|
275 |
+
} elseif( !empty( $nav_text_shadow_color ) ) {
|
276 |
+
|
277 |
+
$css .= $ss->trailingsemicolonit( "text-shadow: 0 1px 0 {$nav_text_shadow_color}" );
|
278 |
+
|
279 |
+
}
|
280 |
+
|
281 |
+
/* CLOSE login h1 a */
|
282 |
+
$css .= $close_rule;
|
283 |
+
|
284 |
+
}
|
285 |
+
|
286 |
+
/**
|
287 |
+
* Open below form links :hover
|
288 |
+
*
|
289 |
+
* @rule .login #nav a:hover, .login #backtoblog a:hover
|
290 |
+
*/
|
291 |
+
if ( !empty( $nav_hover_color ) ) {
|
292 |
+
|
293 |
+
$css .= $ss->cssrule( '.login #nav a:hover, .login #backtoblog a:hover' );
|
294 |
+
|
295 |
+
if ( 'on' === $nav_hover_color_checkbox ) {
|
296 |
+
|
297 |
+
$color = $ss->hex2rgb( $nav_hover_color );
|
298 |
+
$css .= $ss->trailingsemicolonit( "color: rgba({$color['red']},{$color['green']},{$color['blue']},{$nav_hover_color_opacity}) !important" );
|
299 |
+
|
300 |
+
} else {
|
301 |
+
|
302 |
+
$css .= $ss->trailingsemicolonit( "color: {$nav_hover_color} !important" );
|
303 |
+
|
304 |
+
}
|
305 |
+
|
306 |
+
if ( !empty( $nav_text_shadow_hover_color ) && 'on' === $nav_text_shadow_hover_color_checkbox ) {
|
307 |
+
|
308 |
+
$color = $ss->hex2rgb( $nav_text_shadow_hover_color );
|
309 |
+
$css .= $ss->trailingsemicolonit( "text-shadow: 0 1px 0 rgba({$color['red']},{$color['green']},{$color['blue']},{$nav_text_shadow_hover_color_opacity})" );
|
310 |
+
|
311 |
+
} elseif( !empty( $nav_text_shadow_hover_color ) ) {
|
312 |
+
|
313 |
+
$css .= $ss->trailingsemicolonit( "text-shadow: 0 1px 0 {$nav_text_shadow_hover_color}" );
|
314 |
+
|
315 |
+
}
|
316 |
+
|
317 |
+
/* CLOSE login h1 a */
|
318 |
+
$css .= $close_rule;
|
319 |
+
|
320 |
+
}
|
321 |
+
|
322 |
+
/* WP Magic */
|
323 |
+
set_transient( $login->id . '_style', $css, YEAR_IN_SECONDS ); // Cache for a year
|
324 |
+
endif;
|
325 |
+
|
326 |
+
/* Out of the frying pan, and into the fire! */
|
327 |
+
echo $css;
|