WP Maintenance Mode - Version 2.0.4

Version Description

(17/06/2016) = * fixed issue: responsive subscribe form * fixed issue: jQuery was loaded from a different folder on some WP installations * fixed issue: errors after update (strstr on empty strings because of saving empty lines on exclude list) * fixed issue: if "Redirection" from "General" tab is active, also redirects ajax calls * fixed issue: settings page title was wrong placed * "contact" feature update - nice email template + reply-to email header * refactoring for some methods * all assets are now minified * rewrite count db records function (used on subscribers count) * compatible with https://github.com/afragen/github-updater * compatible with wp-cli http://wp-cli.org/ * improved responsivity * improved roles access; now you can set multiple roles (editor, author, subscriber, contributor) and administrator will always have access to backend and frontend * it_IT translation by benedettogit (https://github.com/benedettogit) * updated all language files (need help for 100% translation)

Download this release

Release Info

Developer GeorgeJipa
Plugin Icon 128x128 WP Maintenance Mode
Version 2.0.4
Comparing to
See all releases

Code changes from version 2.0.3 to 2.0.4

Files changed (83) hide show
  1. assets/css/chosen.css +448 -0
  2. assets/css/chosen.min.css +11 -0
  3. assets/css/index.php +2 -2
  4. assets/css/jquery-ui-timepicker-addon.css +30 -0
  5. assets/css/jquery-ui-timepicker-addon.min.css +1 -0
  6. assets/css/style-admin.css +148 -118
  7. assets/css/style-admin.min.css +1 -0
  8. assets/css/style.css +462 -462
  9. assets/css/style.min.css +1 -0
  10. assets/images/chosen-sprite.png +0 -0
  11. assets/images/chosen-sprite@2x.png +0 -0
  12. assets/images/index.php +2 -2
  13. assets/images/resources/ayoshop.jpg +0 -0
  14. assets/images/resources/flatui.jpg +0 -0
  15. assets/images/resources/linecons.jpg +0 -0
  16. assets/images/resources/startup-wordpress.jpg +0 -0
  17. assets/index.php +2 -2
  18. assets/js/chosen.jquery.js +1284 -0
  19. assets/js/chosen.jquery.min.js +1 -0
  20. assets/js/index.php +2 -2
  21. assets/js/jquery-ui-timepicker-addon.js +181 -93
  22. assets/js/jquery-ui-timepicker-addon.min.js +2 -0
  23. assets/js/jquery.countdown.js +43 -11
  24. assets/js/jquery.countdown.min.js +1 -6
  25. assets/js/jquery.plugin.js +1 -1
  26. assets/js/jquery.plugin.min.js +1 -4
  27. assets/js/jquery.validate.js +494 -319
  28. assets/js/jquery.validate.min.js +1 -4
  29. assets/js/scripts-admin-global.js +20 -0
  30. assets/js/scripts-admin-global.min.js +1 -0
  31. assets/js/scripts-admin.js +40 -11
  32. assets/js/scripts-admin.min.js +1 -0
  33. assets/js/scripts.js +101 -90
  34. assets/js/scripts.min.js +1 -0
  35. includes/classes/index.php +2 -2
  36. includes/classes/wp-maintenance-mode-admin.php +521 -405
  37. includes/classes/wp-maintenance-mode-shortcodes.php +76 -76
  38. includes/classes/wp-maintenance-mode.php +745 -713
  39. includes/functions/helpers.php +89 -30
  40. includes/functions/index.php +2 -2
  41. includes/index.php +2 -2
  42. index.php +2 -2
  43. languages/index.php +2 -2
  44. languages/wp-maintenance-mode-de_DE.mo +0 -0
  45. languages/wp-maintenance-mode-de_DE.po +532 -459
  46. languages/wp-maintenance-mode-en_US.mo +0 -0
  47. languages/wp-maintenance-mode-en_US.po +491 -435
  48. languages/wp-maintenance-mode-es_ES.mo +0 -0
  49. languages/wp-maintenance-mode-es_ES.po +539 -464
  50. languages/wp-maintenance-mode-fa_IR.mo +0 -0
  51. languages/wp-maintenance-mode-fa_IR.po +498 -0
  52. languages/wp-maintenance-mode-fr_FR.mo +0 -0
  53. languages/wp-maintenance-mode-fr_FR.po +535 -465
  54. languages/wp-maintenance-mode-it_IT.mo +0 -0
  55. languages/wp-maintenance-mode-it_IT.po +528 -0
  56. languages/wp-maintenance-mode-nb_NO.mo +0 -0
  57. languages/wp-maintenance-mode-nb_NO.po +527 -0
  58. languages/wp-maintenance-mode-nl_NL.mo +0 -0
  59. languages/wp-maintenance-mode-nl_NL.po +532 -460
  60. languages/wp-maintenance-mode-pl_PL.mo +0 -0
  61. languages/wp-maintenance-mode-pl_PL.po +530 -0
  62. languages/wp-maintenance-mode-pt_BR.mo +0 -0
  63. languages/wp-maintenance-mode-pt_BR.po +605 -535
  64. languages/wp-maintenance-mode-pt_PT.mo +0 -0
  65. languages/wp-maintenance-mode-pt_PT.po +543 -463
  66. languages/wp-maintenance-mode-ro_RO.mo +0 -0
  67. languages/wp-maintenance-mode-ro_RO.po +553 -470
  68. languages/wp-maintenance-mode-ru_RU.mo +0 -0
  69. languages/wp-maintenance-mode-ru_RU.po +538 -463
  70. languages/wp-maintenance-mode-sv_SE.mo +0 -0
  71. languages/wp-maintenance-mode-sv_SE.po +529 -457
  72. readme.md +105 -105
  73. readme.txt +381 -364
  74. uninstall.php +35 -35
  75. views/contact.php +98 -0
  76. views/index.php +2 -2
  77. views/loginform.php +8 -8
  78. views/maintenance.php +120 -119
  79. views/notice.php +9 -4
  80. views/promo-codepad.php +10 -0
  81. views/settings.php +440 -429
  82. views/sidebar.php +55 -39
  83. wp-maintenance-mode.php +71 -64
assets/css/chosen.css ADDED
@@ -0,0 +1,448 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /*!
2
+ Chosen, a Select Box Enhancer for jQuery and Prototype
3
+ by Patrick Filler for Harvest, http://getharvest.com
4
+
5
+ Version 1.5.1
6
+ Full source at https://github.com/harvesthq/chosen
7
+ Copyright (c) 2011-2016 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
+ -webkit-user-select: none;
20
+ -moz-user-select: none;
21
+ user-select: none;
22
+ }
23
+ .chosen-container * {
24
+ -webkit-box-sizing: border-box;
25
+ -moz-box-sizing: border-box;
26
+ box-sizing: border-box;
27
+ }
28
+ .chosen-container .chosen-drop {
29
+ position: absolute;
30
+ top: 100%;
31
+ left: -9999px;
32
+ z-index: 1010;
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
+ .chosen-container .search-choice .group-name, .chosen-container .chosen-single .group-name {
46
+ margin-right: 4px;
47
+ overflow: hidden;
48
+ white-space: nowrap;
49
+ text-overflow: ellipsis;
50
+ font-weight: normal;
51
+ color: #999999;
52
+ }
53
+ .chosen-container .search-choice .group-name:after, .chosen-container .chosen-single .group-name:after {
54
+ content: ":";
55
+ padding-left: 2px;
56
+ vertical-align: top;
57
+ }
58
+
59
+ /* @end */
60
+ /* @group Single Chosen */
61
+ .chosen-container-single .chosen-single {
62
+ position: relative;
63
+ display: block;
64
+ overflow: hidden;
65
+ padding: 0 0 0 8px;
66
+ height: 25px;
67
+ border: 1px solid #aaa;
68
+ border-radius: 5px;
69
+ background-color: #fff;
70
+ background: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(20%, #ffffff), color-stop(50%, #f6f6f6), color-stop(52%, #eeeeee), color-stop(100%, #f4f4f4));
71
+ background: -webkit-linear-gradient(#ffffff 20%, #f6f6f6 50%, #eeeeee 52%, #f4f4f4 100%);
72
+ background: -moz-linear-gradient(#ffffff 20%, #f6f6f6 50%, #eeeeee 52%, #f4f4f4 100%);
73
+ background: -o-linear-gradient(#ffffff 20%, #f6f6f6 50%, #eeeeee 52%, #f4f4f4 100%);
74
+ background: linear-gradient(#ffffff 20%, #f6f6f6 50%, #eeeeee 52%, #f4f4f4 100%);
75
+ background-clip: padding-box;
76
+ box-shadow: 0 0 3px white inset, 0 1px 1px rgba(0, 0, 0, 0.1);
77
+ color: #444;
78
+ text-decoration: none;
79
+ white-space: nowrap;
80
+ line-height: 24px;
81
+ }
82
+ .chosen-container-single .chosen-default {
83
+ color: #999;
84
+ }
85
+ .chosen-container-single .chosen-single span {
86
+ display: block;
87
+ overflow: hidden;
88
+ margin-right: 26px;
89
+ text-overflow: ellipsis;
90
+ white-space: nowrap;
91
+ }
92
+ .chosen-container-single .chosen-single-with-deselect span {
93
+ margin-right: 38px;
94
+ }
95
+ .chosen-container-single .chosen-single abbr {
96
+ position: absolute;
97
+ top: 6px;
98
+ right: 26px;
99
+ display: block;
100
+ width: 12px;
101
+ height: 12px;
102
+ background: url('chosen-sprite.png') -42px 1px no-repeat;
103
+ font-size: 1px;
104
+ }
105
+ .chosen-container-single .chosen-single abbr:hover {
106
+ background-position: -42px -10px;
107
+ }
108
+ .chosen-container-single.chosen-disabled .chosen-single abbr:hover {
109
+ background-position: -42px -10px;
110
+ }
111
+ .chosen-container-single .chosen-single div {
112
+ position: absolute;
113
+ top: 0;
114
+ right: 0;
115
+ display: block;
116
+ width: 18px;
117
+ height: 100%;
118
+ }
119
+ .chosen-container-single .chosen-single div b {
120
+ display: block;
121
+ width: 100%;
122
+ height: 100%;
123
+ background: url('chosen-sprite.png') no-repeat 0px 2px;
124
+ }
125
+ .chosen-container-single .chosen-search {
126
+ position: relative;
127
+ z-index: 1010;
128
+ margin: 0;
129
+ padding: 3px 4px;
130
+ white-space: nowrap;
131
+ }
132
+ .chosen-container-single .chosen-search input[type="text"] {
133
+ margin: 1px 0;
134
+ padding: 4px 20px 4px 5px;
135
+ width: 100%;
136
+ height: auto;
137
+ outline: 0;
138
+ border: 1px solid #aaa;
139
+ background: white url('chosen-sprite.png') no-repeat 100% -20px;
140
+ background: url('chosen-sprite.png') no-repeat 100% -20px;
141
+ font-size: 1em;
142
+ font-family: sans-serif;
143
+ line-height: normal;
144
+ border-radius: 0;
145
+ }
146
+ .chosen-container-single .chosen-drop {
147
+ margin-top: -1px;
148
+ border-radius: 0 0 4px 4px;
149
+ background-clip: padding-box;
150
+ }
151
+ .chosen-container-single.chosen-container-single-nosearch .chosen-search {
152
+ position: absolute;
153
+ left: -9999px;
154
+ }
155
+
156
+ /* @end */
157
+ /* @group Results */
158
+ .chosen-container .chosen-results {
159
+ color: #444;
160
+ position: relative;
161
+ overflow-x: hidden;
162
+ overflow-y: auto;
163
+ margin: 0 4px 4px 0;
164
+ padding: 0 0 0 4px;
165
+ max-height: 240px;
166
+ -webkit-overflow-scrolling: touch;
167
+ }
168
+ .chosen-container .chosen-results li {
169
+ display: none;
170
+ margin: 0;
171
+ padding: 5px 6px;
172
+ list-style: none;
173
+ line-height: 15px;
174
+ word-wrap: break-word;
175
+ -webkit-touch-callout: none;
176
+ }
177
+ .chosen-container .chosen-results li.active-result {
178
+ display: list-item;
179
+ cursor: pointer;
180
+ }
181
+ .chosen-container .chosen-results li.disabled-result {
182
+ display: list-item;
183
+ color: #ccc;
184
+ cursor: default;
185
+ }
186
+ .chosen-container .chosen-results li.highlighted {
187
+ background-color: #3875d7;
188
+ background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(20%, #3875d7), color-stop(90%, #2a62bc));
189
+ background-image: -webkit-linear-gradient(#3875d7 20%, #2a62bc 90%);
190
+ background-image: -moz-linear-gradient(#3875d7 20%, #2a62bc 90%);
191
+ background-image: -o-linear-gradient(#3875d7 20%, #2a62bc 90%);
192
+ background-image: linear-gradient(#3875d7 20%, #2a62bc 90%);
193
+ color: #fff;
194
+ }
195
+ .chosen-container .chosen-results li.no-results {
196
+ color: #777;
197
+ display: list-item;
198
+ background: #f4f4f4;
199
+ }
200
+ .chosen-container .chosen-results li.group-result {
201
+ display: list-item;
202
+ font-weight: bold;
203
+ cursor: default;
204
+ }
205
+ .chosen-container .chosen-results li.group-option {
206
+ padding-left: 15px;
207
+ }
208
+ .chosen-container .chosen-results li em {
209
+ font-style: normal;
210
+ text-decoration: underline;
211
+ }
212
+
213
+ /* @end */
214
+ /* @group Multi Chosen */
215
+ .chosen-container-multi .chosen-choices {
216
+ position: relative;
217
+ overflow: hidden;
218
+ margin: 0;
219
+ padding: 0 5px;
220
+ width: 100%;
221
+ height: auto !important;
222
+ height: 1%;
223
+ border: 1px solid #aaa;
224
+ background-color: #fff;
225
+ background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(1%, #eeeeee), color-stop(15%, #ffffff));
226
+ background-image: -webkit-linear-gradient(#eeeeee 1%, #ffffff 15%);
227
+ background-image: -moz-linear-gradient(#eeeeee 1%, #ffffff 15%);
228
+ background-image: -o-linear-gradient(#eeeeee 1%, #ffffff 15%);
229
+ background-image: linear-gradient(#eeeeee 1%, #ffffff 15%);
230
+ cursor: text;
231
+ }
232
+ .chosen-container-multi .chosen-choices li {
233
+ float: left;
234
+ list-style: none;
235
+ }
236
+ .chosen-container-multi .chosen-choices li.search-field {
237
+ margin: 0;
238
+ padding: 0;
239
+ white-space: nowrap;
240
+ }
241
+ .chosen-container-multi .chosen-choices li.search-field input[type="text"] {
242
+ margin: 1px 0;
243
+ padding: 0;
244
+ height: 25px;
245
+ outline: 0;
246
+ border: 0 !important;
247
+ background: transparent !important;
248
+ box-shadow: none;
249
+ color: #999;
250
+ font-size: 100%;
251
+ font-family: sans-serif;
252
+ line-height: normal;
253
+ border-radius: 0;
254
+ }
255
+ .chosen-container-multi .chosen-choices li.search-choice {
256
+ position: relative;
257
+ margin: 3px 5px 3px 0;
258
+ padding: 3px 20px 3px 5px;
259
+ border: 1px solid #aaa;
260
+ max-width: 100%;
261
+ border-radius: 3px;
262
+ background-color: #eeeeee;
263
+ 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));
264
+ background-image: -webkit-linear-gradient(#f4f4f4 20%, #f0f0f0 50%, #e8e8e8 52%, #eeeeee 100%);
265
+ background-image: -moz-linear-gradient(#f4f4f4 20%, #f0f0f0 50%, #e8e8e8 52%, #eeeeee 100%);
266
+ background-image: -o-linear-gradient(#f4f4f4 20%, #f0f0f0 50%, #e8e8e8 52%, #eeeeee 100%);
267
+ background-image: linear-gradient(#f4f4f4 20%, #f0f0f0 50%, #e8e8e8 52%, #eeeeee 100%);
268
+ background-size: 100% 19px;
269
+ background-repeat: repeat-x;
270
+ background-clip: padding-box;
271
+ box-shadow: 0 0 2px white inset, 0 1px 0 rgba(0, 0, 0, 0.05);
272
+ color: #333;
273
+ line-height: 13px;
274
+ cursor: default;
275
+ }
276
+ .chosen-container-multi .chosen-choices li.search-choice span {
277
+ word-wrap: break-word;
278
+ }
279
+ .chosen-container-multi .chosen-choices li.search-choice .search-choice-close {
280
+ position: absolute;
281
+ top: 4px;
282
+ right: 3px;
283
+ display: block;
284
+ width: 12px;
285
+ height: 12px;
286
+ background: url('../images/chosen-sprite.png') -42px 1px no-repeat;
287
+ font-size: 1px;
288
+ }
289
+ .chosen-container-multi .chosen-choices li.search-choice .search-choice-close:hover {
290
+ background-position: -42px -10px;
291
+ }
292
+ .chosen-container-multi .chosen-choices li.search-choice-disabled {
293
+ padding-right: 5px;
294
+ border: 1px solid #ccc;
295
+ background-color: #e4e4e4;
296
+ 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));
297
+ background-image: -webkit-linear-gradient(#f4f4f4 20%, #f0f0f0 50%, #e8e8e8 52%, #eeeeee 100%);
298
+ background-image: -moz-linear-gradient(#f4f4f4 20%, #f0f0f0 50%, #e8e8e8 52%, #eeeeee 100%);
299
+ background-image: -o-linear-gradient(#f4f4f4 20%, #f0f0f0 50%, #e8e8e8 52%, #eeeeee 100%);
300
+ background-image: linear-gradient(#f4f4f4 20%, #f0f0f0 50%, #e8e8e8 52%, #eeeeee 100%);
301
+ color: #666;
302
+ }
303
+ .chosen-container-multi .chosen-choices li.search-choice-focus {
304
+ background: #d4d4d4;
305
+ }
306
+ .chosen-container-multi .chosen-choices li.search-choice-focus .search-choice-close {
307
+ background-position: -42px -10px;
308
+ }
309
+ .chosen-container-multi .chosen-results {
310
+ margin: 0;
311
+ padding: 0;
312
+ }
313
+ .chosen-container-multi .chosen-drop .result-selected {
314
+ display: list-item;
315
+ color: #ccc;
316
+ cursor: default;
317
+ }
318
+
319
+ /* @end */
320
+ /* @group Active */
321
+ .chosen-container-active .chosen-single {
322
+ border: 1px solid #5897fb;
323
+ box-shadow: 0 0 5px rgba(0, 0, 0, 0.3);
324
+ }
325
+ .chosen-container-active.chosen-with-drop .chosen-single {
326
+ border: 1px solid #aaa;
327
+ -moz-border-radius-bottomright: 0;
328
+ border-bottom-right-radius: 0;
329
+ -moz-border-radius-bottomleft: 0;
330
+ border-bottom-left-radius: 0;
331
+ background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(20%, #eeeeee), color-stop(80%, #ffffff));
332
+ background-image: -webkit-linear-gradient(#eeeeee 20%, #ffffff 80%);
333
+ background-image: -moz-linear-gradient(#eeeeee 20%, #ffffff 80%);
334
+ background-image: -o-linear-gradient(#eeeeee 20%, #ffffff 80%);
335
+ background-image: linear-gradient(#eeeeee 20%, #ffffff 80%);
336
+ box-shadow: 0 1px 0 #fff inset;
337
+ }
338
+ .chosen-container-active.chosen-with-drop .chosen-single div {
339
+ border-left: none;
340
+ background: transparent;
341
+ }
342
+ .chosen-container-active.chosen-with-drop .chosen-single div b {
343
+ background-position: -18px 2px;
344
+ }
345
+ .chosen-container-active .chosen-choices {
346
+ border: 1px solid #5897fb;
347
+ box-shadow: 0 0 5px rgba(0, 0, 0, 0.3);
348
+ }
349
+ .chosen-container-active .chosen-choices li.search-field input[type="text"] {
350
+ color: #222 !important;
351
+ }
352
+
353
+ /* @end */
354
+ /* @group Disabled Support */
355
+ .chosen-disabled {
356
+ opacity: 0.5 !important;
357
+ cursor: default;
358
+ }
359
+ .chosen-disabled .chosen-single {
360
+ cursor: default;
361
+ }
362
+ .chosen-disabled .chosen-choices .search-choice .search-choice-close {
363
+ cursor: default;
364
+ }
365
+
366
+ /* @end */
367
+ /* @group Right to Left */
368
+ .chosen-rtl {
369
+ text-align: right;
370
+ }
371
+ .chosen-rtl .chosen-single {
372
+ overflow: visible;
373
+ padding: 0 8px 0 0;
374
+ }
375
+ .chosen-rtl .chosen-single span {
376
+ margin-right: 0;
377
+ margin-left: 26px;
378
+ direction: rtl;
379
+ }
380
+ .chosen-rtl .chosen-single-with-deselect span {
381
+ margin-left: 38px;
382
+ }
383
+ .chosen-rtl .chosen-single div {
384
+ right: auto;
385
+ left: 3px;
386
+ }
387
+ .chosen-rtl .chosen-single abbr {
388
+ right: auto;
389
+ left: 26px;
390
+ }
391
+ .chosen-rtl .chosen-choices li {
392
+ float: right;
393
+ }
394
+ .chosen-rtl .chosen-choices li.search-field input[type="text"] {
395
+ direction: rtl;
396
+ }
397
+ .chosen-rtl .chosen-choices li.search-choice {
398
+ margin: 3px 5px 3px 0;
399
+ padding: 3px 5px 3px 19px;
400
+ }
401
+ .chosen-rtl .chosen-choices li.search-choice .search-choice-close {
402
+ right: auto;
403
+ left: 4px;
404
+ }
405
+ .chosen-rtl.chosen-container-single-nosearch .chosen-search,
406
+ .chosen-rtl .chosen-drop {
407
+ left: 9999px;
408
+ }
409
+ .chosen-rtl.chosen-container-single .chosen-results {
410
+ margin: 0 0 4px 4px;
411
+ padding: 0 4px 0 0;
412
+ }
413
+ .chosen-rtl .chosen-results li.group-option {
414
+ padding-right: 15px;
415
+ padding-left: 0;
416
+ }
417
+ .chosen-rtl.chosen-container-active.chosen-with-drop .chosen-single div {
418
+ border-right: none;
419
+ }
420
+ .chosen-rtl .chosen-search input[type="text"] {
421
+ padding: 4px 5px 4px 20px;
422
+ background: white url('../images/chosen-sprite.png') no-repeat -30px -20px;
423
+ background: url('../images/chosen-sprite.png') no-repeat -30px -20px;
424
+ direction: rtl;
425
+ }
426
+ .chosen-rtl.chosen-container-single .chosen-single div b {
427
+ background-position: 6px 2px;
428
+ }
429
+ .chosen-rtl.chosen-container-single.chosen-with-drop .chosen-single div b {
430
+ background-position: -12px 2px;
431
+ }
432
+
433
+ /* @end */
434
+ /* @group Retina compatibility */
435
+ @media only screen and (-webkit-min-device-pixel-ratio: 1.5), only screen and (min-resolution: 144dpi), only screen and (min-resolution: 1.5dppx) {
436
+ .chosen-rtl .chosen-search input[type="text"],
437
+ .chosen-container-single .chosen-single abbr,
438
+ .chosen-container-single .chosen-single div b,
439
+ .chosen-container-single .chosen-search input[type="text"],
440
+ .chosen-container-multi .chosen-choices .search-choice .search-choice-close,
441
+ .chosen-container .chosen-results-scroll-down span,
442
+ .chosen-container .chosen-results-scroll-up span {
443
+ background-image: url('../images/chosen-sprite@2x.png') !important;
444
+ background-size: 52px 37px !important;
445
+ background-repeat: no-repeat !important;
446
+ }
447
+ }
448
+ /* @end */
assets/css/chosen.min.css ADDED
@@ -0,0 +1,11 @@
 
 
 
 
 
 
 
 
 
 
 
1
+ /*!
2
+ Chosen, a Select Box Enhancer for jQuery and Prototype
3
+ by Patrick Filler for Harvest, http://getharvest.com
4
+
5
+ Version 1.5.1
6
+ Full source at https://github.com/harvesthq/chosen
7
+ Copyright (c) 2011-2016 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
+ */.chosen-container{position:relative;display:inline-block;vertical-align:middle;font-size:13px;-webkit-user-select:none;-moz-user-select:none;user-select:none}.chosen-container *{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.chosen-container .chosen-drop{position:absolute;top:100%;left:-9999px;z-index:1010;width:100%;border:1px solid #aaa;border-top:0;background:#fff;box-shadow:0 4px 5px rgba(0,0,0,.15)}.chosen-container.chosen-with-drop .chosen-drop{left:0}.chosen-container a{cursor:pointer}.chosen-container .chosen-single .group-name,.chosen-container .search-choice .group-name{margin-right:4px;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;font-weight:400;color:#999}.chosen-container .chosen-single .group-name:after,.chosen-container .search-choice .group-name:after{content:":";padding-left:2px;vertical-align:top}.chosen-container-single .chosen-single{position:relative;display:block;overflow:hidden;padding:0 0 0 8px;height:25px;border:1px solid #aaa;border-radius:5px;background:-webkit-gradient(linear,50% 0,50% 100%,color-stop(20%,#fff),color-stop(50%,#f6f6f6),color-stop(52%,#eee),color-stop(100%,#f4f4f4));background:-webkit-linear-gradient(#fff 20%,#f6f6f6 50%,#eee 52%,#f4f4f4 100%);background:-moz-linear-gradient(#fff 20%,#f6f6f6 50%,#eee 52%,#f4f4f4 100%);background:-o-linear-gradient(#fff 20%,#f6f6f6 50%,#eee 52%,#f4f4f4 100%);background:linear-gradient(#fff 20%,#f6f6f6 50%,#eee 52%,#f4f4f4 100%);background-clip:padding-box;box-shadow:0 0 3px #fff inset,0 1px 1px rgba(0,0,0,.1);color:#444;text-decoration:none;white-space:nowrap;line-height:24px}.chosen-container-single .chosen-default{color:#999}.chosen-container-single .chosen-single span{display:block;overflow:hidden;margin-right:26px;text-overflow:ellipsis;white-space:nowrap}.chosen-container-single .chosen-single-with-deselect span{margin-right:38px}.chosen-container-single .chosen-single abbr{position:absolute;top:6px;right:26px;display:block;width:12px;height:12px;background:url(chosen-sprite.png) -42px 1px no-repeat;font-size:1px}.chosen-container-single .chosen-single abbr:hover,.chosen-container-single.chosen-disabled .chosen-single abbr:hover{background-position:-42px -10px}.chosen-container-single .chosen-single div{position:absolute;top:0;right:0;display:block;width:18px;height:100%}.chosen-container-single .chosen-single div b{display:block;width:100%;height:100%;background:url(chosen-sprite.png) 0 2px no-repeat}.chosen-container-single .chosen-search{position:relative;z-index:1010;margin:0;padding:3px 4px;white-space:nowrap}.chosen-container-single .chosen-search input[type=text]{margin:1px 0;padding:4px 20px 4px 5px;width:100%;height:auto;outline:0;border:1px solid #aaa;background:url(chosen-sprite.png) 100% -20px no-repeat;font-size:1em;font-family:sans-serif;line-height:normal;border-radius:0}.chosen-container-single .chosen-drop{margin-top:-1px;border-radius:0 0 4px 4px;background-clip:padding-box}.chosen-container-single.chosen-container-single-nosearch .chosen-search{position:absolute;left:-9999px}.chosen-container .chosen-results{color:#444;position:relative;overflow-x:hidden;overflow-y:auto;margin:0 4px 4px 0;padding:0 0 0 4px;max-height:240px;-webkit-overflow-scrolling:touch}.chosen-container .chosen-results li{display:none;margin:0;padding:5px 6px;list-style:none;line-height:15px;word-wrap:break-word;-webkit-touch-callout:none}.chosen-container .chosen-results li.active-result{display:list-item;cursor:pointer}.chosen-container .chosen-results li.disabled-result{display:list-item;color:#ccc;cursor:default}.chosen-container .chosen-results li.highlighted{background-color:#3875d7;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(20%,#3875d7),color-stop(90%,#2a62bc));background-image:-webkit-linear-gradient(#3875d7 20%,#2a62bc 90%);background-image:-moz-linear-gradient(#3875d7 20%,#2a62bc 90%);background-image:-o-linear-gradient(#3875d7 20%,#2a62bc 90%);background-image:linear-gradient(#3875d7 20%,#2a62bc 90%);color:#fff}.chosen-container .chosen-results li.no-results{color:#777;display:list-item;background:#f4f4f4}.chosen-container .chosen-results li.group-result{display:list-item;font-weight:700;cursor:default}.chosen-container .chosen-results li.group-option{padding-left:15px}.chosen-container .chosen-results li em{font-style:normal;text-decoration:underline}.chosen-container-multi .chosen-choices{position:relative;overflow:hidden;margin:0;padding:0 5px;width:100%;height:auto!important;height:1%;border:1px solid #aaa;background-color:#fff;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(1%,#eee),color-stop(15%,#fff));background-image:-webkit-linear-gradient(#eee 1%,#fff 15%);background-image:-moz-linear-gradient(#eee 1%,#fff 15%);background-image:-o-linear-gradient(#eee 1%,#fff 15%);background-image:linear-gradient(#eee 1%,#fff 15%);cursor:text}.chosen-container-multi .chosen-choices li{float:left;list-style:none}.chosen-container-multi .chosen-choices li.search-field{margin:0;padding:0;white-space:nowrap}.chosen-container-multi .chosen-choices li.search-field input[type=text]{margin:1px 0;padding:0;height:25px;outline:0;border:0!important;background:0 0!important;box-shadow:none;color:#999;font-size:100%;font-family:sans-serif;line-height:normal;border-radius:0}.chosen-container-multi .chosen-choices li.search-choice{position:relative;margin:3px 5px 3px 0;padding:3px 20px 3px 5px;border:1px solid #aaa;max-width:100%;border-radius:3px;background-color:#eee;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(20%,#f4f4f4),color-stop(50%,#f0f0f0),color-stop(52%,#e8e8e8),color-stop(100%,#eee));background-image:-webkit-linear-gradient(#f4f4f4 20%,#f0f0f0 50%,#e8e8e8 52%,#eee 100%);background-image:-moz-linear-gradient(#f4f4f4 20%,#f0f0f0 50%,#e8e8e8 52%,#eee 100%);background-image:-o-linear-gradient(#f4f4f4 20%,#f0f0f0 50%,#e8e8e8 52%,#eee 100%);background-image:linear-gradient(#f4f4f4 20%,#f0f0f0 50%,#e8e8e8 52%,#eee 100%);background-size:100% 19px;background-repeat:repeat-x;background-clip:padding-box;box-shadow:0 0 2px #fff inset,0 1px 0 rgba(0,0,0,.05);color:#333;line-height:13px;cursor:default}.chosen-container-multi .chosen-choices li.search-choice span{word-wrap:break-word}.chosen-container-multi .chosen-choices li.search-choice .search-choice-close{position:absolute;top:4px;right:3px;display:block;width:12px;height:12px;background:url(../images/chosen-sprite.png) -42px 1px no-repeat;font-size:1px}.chosen-container-multi .chosen-choices li.search-choice .search-choice-close:hover{background-position:-42px -10px}.chosen-container-multi .chosen-choices li.search-choice-disabled{padding-right:5px;border:1px solid #ccc;background-color:#e4e4e4;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(20%,#f4f4f4),color-stop(50%,#f0f0f0),color-stop(52%,#e8e8e8),color-stop(100%,#eee));background-image:-webkit-linear-gradient(#f4f4f4 20%,#f0f0f0 50%,#e8e8e8 52%,#eee 100%);background-image:-moz-linear-gradient(#f4f4f4 20%,#f0f0f0 50%,#e8e8e8 52%,#eee 100%);background-image:-o-linear-gradient(#f4f4f4 20%,#f0f0f0 50%,#e8e8e8 52%,#eee 100%);background-image:linear-gradient(#f4f4f4 20%,#f0f0f0 50%,#e8e8e8 52%,#eee 100%);color:#666}.chosen-container-multi .chosen-choices li.search-choice-focus{background:#d4d4d4}.chosen-container-multi .chosen-choices li.search-choice-focus .search-choice-close{background-position:-42px -10px}.chosen-container-multi .chosen-results{margin:0;padding:0}.chosen-container-multi .chosen-drop .result-selected{display:list-item;color:#ccc;cursor:default}.chosen-container-active .chosen-single{border:1px solid #5897fb;box-shadow:0 0 5px rgba(0,0,0,.3)}.chosen-container-active.chosen-with-drop .chosen-single{border:1px solid #aaa;-moz-border-radius-bottomright:0;border-bottom-right-radius:0;-moz-border-radius-bottomleft:0;border-bottom-left-radius:0;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(20%,#eee),color-stop(80%,#fff));background-image:-webkit-linear-gradient(#eee 20%,#fff 80%);background-image:-moz-linear-gradient(#eee 20%,#fff 80%);background-image:-o-linear-gradient(#eee 20%,#fff 80%);background-image:linear-gradient(#eee 20%,#fff 80%);box-shadow:0 1px 0 #fff inset}.chosen-container-active.chosen-with-drop .chosen-single div{border-left:none;background:0 0}.chosen-container-active.chosen-with-drop .chosen-single div b{background-position:-18px 2px}.chosen-container-active .chosen-choices{border:1px solid #5897fb;box-shadow:0 0 5px rgba(0,0,0,.3)}.chosen-container-active .chosen-choices li.search-field input[type=text]{color:#222!important}.chosen-disabled{opacity:.5!important;cursor:default}.chosen-disabled .chosen-choices .search-choice .search-choice-close,.chosen-disabled .chosen-single{cursor:default}.chosen-rtl{text-align:right}.chosen-rtl .chosen-single{overflow:visible;padding:0 8px 0 0}.chosen-rtl .chosen-single span{margin-right:0;margin-left:26px;direction:rtl}.chosen-rtl .chosen-single-with-deselect span{margin-left:38px}.chosen-rtl .chosen-single div{right:auto;left:3px}.chosen-rtl .chosen-single abbr{right:auto;left:26px}.chosen-rtl .chosen-choices li{float:right}.chosen-rtl .chosen-choices li.search-field input[type=text]{direction:rtl}.chosen-rtl .chosen-choices li.search-choice{margin:3px 5px 3px 0;padding:3px 5px 3px 19px}.chosen-rtl .chosen-choices li.search-choice .search-choice-close{right:auto;left:4px}.chosen-rtl .chosen-drop,.chosen-rtl.chosen-container-single-nosearch .chosen-search{left:9999px}.chosen-rtl.chosen-container-single .chosen-results{margin:0 0 4px 4px;padding:0 4px 0 0}.chosen-rtl .chosen-results li.group-option{padding-right:15px;padding-left:0}.chosen-rtl.chosen-container-active.chosen-with-drop .chosen-single div{border-right:none}.chosen-rtl .chosen-search input[type=text]{padding:4px 5px 4px 20px;background:url(../images/chosen-sprite.png) -30px -20px no-repeat;direction:rtl}.chosen-rtl.chosen-container-single .chosen-single div b{background-position:6px 2px}.chosen-rtl.chosen-container-single.chosen-with-drop .chosen-single div b{background-position:-12px 2px}@media only screen and (-webkit-min-device-pixel-ratio:1.5),only screen and (min-resolution:144dpi),only screen and (min-resolution:1.5dppx){.chosen-container .chosen-results-scroll-down span,.chosen-container .chosen-results-scroll-up span,.chosen-container-multi .chosen-choices .search-choice .search-choice-close,.chosen-container-single .chosen-search input[type=text],.chosen-container-single .chosen-single abbr,.chosen-container-single .chosen-single div b,.chosen-rtl .chosen-search input[type=text]{background-image:url(../images/chosen-sprite@2x.png)!important;background-size:52px 37px!important;background-repeat:no-repeat!important}}
assets/css/index.php CHANGED
@@ -1,2 +1,2 @@
1
- <?php
2
- // Silence is golden.
1
+ <?php
2
+ // Silence is golden.
assets/css/jquery-ui-timepicker-addon.css ADDED
@@ -0,0 +1,30 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ .ui-timepicker-div .ui-widget-header { margin-bottom: 8px; }
2
+ .ui-timepicker-div dl { text-align: left; }
3
+ .ui-timepicker-div dl dt { float: left; clear:left; padding: 0 0 0 5px; }
4
+ .ui-timepicker-div dl dd { margin: 0 10px 10px 40%; }
5
+ .ui-timepicker-div td { font-size: 90%; }
6
+ .ui-tpicker-grid-label { background: none; border: none; margin: 0; padding: 0; }
7
+ .ui-timepicker-div .ui_tpicker_unit_hide{ display: none; }
8
+
9
+ .ui-timepicker-div .ui_tpicker_time .ui_tpicker_time_input { background: none; color: inherit; border: none; outline: none; border-bottom: solid 1px #555; width: 95%; }
10
+ .ui-timepicker-div .ui_tpicker_time .ui_tpicker_time_input:focus { border-bottom-color: #aaa; }
11
+
12
+ .ui-timepicker-rtl{ direction: rtl; }
13
+ .ui-timepicker-rtl dl { text-align: right; padding: 0 5px 0 0; }
14
+ .ui-timepicker-rtl dl dt{ float: right; clear: right; }
15
+ .ui-timepicker-rtl dl dd { margin: 0 40% 10px 10px; }
16
+
17
+ /* Shortened version style */
18
+ .ui-timepicker-div.ui-timepicker-oneLine { padding-right: 2px; }
19
+ .ui-timepicker-div.ui-timepicker-oneLine .ui_tpicker_time,
20
+ .ui-timepicker-div.ui-timepicker-oneLine dt { display: none; }
21
+ .ui-timepicker-div.ui-timepicker-oneLine .ui_tpicker_time_label { display: block; padding-top: 2px; }
22
+ .ui-timepicker-div.ui-timepicker-oneLine dl { text-align: right; }
23
+ .ui-timepicker-div.ui-timepicker-oneLine dl dd,
24
+ .ui-timepicker-div.ui-timepicker-oneLine dl dd > div { display:inline-block; margin:0; }
25
+ .ui-timepicker-div.ui-timepicker-oneLine dl dd.ui_tpicker_minute:before,
26
+ .ui-timepicker-div.ui-timepicker-oneLine dl dd.ui_tpicker_second:before { content:':'; display:inline-block; }
27
+ .ui-timepicker-div.ui-timepicker-oneLine dl dd.ui_tpicker_millisec:before,
28
+ .ui-timepicker-div.ui-timepicker-oneLine dl dd.ui_tpicker_microsec:before { content:'.'; display:inline-block; }
29
+ .ui-timepicker-div.ui-timepicker-oneLine .ui_tpicker_unit_hide,
30
+ .ui-timepicker-div.ui-timepicker-oneLine .ui_tpicker_unit_hide:before{ display: none; }
assets/css/jquery-ui-timepicker-addon.min.css ADDED
@@ -0,0 +1 @@
 
1
+ .ui-timepicker-div .ui-widget-header{margin-bottom:8px}.ui-timepicker-div dl{text-align:left}.ui-timepicker-div dl dt{float:left;clear:left;padding:0 0 0 5px}.ui-timepicker-div dl dd{margin:0 10px 10px 40%}.ui-timepicker-div td{font-size:90%}.ui-tpicker-grid-label{background:0 0;border:none;margin:0;padding:0}.ui-timepicker-div .ui_tpicker_unit_hide{display:none}.ui-timepicker-div .ui_tpicker_time .ui_tpicker_time_input{background:0 0;color:inherit;border:none;outline:0;border-bottom:solid 1px #555;width:95%}.ui-timepicker-div .ui_tpicker_time .ui_tpicker_time_input:focus{border-bottom-color:#aaa}.ui-timepicker-rtl{direction:rtl}.ui-timepicker-rtl dl{text-align:right;padding:0 5px 0 0}.ui-timepicker-rtl dl dt{float:right;clear:right}.ui-timepicker-rtl dl dd{margin:0 40% 10px 10px}.ui-timepicker-div.ui-timepicker-oneLine{padding-right:2px}.ui-timepicker-div.ui-timepicker-oneLine .ui_tpicker_time,.ui-timepicker-div.ui-timepicker-oneLine dt{display:none}.ui-timepicker-div.ui-timepicker-oneLine .ui_tpicker_time_label{display:block;padding-top:2px}.ui-timepicker-div.ui-timepicker-oneLine dl{text-align:right}.ui-timepicker-div.ui-timepicker-oneLine dl dd,.ui-timepicker-div.ui-timepicker-oneLine dl dd>div{display:inline-block;margin:0}.ui-timepicker-div.ui-timepicker-oneLine dl dd.ui_tpicker_minute:before,.ui-timepicker-div.ui-timepicker-oneLine dl dd.ui_tpicker_second:before{content:':';display:inline-block}.ui-timepicker-div.ui-timepicker-oneLine dl dd.ui_tpicker_microsec:before,.ui-timepicker-div.ui-timepicker-oneLine dl dd.ui_tpicker_millisec:before{content:'.';display:inline-block}.ui-timepicker-div.ui-timepicker-oneLine .ui_tpicker_unit_hide,.ui-timepicker-div.ui-timepicker-oneLine .ui_tpicker_unit_hide:before{display:none}
assets/css/style-admin.css CHANGED
@@ -1,118 +1,148 @@
1
- h2.wpmm-title {
2
- background: url('../images/icon-48.png') no-repeat left center;
3
- line-height: 42px;
4
- margin-bottom: 30px;
5
- height: 48px;
6
- padding-left: 55px;
7
- }
8
-
9
- /* WRAP*/
10
- .wpmm-wrapper {
11
- display: table;
12
- width: 100%;
13
- }
14
-
15
- .wpmm-wrapper #content {
16
- min-width: 800px;
17
- }
18
-
19
- .wpmm-wrapper #sidebar {
20
- padding: 0 0 0 20px;
21
- width: 280px;
22
- }
23
-
24
- .wpmm-wrapper #sidebar .sidebar_box {
25
- background: none repeat scroll 0 0 #fff;
26
- border: 1px solid #e5e5e5;
27
- box-shadow: 0 1px 1px rgba(0, 0, 0, 0.04);
28
- min-width: 255px;
29
- line-height: 1;
30
- margin-bottom: 20px;
31
- padding: 0;
32
- }
33
-
34
- .wpmm-wrapper #sidebar .sidebar_box h3 {
35
- margin: 0;
36
- padding: 8px 12px;
37
- border-bottom: 1px solid #ececec;
38
- }
39
-
40
- .wpmm-wrapper #sidebar .sidebar_box .inside {
41
- margin: 6px 0 0;
42
- font-size: 13px;
43
- line-height: 1.4em;
44
- padding: 0 12px 12px;
45
- }
46
-
47
- .wpmm-wrapper .wrapper-cell {
48
- display: table-cell;
49
- }
50
-
51
- .wpmm-wrapper .hidden {
52
- display: none;
53
- }
54
-
55
- /* TABS */
56
- .nav-tab-wrapper {
57
- border-bottom: 1px solid #ccc;
58
- padding-bottom: 0;
59
- padding-left: 10px;
60
- }
61
-
62
- .nav-tab-wrapper a {
63
- font-size: 15px;
64
- font-weight: 700;
65
- line-height: 24px;
66
- padding: 6px 10px;
67
- }
68
-
69
- /* TABS CONTENT */
70
- .tabs-content {
71
- margin-top: 20px;
72
- padding-left: 10px;
73
- }
74
-
75
- .tabs-content .wp-color-result {
76
- margin-bottom: -2px;
77
- }
78
-
79
- .tabs-content ul.bg_list {
80
- float: left;
81
- }
82
-
83
- .tabs-content ul.bg_list li {
84
- float: left;
85
- margin-right: 7px;
86
- opacity: 0.4;
87
- }
88
-
89
- .tabs-content ul.bg_list li.active {
90
- opacity: 1;
91
- }
92
-
93
- .tabs-content ul.bg_list li input {
94
- display: none;
95
- }
96
-
97
- .tabs-content .countdown_details input {
98
- width: 70px;
99
- }
100
-
101
- .tabs-content .countdown_details .margin_left {
102
- margin-left: 30px;
103
- }
104
-
105
- /* SIDEBARS */
106
- #sidebar .info_box ul {
107
- margin-top: 10px;
108
- margin-bottom: -5px;
109
- }
110
-
111
- #sidebar .resources_box ul, #sidebar .themes_box ul {
112
- margin-top: 10px;
113
- margin-bottom: -15px;
114
- }
115
-
116
- #sidebar .resources_box li, #sidebar .themes_box li {
117
- margin-bottom: 10px;
118
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ h2.wpmm-title {
2
+ background: url('../images/icon-48.png') no-repeat left center;
3
+ line-height: 42px !important;
4
+ margin-bottom: 30px !important;
5
+ height: 48px;
6
+ padding-left: 55px !important;
7
+ }
8
+
9
+ /* WRAP*/
10
+ .wpmm-wrapper {
11
+ display: table;
12
+ width: 100%;
13
+ }
14
+
15
+ .wpmm-wrapper #content {
16
+ min-width: 800px;
17
+ }
18
+
19
+ .wpmm-wrapper #sidebar {
20
+ padding: 0 0 0 20px;
21
+ width: 280px;
22
+ }
23
+
24
+ .wpmm-wrapper #sidebar .sidebar_box {
25
+ background: none repeat scroll 0 0 #fff;
26
+ border: 1px solid #e5e5e5;
27
+ box-shadow: 0 1px 1px rgba(0, 0, 0, 0.04);
28
+ min-width: 255px;
29
+ line-height: 1;
30
+ margin-bottom: 20px;
31
+ padding: 0;
32
+ }
33
+
34
+ .wpmm-wrapper #sidebar .sidebar_box h3 {
35
+ margin: 0;
36
+ padding: 8px 12px;
37
+ border-bottom: 1px solid #ececec;
38
+ }
39
+
40
+ .wpmm-wrapper #sidebar .sidebar_box .inside {
41
+ margin: 6px 0 0;
42
+ font-size: 13px;
43
+ line-height: 1.4em;
44
+ padding: 0 12px 12px;
45
+ }
46
+
47
+ .wpmm-wrapper .wrapper-cell {
48
+ display: table-cell;
49
+ }
50
+
51
+ .wpmm-wrapper .hidden {
52
+ display: none;
53
+ }
54
+
55
+ /* TABS */
56
+ .nav-tab-wrapper {
57
+ border-bottom: 1px solid #ccc;
58
+ padding-bottom: 0;
59
+ padding-left: 10px;
60
+ }
61
+
62
+ .nav-tab-wrapper a {
63
+ font-size: 15px;
64
+ font-weight: 700;
65
+ line-height: 24px;
66
+ padding: 6px 10px;
67
+ }
68
+
69
+ /* TABS CONTENT */
70
+ .tabs-content {
71
+ margin-top: 20px;
72
+ padding-left: 10px;
73
+ }
74
+
75
+ .tabs-content .wp-color-result {
76
+ margin-bottom: -2px;
77
+ }
78
+
79
+ .tabs-content ul.bg_list {
80
+ float: left;
81
+ }
82
+
83
+ .tabs-content ul.bg_list li {
84
+ float: left;
85
+ margin-right: 7px;
86
+ opacity: 0.4;
87
+ }
88
+
89
+ .tabs-content ul.bg_list li.active {
90
+ opacity: 1;
91
+ }
92
+
93
+ .tabs-content ul.bg_list li input {
94
+ display: none;
95
+ }
96
+
97
+ .tabs-content .countdown_details input {
98
+ width: 70px;
99
+ }
100
+
101
+ .tabs-content .countdown_details .margin_left {
102
+ margin-left: 30px;
103
+ }
104
+
105
+ .tabs-content .wp-picker-holder {
106
+ position:absolute;
107
+ z-index:9999999;
108
+ }
109
+
110
+ /* SIDEBARS */
111
+ #sidebar .info_box ul {
112
+ margin-top: 10px;
113
+ margin-bottom: -5px;
114
+ }
115
+
116
+ #sidebar .resources_box ul, #sidebar .themes_box ul {
117
+ margin-top: 10px;
118
+ margin-bottom: -15px;
119
+ }
120
+
121
+ #sidebar .resources_box li, #sidebar .themes_box li {
122
+ margin-bottom: 10px;
123
+ }
124
+
125
+ /* CHOSEN.JS MULTISELECT */
126
+ .chosen-select {
127
+ width: 195px !important;
128
+ }
129
+
130
+ .chosen-container {
131
+ width: 195px !important;
132
+ }
133
+
134
+ .chosen-container-active .chosen-choices {
135
+ box-shadow: none !important;
136
+ background-image: none !important;
137
+ }
138
+
139
+ .chosen-container-multi .chosen-choices {
140
+ border: 1px solid #ddd !important;
141
+ box-shadow: 0 1px 2px rgba(0, 0, 0, 0.07) inset !important;
142
+ background-image: none !important;
143
+ }
144
+
145
+ .chosen-container .chosen-results li.highlighted {
146
+ background-color: #0074a2 !important;
147
+ background-image: none !important;
148
+ }
assets/css/style-admin.min.css ADDED
@@ -0,0 +1 @@
 
1
+ h2.wpmm-title{background:url(../images/icon-48.png) left center no-repeat;line-height:42px!important;margin-bottom:30px!important;height:48px;padding-left:55px!important}.wpmm-wrapper{display:table;width:100%}.wpmm-wrapper #content{min-width:800px}.wpmm-wrapper #sidebar{padding:0 0 0 20px;width:280px}.wpmm-wrapper #sidebar .sidebar_box{background:#fff;border:1px solid #e5e5e5;box-shadow:0 1px 1px rgba(0,0,0,.04);min-width:255px;line-height:1;margin-bottom:20px;padding:0}.wpmm-wrapper #sidebar .sidebar_box h3{margin:0;padding:8px 12px;border-bottom:1px solid #ececec}.wpmm-wrapper #sidebar .sidebar_box .inside{margin:6px 0 0;font-size:13px;line-height:1.4em;padding:0 12px 12px}.wpmm-wrapper .wrapper-cell{display:table-cell}.wpmm-wrapper .hidden{display:none}.nav-tab-wrapper{border-bottom:1px solid #ccc;padding-bottom:0;padding-left:10px}.nav-tab-wrapper a{font-size:15px;font-weight:700;line-height:24px;padding:6px 10px}.tabs-content{margin-top:20px;padding-left:10px}.tabs-content .wp-color-result{margin-bottom:-2px}.tabs-content ul.bg_list{float:left}.tabs-content ul.bg_list li{float:left;margin-right:7px;opacity:.4}.tabs-content ul.bg_list li.active{opacity:1}.tabs-content ul.bg_list li input{display:none}.tabs-content .countdown_details input{width:70px}.tabs-content .countdown_details .margin_left{margin-left:30px}.tabs-content .wp-picker-holder{position:absolute;z-index:9999999}#sidebar .info_box ul{margin-top:10px;margin-bottom:-5px}#sidebar .resources_box ul,#sidebar .themes_box ul{margin-top:10px;margin-bottom:-15px}#sidebar .resources_box li,#sidebar .themes_box li{margin-bottom:10px}.chosen-container,.chosen-select{width:195px!important}.chosen-container-active .chosen-choices{box-shadow:none!important;background-image:none!important}.chosen-container-multi .chosen-choices{border:1px solid #ddd!important;box-shadow:0 1px 2px rgba(0,0,0,.07) inset!important;background-image:none!important}.chosen-container .chosen-results li.highlighted{background-color:#0074a2!important;background-image:none!important}
assets/css/style.css CHANGED
@@ -1,462 +1,462 @@
1
- html, body, div, span, applet, object, iframe, h1, h2, h3, h4, h5, h6, p, blockquote, pre, a, abbr, acronym, address, big, cite, code, del, dfn, em, img, ins, kbd, q, s, samp, small, strike, strong, sub, sup, tt, var, b, u, i, center, dl, dt, dd, ol, ul, li, fieldset, form, label, legend, table, caption, tbody, tfoot, thead, tr, th, td, article, aside, canvas, details, embed, figure, figcaption, footer, header, hgroup, menu, nav, output, ruby, section, summary, time, mark, audio, video {
2
- margin: 0;
3
- padding: 0;
4
- border: 0;
5
- font-size: 100%;
6
- font: inherit;
7
- vertical-align: baseline;
8
- text-decoration: none;
9
- }
10
- article, aside, details, figcaption, figure, footer, header, hgroup, menu, nav, section {
11
- display: block;
12
- }
13
- body {
14
- line-height: 1;
15
- }
16
- ol, ul {
17
- list-style: none;
18
- }
19
- blockquote, q {
20
- display: block;
21
- width: 500px;
22
- margin: 0 auto;
23
- text-align: left;
24
- position: relative;
25
- font-style: italic;
26
- }
27
- blockquote:before, blockquote:after, q:before, q:after {
28
- content: '"';
29
- content: none;
30
- }
31
- input, button {
32
- -webkit-appearance: none;
33
- border-radius: 0;
34
- }
35
- table {
36
- border-collapse: collapse;
37
- border-spacing: 0;
38
- }
39
- em, i {
40
- font-style: italic;
41
- }
42
- del {
43
- text-decoration: line-through;
44
- }
45
- strong, b {
46
- font-weight: bold;
47
- }
48
- ol {
49
- width: 600px;
50
- margin: 0 auto;
51
- text-align: left;
52
- }
53
- ol li {
54
- list-style-type: decimal;
55
- }
56
- ul {
57
- width: 600px;
58
- margin: 0 auto;
59
- text-align: left;
60
- }
61
- ul li {
62
- list-style: disc;
63
- }
64
- a {
65
- color: inherit;
66
- text-decoration: underline;
67
- }
68
- body, html {
69
- min-height: 100%;
70
- /*height: 100%;*/
71
- }
72
- body {
73
- background-color: #fff;
74
- color: #1b1f23;
75
- font-family: Helvetica Neue, Arial, sans-serif;
76
- }
77
- .wrap {
78
- width: 605px;
79
- margin: 100px auto 0;
80
- text-align: center;
81
- }
82
- .wrap h1 {
83
- font-size: 30px;
84
- font-weight: 700;
85
- margin: 0 0 90px;
86
- }
87
- .wrap h2 {
88
- font-size: 24px;
89
- font-weight: 400;
90
- line-height: 45px;
91
- margin: 0 0 80px;
92
- }
93
- .wrap h3 {
94
- font-size: 24px;
95
- font-weight: 400px;
96
- margin: 0 0 45px;
97
- }
98
- .wrap .author_link {
99
- margin-top: 15px;
100
- color: #616161;
101
- margin: 0 0 50px;
102
- }
103
- .wrap .author_link a {
104
- color: #000;
105
- }
106
- /**
107
- * COUNTDOWN
108
- **/
109
-
110
- .wrap .countdown {
111
- margin: 0 0 85px;
112
- }
113
- .wrap .countdown span {
114
- font-size: 30px;
115
- }
116
- /**
117
- * SUBSCRIBE FORM
118
- **/
119
-
120
- .wrap form.subscribe_form {
121
- width: 465px;
122
- margin: 0 0 75px;
123
- display: inline-block;
124
- border: 3px solid #e0e0e0;
125
- box-sizing: border-box;
126
- }
127
- .wrap form.subscribe_form input {
128
- margin: 0;
129
- outline: 0;
130
- border: 0;
131
- float: left;
132
- font-size: 18px;
133
- padding: 20px 25px;
134
- box-sizing: content-box;
135
- }
136
- .wrap form.subscribe_form input[type="text"] {
137
- width: 245px;
138
- }
139
- .wrap form.subscribe_form input[type="submit"] {
140
- background: #000;
141
- color: #fff;
142
- float: right;
143
- cursor: pointer;
144
- padding: 20px 30px;
145
- border-left: 3px solid #e0e0e0;
146
- }
147
- .wrap form.subscribe_form input[type="submit"]:hover {
148
- background: #fff;
149
- color: #000;
150
- border-left: 3px solid #e0e0e0;
151
- }
152
- .wrap form.subscribe_form input[type="submit"]:active {
153
- background: #1e1e1e;
154
- color: #fff;
155
- }
156
- .wrap form.subscribe_form .error {
157
- color: red;
158
- }
159
- .wrap form.subscribe_form label.error {
160
- display: none !important;
161
- }
162
- /**
163
- * LOGIN FORM
164
- **/
165
-
166
- .wrap form.login_form {
167
- width: 100%;
168
- margin: 15px 0 0;
169
- }
170
- .wrap form.login_form input {
171
- display: inline-block;
172
- box-sizing: border-box;
173
- -moz-box-sizing: border-box;
174
- -webkit-box-sizing: border-box;
175
- border: 3px solid #E2E2E2;
176
- font-family: Helvetica Neue, Arial, sans-serif;
177
- font-size: 16px;
178
- margin: 0 10px 0 0;
179
- outline: 0;
180
- padding: 15px;
181
- }
182
- .wrap form.login_form input[type="submit"] {
183
- background: #000;
184
- color: #fff;
185
- margin: 0;
186
- border-color: #000;
187
- font-weight: bold;
188
- padding: 15px 30px;
189
- cursor: pointer;
190
- }
191
- .wrap form.login_form input[type="submit"]:active {
192
- position: relative;
193
- top: 1px;
194
- }
195
- /**
196
- * SOCIAL NETWORKS
197
- **/
198
-
199
- .wrap .social {
200
- margin: 0 0 70px;
201
- }
202
- .wrap .social a {
203
- width: 22px;
204
- height: 22px;
205
- margin: 0 0 20px 55px;
206
- background-image: url('../images/icn_sprite.png');
207
- background-repeat: no-repeat;
208
- display: inline-block;
209
- text-indent: -999em;
210
- }
211
- .wrap .social a:first-of-type {
212
- margin: 0 0 20px 0;
213
- }
214
- .wrap .social .git {
215
- background-position: 0 0;
216
- }
217
- .wrap .social .fb {
218
- background-position: -240px 0;
219
- }
220
- .wrap .social .tw {
221
- background-position: -162px 0px;
222
- }
223
- .wrap .social .rss {
224
- background-position: -402px 0;
225
- }
226
- .wrap .social .mail {
227
- background-position: -560px 0;
228
- }
229
- .wrap .social .pin {
230
- background-position: -322px 0;
231
- }
232
- .wrap .social .dribbble {
233
- background-position: -82px 0;
234
- }
235
- .wrap .social .gplus {
236
- background-position: -486px 0;
237
- }
238
- .wrap .social .linkedin {
239
- background-position: -633px 0;
240
- }
241
- /**
242
- * CONTACT FORM
243
- **/
244
-
245
- .wrap .contact_us {
246
- color: #000;
247
- border: 3px solid #000;
248
- font-size: 18px;
249
- padding: 15px 40px;
250
- display: inline-block;
251
- margin: 0 0 70px;
252
- }
253
- .wrap .contact_us:hover {
254
- background: #000;
255
- color: #fff;
256
- }
257
- .contact_us {
258
- text-decoration: none;
259
- }
260
- .contact {
261
- position: fixed;
262
- display: none;
263
- top: 0;
264
- bottom: 0;
265
- left: 0;
266
- right: 0;
267
- background: rgba(27, 31, 35, 0.95);
268
- }
269
- .contact label.error {
270
- color: red;
271
- float: left;
272
- font-size: 11px;
273
- padding-top: 10px;
274
- }
275
- .contact .form {
276
- width: 520px;
277
- text-align: center;
278
- padding: 40px;
279
- background: #f9f9f9;
280
- box-sizing: border-box;
281
- margin: 100px auto;
282
- transition: 0.2s transform ease-in-out;
283
- }
284
- .contact .form input, .contact .form textarea {
285
- padding: 15px 20px;
286
- margin: 0;
287
- outline: 0;
288
- width: 100%;
289
- background: #f9f9f9;
290
- border: 3px solid #e0e0e0;
291
- font-size: 18px;
292
- font-family: Helvetica Neue, Arial, sans-serif;
293
- box-sizing: border-box;
294
- resize: none;
295
- }
296
- .contact .form textarea {
297
- height: 175px;
298
- padding: 20px;
299
- }
300
- .contact .form input[type="text"]::-webkit-input-placeholder, .contact .form textarea::-webkit-input-placeholder {
301
- color: #dadada;
302
- }
303
- .contact .form input[type="text"]::-moz-input-placeholder, .contact .form textarea::-moz-input-placeholder {
304
- color: #dadada;
305
- }
306
- .contact .form input[type="text"]::-ms-input-placeholder, .contact .form textarea::-ms-input-placeholder {
307
- color: #dadada;
308
- }
309
- .contact .form .col {
310
- width: 205px;
311
- margin: 0 0 30px;
312
- display: inline-block;
313
- float: left;
314
- }
315
- .contact .form .col.last {
316
- float: right;
317
- }
318
- .contact .form .submit {
319
- margin: 30px 0 0;
320
- text-align: center;
321
- clear: left;
322
- }
323
- .contact .form .submit input {
324
- cursor: pointer;
325
- display: inline-block;
326
- background: #1b1f24;
327
- color: #fff;
328
- border: 0;
329
- padding: 20px 45px;
330
- width: auto;
331
- }
332
- /*======= MOVE ANIMATION =======*/
333
-
334
- .contact .move_top {
335
- transform: perspective(1000px) translateY(-200px);
336
- }
337
- .contact .move_bottom {
338
- transform: perspective(1000px) translateY(0);
339
- }
340
- /*======= ZOOM ANIMATION =======*/
341
-
342
- .contact .zoom {
343
- transform: perspective(1000px) scale(0.5);
344
- transition: 0.3s transform ease-in-out;
345
- }
346
- .contact .zoomed {
347
- transform: perspective(1000px) scale(1);
348
- }
349
- /*======= FOLD ANIMATION =======*/
350
-
351
- .contact .fold {
352
- transform: perspective(1000px) rotateY(90deg);
353
- }
354
- .contact .unfold {
355
- transform: perspective(1000px) rotateY(0);
356
- }
357
- /**
358
- * EDITS WHEN HAVE BACKGROUND CLASS
359
- **/
360
-
361
- .background {
362
- background: url('../images/backgrounds/bg1.jpg') no-repeat center top fixed;
363
- background-size: cover;
364
- }
365
- .background .countdown span {
366
- color: #fff;
367
- }
368
- .background form.subscribe_form input[type="submit"] {
369
- color: #000;
370
- background: #fff;
371
- }
372
- .background form.subscribe_form input[type="text"] {
373
- background: transparent;
374
- color: #fff;
375
- }
376
- .background form.subscribe_form input.error[type="text"] {
377
- color: red;
378
- }
379
- .background form.subscribe_form input[type="text"]::-webkit-input-placeholder {
380
- color: #fff;
381
- }
382
- .background form.subscribe_form input[type="text"]::-moz-input-placeholder {
383
- color: #fff;
384
- }
385
- .background form.subscribe_form input[type="text"]::-ms-input-placeholder {
386
- color: #fff;
387
- }
388
- .background .contact_us {
389
- color: #fff;
390
- border-color: #fff;
391
- }
392
- /**
393
- * MEDIA QUERIES (RESPONSIVE)
394
- **/
395
-
396
- @media only screen and (max-width: 700px) {
397
- .wrap form.login_form {
398
- width: 80%;
399
- margin: 15px auto 0;
400
- }
401
- .wrap form.login_form input {
402
- width: 49%;
403
- margin: 0 2% 0 0;
404
- }
405
- .wrap form.login_form input[type="password"] {
406
- margin: 0;
407
- }
408
- .wrap form.login_form input[type="submit"] {
409
- width: 100%;
410
- margin: 15px 0 0;
411
- }
412
- }
413
- @media only screen and (max-width: 550px) {
414
- .wrap {
415
- width: 90%;
416
- margin: 50px auto 0;
417
- }
418
- .wrap h1 {
419
- margin: 0 0 50px;
420
- }
421
- .wrap h2, .wrap h3 {
422
- font-size: 18px;
423
- }
424
- .wrap form {
425
- box-sizing: border-box;
426
- width: 100%;
427
- }
428
- .wrap form input {
429
- box-sizing: border-box;
430
- }
431
- .wrap form input[type="text"], .wrap form input[type="submit"] {
432
- width: 100%;
433
- }
434
- .wrap .contact_us {
435
- margin: 0 0 50px;
436
- }
437
- .contact .form {
438
- width: 90%;
439
- }
440
- .contact .form p.col {
441
- width: 100%;
442
- }
443
- .contact .form input[type="submit"] {
444
- width: 100%;
445
- }
446
- .wrap form.login_form {
447
- width: 90%;
448
- }
449
- .wrap form.login_form input {
450
- width: 100%;
451
- margin: 0 0 10px 0;
452
- }
453
- .wrap form.login_form input[type="submit"] {
454
- margin: 10px 0 0;
455
- }
456
- ul, ol {
457
- width: 80%;
458
- }
459
- blockquote, q {
460
- width: 70%;
461
- }
462
- }
1
+ html, body, div, span, applet, object, iframe, h1, h2, h3, h4, h5, h6, p, blockquote, pre, a, abbr, acronym, address, big, cite, code, del, dfn, em, img, ins, kbd, q, s, samp, small, strike, strong, sub, sup, tt, var, b, u, i, center, dl, dt, dd, ol, ul, li, fieldset, form, label, legend, table, caption, tbody, tfoot, thead, tr, th, td, article, aside, canvas, details, embed, figure, figcaption, footer, header, hgroup, menu, nav, output, ruby, section, summary, time, mark, audio, video {
2
+ margin: 0;
3
+ padding: 0;
4
+ border: 0;
5
+ font-size: 100%;
6
+ font: inherit;
7
+ vertical-align: baseline;
8
+ text-decoration: none;
9
+ }
10
+ article, aside, details, figcaption, figure, footer, header, hgroup, menu, nav, section {
11
+ display: block;
12
+ }
13
+ body {
14
+ line-height: 1;
15
+ }
16
+ ol, ul {
17
+ list-style: none;
18
+ }
19
+ blockquote, q {
20
+ display: block;
21
+ width: 500px;
22
+ margin: 0 auto;
23
+ text-align: left;
24
+ position: relative;
25
+ font-style: italic;
26
+ }
27
+ blockquote:before, blockquote:after, q:before, q:after {
28
+ content: '"';
29
+ content: none;
30
+ }
31
+ input, button {
32
+ -webkit-appearance: none;
33
+ border-radius: 0;
34
+ }
35
+ table {
36
+ border-collapse: collapse;
37
+ border-spacing: 0;
38
+ }
39
+ em, i {
40
+ font-style: italic;
41
+ }
42
+ del {
43
+ text-decoration: line-through;
44
+ }
45
+ strong, b {
46
+ font-weight: bold;
47
+ }
48
+ ol {
49
+ width: 600px;
50
+ margin: 0 auto;
51
+ text-align: left;
52
+ }
53
+ ol li {
54
+ list-style-type: decimal;
55
+ }
56
+ ul {
57
+ width: 600px;
58
+ margin: 0 auto;
59
+ text-align: left;
60
+ }
61
+ ul li {
62
+ list-style: disc;
63
+ }
64
+ a {
65
+ color: inherit;
66
+ text-decoration: underline;
67
+ }
68
+ body, html {
69
+ min-height: 100%;
70
+ /*height: 100%;*/
71
+ }
72
+ body {
73
+ background-color: #fff;
74
+ color: #1b1f23;
75
+ font-family: Helvetica Neue, Arial, sans-serif;
76
+ }
77
+ .wrap {
78
+ width: 605px;
79
+ margin: 100px auto 0;
80
+ text-align: center;
81
+ }
82
+ .wrap h1 {
83
+ font-size: 30px;
84
+ font-weight: 700;
85
+ margin: 0 0 90px;
86
+ }
87
+ .wrap h2 {
88
+ font-size: 24px;
89
+ font-weight: 400;
90
+ line-height: 45px;
91
+ margin: 0 0 80px;
92
+ }
93
+ .wrap h3 {
94
+ font-size: 24px;
95
+ font-weight: 400px;
96
+ margin: 0 0 45px;
97
+ }
98
+ .wrap .author_link {
99
+ margin-top: 15px;
100
+ color: #616161;
101
+ margin: 0 0 50px;
102
+ }
103
+ .wrap .author_link a {
104
+ color: #000;
105
+ }
106
+ /**
107
+ * COUNTDOWN
108
+ **/
109
+
110
+ .wrap .countdown {
111
+ margin: 0 0 85px;
112
+ }
113
+ .wrap .countdown span {
114
+ font-size: 30px;
115
+ }
116
+ /**
117
+ * SUBSCRIBE FORM
118
+ **/
119
+
120
+ .wrap form.subscribe_form {
121
+ width: 465px;
122
+ margin: 0 0 75px;
123
+ display: inline-block;
124
+ border: 3px solid #e0e0e0;
125
+ box-sizing: border-box;
126
+ }
127
+ .wrap form.subscribe_form input {
128
+ margin: 0;
129
+ outline: 0;
130
+ border: 0;
131
+ float: left;
132
+ font-size: 18px;
133
+ padding: 20px 25px;
134
+ box-sizing: content-box;
135
+ }
136
+ .wrap form.subscribe_form input[type="text"] {
137
+ width: 245px;
138
+ }
139
+ .wrap form.subscribe_form input[type="submit"] {
140
+ background: #000;
141
+ color: #fff;
142
+ float: right;
143
+ cursor: pointer;
144
+ padding: 20px 30px;
145
+ border-left: 3px solid #e0e0e0;
146
+ }
147
+ .wrap form.subscribe_form input[type="submit"]:hover {
148
+ background: #fff;
149
+ color: #000;
150
+ border-left: 3px solid #e0e0e0;
151
+ }
152
+ .wrap form.subscribe_form input[type="submit"]:active {
153
+ background: #1e1e1e;
154
+ color: #fff;
155
+ }
156
+ .wrap form.subscribe_form .error {
157
+ color: red;
158
+ }
159
+ .wrap form.subscribe_form label.error {
160
+ display: none !important;
161
+ }
162
+ /**
163
+ * LOGIN FORM
164
+ **/
165
+
166
+ .wrap form.login_form {
167
+ width: 100%;
168
+ margin: 15px 0 0;
169
+ }
170
+ .wrap form.login_form input {
171
+ display: inline-block;
172
+ box-sizing: border-box;
173
+ -moz-box-sizing: border-box;
174
+ -webkit-box-sizing: border-box;
175
+ border: 3px solid #E2E2E2;
176
+ font-family: Helvetica Neue, Arial, sans-serif;
177
+ font-size: 16px;
178
+ margin: 0 10px 0 0;
179
+ outline: 0;
180
+ padding: 15px;
181
+ }
182
+ .wrap form.login_form input[type="submit"] {
183
+ background: #000;
184
+ color: #fff;
185
+ margin: 0;
186
+ border-color: #000;
187
+ font-weight: bold;
188
+ padding: 15px 30px;
189
+ cursor: pointer;
190
+ }
191
+ .wrap form.login_form input[type="submit"]:active {
192
+ position: relative;
193
+ top: 1px;
194
+ }
195
+ /**
196
+ * SOCIAL NETWORKS
197
+ **/
198
+
199
+ .wrap .social {
200
+ margin: 0 0 70px;
201
+ }
202
+ .wrap .social a {
203
+ width: 22px;
204
+ height: 22px;
205
+ margin: 0 0 20px 55px;
206
+ background-image: url('../images/icn_sprite.png');
207
+ background-repeat: no-repeat;
208
+ display: inline-block;
209
+ text-indent: -999em;
210
+ }
211
+ .wrap .social a:first-of-type {
212
+ margin: 0 0 20px 0;
213
+ }
214
+ .wrap .social .git {
215
+ background-position: 0 0;
216
+ }
217
+ .wrap .social .fb {
218
+ background-position: -240px 0;
219
+ }
220
+ .wrap .social .tw {
221
+ background-position: -162px 0px;
222
+ }
223
+ .wrap .social .rss {
224
+ background-position: -402px 0;
225
+ }
226
+ .wrap .social .mail {
227
+ background-position: -560px 0;
228
+ }
229
+ .wrap .social .pin {
230
+ background-position: -322px 0;
231
+ }
232
+ .wrap .social .dribbble {
233
+ background-position: -82px 0;
234
+ }
235
+ .wrap .social .gplus {
236
+ background-position: -486px 0;
237
+ }
238
+ .wrap .social .linkedin {
239
+ background-position: -633px 0;
240
+ }
241
+ /**
242
+ * CONTACT FORM
243
+ **/
244
+
245
+ .wrap .contact_us {
246
+ color: #000;
247
+ border: 3px solid #000;
248
+ font-size: 18px;
249
+ padding: 15px 40px;
250
+ display: inline-block;
251
+ margin: 0 0 70px;
252
+ }
253
+ .wrap .contact_us:hover {
254
+ background: #000;
255
+ color: #fff;
256
+ }
257
+ .contact_us {
258
+ text-decoration: none;
259
+ }
260
+ .contact {
261
+ position: fixed;
262
+ display: none;
263
+ top: 0;
264
+ bottom: 0;
265
+ left: 0;
266
+ right: 0;
267
+ background: rgba(27, 31, 35, 0.95);
268
+ }
269
+ .contact label.error {
270
+ color: red;
271
+ float: left;
272
+ font-size: 11px;
273
+ padding-top: 10px;
274
+ }
275
+ .contact .form {
276
+ width: 520px;
277
+ text-align: center;
278
+ padding: 40px;
279
+ background: #f9f9f9;
280
+ box-sizing: border-box;
281
+ margin: 100px auto;
282
+ transition: 0.2s transform ease-in-out;
283
+ }
284
+ .contact .form input, .contact .form textarea {
285
+ padding: 15px 20px;
286
+ margin: 0;
287
+ outline: 0;
288
+ width: 100%;
289
+ background: #f9f9f9;
290
+ border: 3px solid #e0e0e0;
291
+ font-size: 18px;
292
+ font-family: Helvetica Neue, Arial, sans-serif;
293
+ box-sizing: border-box;
294
+ resize: none;
295
+ }
296
+ .contact .form textarea {
297
+ height: 175px;
298
+ padding: 20px;
299
+ }
300
+ .contact .form input[type="text"]::-webkit-input-placeholder, .contact .form textarea::-webkit-input-placeholder {
301
+ color: #dadada;
302
+ }
303
+ .contact .form input[type="text"]::-moz-input-placeholder, .contact .form textarea::-moz-input-placeholder {
304
+ color: #dadada;
305
+ }
306
+ .contact .form input[type="text"]::-ms-input-placeholder, .contact .form textarea::-ms-input-placeholder {
307
+ color: #dadada;
308
+ }
309
+ .contact .form .col {
310
+ width: 205px;
311
+ margin: 0 0 30px;
312
+ display: inline-block;
313
+ float: left;
314
+ }
315
+ .contact .form .col.last {
316
+ float: right;
317
+ }
318
+ .contact .form .submit {
319
+ margin: 30px 0 0;
320
+ text-align: center;
321
+ clear: left;
322
+ }
323
+ .contact .form .submit input {
324
+ cursor: pointer;
325
+ display: inline-block;
326
+ background: #1b1f24;
327
+ color: #fff;
328
+ border: 0;
329
+ padding: 20px 45px;
330
+ width: auto;
331
+ }
332
+ /*======= MOVE ANIMATION =======*/
333
+
334
+ .contact .move_top {
335
+ transform: perspective(1000px) translateY(-200px);
336
+ }
337
+ .contact .move_bottom {
338
+ transform: perspective(1000px) translateY(0);
339
+ }
340
+ /*======= ZOOM ANIMATION =======*/
341
+
342
+ .contact .zoom {
343
+ transform: perspective(1000px) scale(0.5);
344
+ transition: 0.3s transform ease-in-out;
345
+ }
346
+ .contact .zoomed {
347
+ transform: perspective(1000px) scale(1);
348
+ }
349
+ /*======= FOLD ANIMATION =======*/
350
+
351
+ .contact .fold {
352
+ transform: perspective(1000px) rotateY(90deg);
353
+ }
354
+ .contact .unfold {
355
+ transform: perspective(1000px) rotateY(0);
356
+ }
357
+ /**
358
+ * EDITS WHEN HAVE BACKGROUND CLASS
359
+ **/
360
+
361
+ .background {
362
+ background: url('../images/backgrounds/bg1.jpg') no-repeat center top fixed;
363
+ background-size: cover;
364
+ }
365
+ .background .countdown span {
366
+ color: #fff;
367
+ }
368
+ .background form.subscribe_form input[type="submit"] {
369
+ color: #000;
370
+ background: #fff;
371
+ }
372
+ .background form.subscribe_form input[type="text"] {
373
+ background: transparent;
374
+ color: #fff;
375
+ }
376
+ .background form.subscribe_form input.error[type="text"] {
377
+ color: red;
378
+ }
379
+ .background form.subscribe_form input[type="text"]::-webkit-input-placeholder {
380
+ color: #fff;
381
+ }
382
+ .background form.subscribe_form input[type="text"]::-moz-input-placeholder {
383
+ color: #fff;
384
+ }
385
+ .background form.subscribe_form input[type="text"]::-ms-input-placeholder {
386
+ color: #fff;
387
+ }
388
+ .background .contact_us {
389
+ color: #fff;
390
+ border-color: #fff;
391
+ }
392
+ /**
393
+ * MEDIA QUERIES (RESPONSIVE)
394
+ **/
395
+
396
+ @media only screen and (max-width: 700px) {
397
+ .wrap form.login_form {
398
+ width: 80%;
399
+ margin: 15px auto 0;
400
+ }
401
+ .wrap form.login_form input {
402
+ width: 49%;
403
+ margin: 0 2% 0 0;
404
+ }
405
+ .wrap form.login_form input[type="password"] {
406
+ margin: 0;
407
+ }
408
+ .wrap form.login_form input[type="submit"] {
409
+ width: 100%;
410
+ margin: 15px 0 0;
411
+ }
412
+ }
413
+ @media only screen and (max-width: 550px) {
414
+ .wrap {
415
+ width: 90%;
416
+ margin: 50px auto 0;
417
+ }
418
+ .wrap h1 {
419
+ margin: 0 0 50px;
420
+ }
421
+ .wrap h2, .wrap h3 {
422
+ font-size: 18px;
423
+ }
424
+ .wrap form.subscribe_form { // .wrap form
425
+ box-sizing: border-box;
426
+ width: 100%;
427
+ }
428
+ .wrap form.subscribe_form input { // .wrap form
429
+ box-sizing: border-box;
430
+ }
431
+ .wrap form input[type="text"], .wrap form input[type="submit"] {
432
+ width: 100%;
433
+ }
434
+ .wrap .contact_us {
435
+ margin: 0 0 50px;
436
+ }
437
+ .contact .form {
438
+ width: 90%;
439
+ }
440
+ .contact .form p.col {
441
+ width: 100%;
442
+ }
443
+ .contact .form input[type="submit"] {
444
+ width: 100%;
445
+ }
446
+ .wrap form.login_form {
447
+ width: 90%;
448
+ }
449
+ .wrap form.login_form input {
450
+ width: 100%;
451
+ margin: 0 0 10px 0;
452
+ }
453
+ .wrap form.login_form input[type="submit"] {
454
+ margin: 10px 0 0;
455
+ }
456
+ ul, ol {
457
+ width: 80%;
458
+ }
459
+ blockquote, q {
460
+ width: 70%;
461
+ }
462
+ }
assets/css/style.min.css ADDED
@@ -0,0 +1 @@
 
1
+ a,abbr,acronym,address,applet,article,aside,audio,b,big,blockquote,body,canvas,caption,center,cite,code,dd,del,details,dfn,div,dl,dt,em,embed,fieldset,figcaption,figure,footer,form,h1,h2,h3,h4,h5,h6,header,hgroup,html,i,iframe,img,ins,kbd,label,legend,li,mark,menu,nav,object,ol,output,p,pre,q,ruby,s,samp,section,small,span,strike,strong,sub,summary,sup,table,tbody,td,tfoot,th,thead,time,tr,tt,u,ul,var,video{margin:0;padding:0;border:0;font:inherit;vertical-align:baseline;text-decoration:none}article,aside,details,figcaption,figure,footer,header,hgroup,menu,nav,section{display:block}body{line-height:1}ol,ul{list-style:none}blockquote,q{display:block;width:500px;margin:0 auto;text-align:left;position:relative;font-style:italic}blockquote:after,blockquote:before,q:after,q:before{content:'"';content:none}button,input{-webkit-appearance:none;border-radius:0}table{border-collapse:collapse;border-spacing:0}em,i{font-style:italic}del{text-decoration:line-through}b,strong{font-weight:700}ol{width:600px;margin:0 auto;text-align:left}ol li{list-style-type:decimal}ul{width:600px;margin:0 auto;text-align:left}ul li{list-style:disc}a{color:inherit;text-decoration:underline}body,html{min-height:100%}body{background-color:#fff;color:#1b1f23;font-family:Helvetica Neue,Arial,sans-serif}.wrap{width:605px;margin:100px auto 0;text-align:center}.wrap h1{font-size:30px;font-weight:700;margin:0 0 90px}.wrap h2{font-size:24px;font-weight:400;line-height:45px;margin:0 0 80px}.wrap h3{font-size:24px;font-weight:400px;margin:0 0 45px}.wrap .author_link{color:#616161;margin:0 0 50px}.wrap .author_link a{color:#000}.wrap .countdown{margin:0 0 85px}.wrap .countdown span{font-size:30px}.wrap form.subscribe_form{width:465px;margin:0 0 75px;display:inline-block;border:3px solid #e0e0e0;box-sizing:border-box}.wrap form.subscribe_form input{margin:0;outline:0;border:0;float:left;font-size:18px;padding:20px 25px;box-sizing:content-box}.wrap form.subscribe_form input[type=text]{width:245px}.wrap form.subscribe_form input[type=submit]{background:#000;color:#fff;float:right;cursor:pointer;padding:20px 30px;border-left:3px solid #e0e0e0}.wrap form.subscribe_form input[type=submit]:hover{background:#fff;color:#000;border-left:3px solid #e0e0e0}.wrap form.subscribe_form input[type=submit]:active{background:#1e1e1e;color:#fff}.wrap form.subscribe_form .error{color:red}.wrap form.subscribe_form label.error{display:none!important}.wrap form.login_form{width:100%;margin:15px 0 0}.wrap form.login_form input{display:inline-block;box-sizing:border-box;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;border:3px solid #E2E2E2;font-family:Helvetica Neue,Arial,sans-serif;font-size:16px;margin:0 10px 0 0;outline:0;padding:15px}.wrap form.login_form input[type=submit]{background:#000;color:#fff;margin:0;border-color:#000;font-weight:700;padding:15px 30px;cursor:pointer}.wrap form.login_form input[type=submit]:active{position:relative;top:1px}.wrap .social{margin:0 0 70px}.wrap .social a{width:22px;height:22px;margin:0 0 20px 55px;background-image:url(../images/icn_sprite.png);background-repeat:no-repeat;display:inline-block;text-indent:-999em}.wrap .social a:first-of-type{margin:0 0 20px}.wrap .social .git{background-position:0 0}.wrap .social .fb{background-position:-240px 0}.wrap .social .tw{background-position:-162px 0}.wrap .social .rss{background-position:-402px 0}.wrap .social .mail{background-position:-560px 0}.wrap .social .pin{background-position:-322px 0}.wrap .social .dribbble{background-position:-82px 0}.wrap .social .gplus{background-position:-486px 0}.wrap .social .linkedin{background-position:-633px 0}.wrap .contact_us{color:#000;border:3px solid #000;font-size:18px;padding:15px 40px;display:inline-block;margin:0 0 70px}.wrap .contact_us:hover{background:#000;color:#fff}.contact_us{text-decoration:none}.contact{position:fixed;display:none;top:0;bottom:0;left:0;right:0;background:rgba(27,31,35,.95)}.contact label.error{color:red;float:left;font-size:11px;padding-top:10px}.contact .form{width:520px;text-align:center;padding:40px;background:#f9f9f9;box-sizing:border-box;margin:100px auto;transition:.2s transform ease-in-out}.contact .form input,.contact .form textarea{padding:15px 20px;margin:0;outline:0;width:100%;background:#f9f9f9;border:3px solid #e0e0e0;font-size:18px;font-family:Helvetica Neue,Arial,sans-serif;box-sizing:border-box;resize:none}.contact .form textarea{height:175px;padding:20px}.contact .form input[type=text]::-webkit-input-placeholder,.contact .form textarea::-webkit-input-placeholder{color:#dadada}.contact .form input[type=text]::-moz-input-placeholder,.contact .form textarea::-moz-input-placeholder{color:#dadada}.contact .form input[type=text]::-ms-input-placeholder,.contact .form textarea::-ms-input-placeholder{color:#dadada}.contact .form .col{width:205px;margin:0 0 30px;display:inline-block;float:left}.contact .form .col.last{float:right}.contact .form .submit{margin:30px 0 0;text-align:center;clear:left}.contact .form .submit input{cursor:pointer;display:inline-block;background:#1b1f24;color:#fff;border:0;padding:20px 45px;width:auto}.contact .move_top{transform:perspective(1000px) translateY(-200px)}.contact .move_bottom{transform:perspective(1000px) translateY(0)}.contact .zoom{transform:perspective(1000px) scale(0.5);transition:.3s transform ease-in-out}.contact .zoomed{transform:perspective(1000px) scale(1)}.contact .fold{transform:perspective(1000px) rotateY(90deg)}.contact .unfold{transform:perspective(1000px) rotateY(0)}.background{background:url(../images/backgrounds/bg1.jpg) center top/cover no-repeat fixed}.background .countdown span{color:#fff}.background form.subscribe_form input[type=submit]{color:#000;background:#fff}.background form.subscribe_form input[type=text]{background:0 0;color:#fff}.background form.subscribe_form input.error[type=text]{color:red}.background form.subscribe_form input[type=text]::-webkit-input-placeholder{color:#fff}.background form.subscribe_form input[type=text]::-moz-input-placeholder{color:#fff}.background form.subscribe_form input[type=text]::-ms-input-placeholder{color:#fff}.background .contact_us{color:#fff;border-color:#fff}@media only screen and (max-width:700px){.wrap form.login_form{width:80%;margin:15px auto 0}.wrap form.login_form input{width:49%;margin:0 2% 0 0}.wrap form.login_form input[type=password]{margin:0}.wrap form.login_form input[type=submit]{width:100%;margin:15px 0 0}}@media only screen and (max-width:550px){.wrap{width:90%;margin:50px auto 0}.wrap h1{margin:0 0 50px}.wrap h2,.wrap h3{font-size:18px}.wrap form.subscribe_form{// .wrap form box-sizing:border-box;width:100%}.wrap form.subscribe_form input{// .wrap form box-sizing:border-box}.wrap form input[type=submit],.wrap form input[type=text]{width:100%}.wrap .contact_us{margin:0 0 50px}.contact .form{width:90%}.contact .form input[type=submit],.contact .form p.col{width:100%}.wrap form.login_form{width:90%}.wrap form.login_form input{width:100%;margin:0 0 10px}.wrap form.login_form input[type=submit]{margin:10px 0 0}ol,ul{width:80%}blockquote,q{width:70%}}
assets/images/chosen-sprite.png ADDED
Binary file
assets/images/chosen-sprite@2x.png ADDED
Binary file
assets/images/index.php CHANGED
@@ -1,2 +1,2 @@
1
- <?php
2
- // Silence is golden.
1
+ <?php
2
+ // Silence is golden.
assets/images/resources/ayoshop.jpg DELETED
Binary file
assets/images/resources/flatui.jpg DELETED
Binary file
assets/images/resources/linecons.jpg DELETED
Binary file
assets/images/resources/startup-wordpress.jpg DELETED
Binary file
assets/index.php CHANGED
@@ -1,2 +1,2 @@
1
- <?php
2
- // Silence is golden.
1
+ <?php
2
+ // Silence is golden.
assets/js/chosen.jquery.js ADDED
@@ -0,0 +1,1284 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /*!
2
+ Chosen, a Select Box Enhancer for jQuery and Prototype
3
+ by Patrick Filler for Harvest, http://getharvest.com
4
+
5
+ Version 1.5.1
6
+ Full source at https://github.com/harvesthq/chosen
7
+ Copyright (c) 2011-2016 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
+ (function() {
14
+ var $, AbstractChosen, Chosen, SelectParser, _ref,
15
+ __hasProp = {}.hasOwnProperty,
16
+ __extends = function(child, parent) { for (var key in parent) { if (__hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; };
17
+
18
+ SelectParser = (function() {
19
+ function SelectParser() {
20
+ this.options_index = 0;
21
+ this.parsed = [];
22
+ }
23
+
24
+ SelectParser.prototype.add_node = function(child) {
25
+ if (child.nodeName.toUpperCase() === "OPTGROUP") {
26
+ return this.add_group(child);
27
+ } else {
28
+ return this.add_option(child);
29
+ }
30
+ };
31
+
32
+ SelectParser.prototype.add_group = function(group) {
33
+ var group_position, option, _i, _len, _ref, _results;
34
+ group_position = this.parsed.length;
35
+ this.parsed.push({
36
+ array_index: group_position,
37
+ group: true,
38
+ label: this.escapeExpression(group.label),
39
+ title: group.title ? group.title : void 0,
40
+ children: 0,
41
+ disabled: group.disabled,
42
+ classes: group.className
43
+ });
44
+ _ref = group.childNodes;
45
+ _results = [];
46
+ for (_i = 0, _len = _ref.length; _i < _len; _i++) {
47
+ option = _ref[_i];
48
+ _results.push(this.add_option(option, group_position, group.disabled));
49
+ }
50
+ return _results;
51
+ };
52
+
53
+ SelectParser.prototype.add_option = function(option, group_position, group_disabled) {
54
+ if (option.nodeName.toUpperCase() === "OPTION") {
55
+ if (option.text !== "") {
56
+ if (group_position != null) {
57
+ this.parsed[group_position].children += 1;
58
+ }
59
+ this.parsed.push({
60
+ array_index: this.parsed.length,
61
+ options_index: this.options_index,
62
+ value: option.value,
63
+ text: option.text,
64
+ html: option.innerHTML,
65
+ title: option.title ? option.title : void 0,
66
+ selected: option.selected,
67
+ disabled: group_disabled === true ? group_disabled : option.disabled,
68
+ group_array_index: group_position,
69
+ group_label: group_position != null ? this.parsed[group_position].label : null,
70
+ classes: option.className,
71
+ style: option.style.cssText
72
+ });
73
+ } else {
74
+ this.parsed.push({
75
+ array_index: this.parsed.length,
76
+ options_index: this.options_index,
77
+ empty: true
78
+ });
79
+ }
80
+ return this.options_index += 1;
81
+ }
82
+ };
83
+
84
+ SelectParser.prototype.escapeExpression = function(text) {
85
+ var map, unsafe_chars;
86
+ if ((text == null) || text === false) {
87
+ return "";
88
+ }
89
+ if (!/[\&\<\>\"\'\`]/.test(text)) {
90
+ return text;
91
+ }
92
+ map = {
93
+ "<": "&lt;",
94
+ ">": "&gt;",
95
+ '"': "&quot;",
96
+ "'": "&#x27;",
97
+ "`": "&#x60;"
98
+ };
99
+ unsafe_chars = /&(?!\w+;)|[\<\>\"\'\`]/g;
100
+ return text.replace(unsafe_chars, function(chr) {
101
+ return map[chr] || "&amp;";
102
+ });
103
+ };
104
+
105
+ return SelectParser;
106
+
107
+ })();
108
+
109
+ SelectParser.select_to_array = function(select) {
110
+ var child, parser, _i, _len, _ref;
111
+ parser = new SelectParser();
112
+ _ref = select.childNodes;
113
+ for (_i = 0, _len = _ref.length; _i < _len; _i++) {
114
+ child = _ref[_i];
115
+ parser.add_node(child);
116
+ }
117
+ return parser.parsed;
118
+ };
119
+
120
+ AbstractChosen = (function() {
121
+ function AbstractChosen(form_field, options) {
122
+ this.form_field = form_field;
123
+ this.options = options != null ? options : {};
124
+ if (!AbstractChosen.browser_is_supported()) {
125
+ return;
126
+ }
127
+ this.is_multiple = this.form_field.multiple;
128
+ this.set_default_text();
129
+ this.set_default_values();
130
+ this.setup();
131
+ this.set_up_html();
132
+ this.register_observers();
133
+ this.on_ready();
134
+ }
135
+
136
+ AbstractChosen.prototype.set_default_values = function() {
137
+ var _this = this;
138
+ this.click_test_action = function(evt) {
139
+ return _this.test_active_click(evt);
140
+ };
141
+ this.activate_action = function(evt) {
142
+ return _this.activate_field(evt);
143
+ };
144
+ this.active_field = false;
145
+ this.mouse_on_container = false;
146
+ this.results_showing = false;
147
+ this.result_highlighted = null;
148
+ this.allow_single_deselect = (this.options.allow_single_deselect != null) && (this.form_field.options[0] != null) && this.form_field.options[0].text === "" ? this.options.allow_single_deselect : false;
149
+ this.disable_search_threshold = this.options.disable_search_threshold || 0;
150
+ this.disable_search = this.options.disable_search || false;
151
+ this.enable_split_word_search = this.options.enable_split_word_search != null ? this.options.enable_split_word_search : true;
152
+ this.group_search = this.options.group_search != null ? this.options.group_search : true;
153
+ this.search_contains = this.options.search_contains || false;
154
+ this.single_backstroke_delete = this.options.single_backstroke_delete != null ? this.options.single_backstroke_delete : true;
155
+ this.max_selected_options = this.options.max_selected_options || Infinity;
156
+ this.inherit_select_classes = this.options.inherit_select_classes || false;
157
+ this.display_selected_options = this.options.display_selected_options != null ? this.options.display_selected_options : true;
158
+ this.display_disabled_options = this.options.display_disabled_options != null ? this.options.display_disabled_options : true;
159
+ this.include_group_label_in_selected = this.options.include_group_label_in_selected || false;
160
+ return this.max_shown_results = this.options.max_shown_results || Number.POSITIVE_INFINITY;
161
+ };
162
+
163
+ AbstractChosen.prototype.set_default_text = function() {
164
+ if (this.form_field.getAttribute("data-placeholder")) {
165
+ this.default_text = this.form_field.getAttribute("data-placeholder");
166
+ } else if (this.is_multiple) {
167
+ this.default_text = this.options.placeholder_text_multiple || this.options.placeholder_text || AbstractChosen.default_multiple_text;
168
+ } else {
169
+ this.default_text = this.options.placeholder_text_single || this.options.placeholder_text || AbstractChosen.default_single_text;
170
+ }
171
+ return this.results_none_found = this.form_field.getAttribute("data-no_results_text") || this.options.no_results_text || AbstractChosen.default_no_result_text;
172
+ };
173
+
174
+ AbstractChosen.prototype.choice_label = function(item) {
175
+ if (this.include_group_label_in_selected && (item.group_label != null)) {
176
+ return "<b class='group-name'>" + item.group_label + "</b>" + item.html;
177
+ } else {
178
+ return item.html;
179
+ }
180
+ };
181
+
182
+ AbstractChosen.prototype.mouse_enter = function() {
183
+ return this.mouse_on_container = true;
184
+ };
185
+
186
+ AbstractChosen.prototype.mouse_leave = function() {
187
+ return this.mouse_on_container = false;
188
+ };
189
+
190
+ AbstractChosen.prototype.input_focus = function(evt) {
191
+ var _this = this;
192
+ if (this.is_multiple) {
193
+ if (!this.active_field) {
194
+ return setTimeout((function() {
195
+ return _this.container_mousedown();
196
+ }), 50);
197
+ }
198
+ } else {
199
+ if (!this.active_field) {
200
+ return this.activate_field();
201
+ }
202
+ }
203
+ };
204
+
205
+ AbstractChosen.prototype.input_blur = function(evt) {
206
+ var _this = this;
207
+ if (!this.mouse_on_container) {
208
+ this.active_field = false;
209
+ return setTimeout((function() {
210
+ return _this.blur_test();
211
+ }), 100);
212
+ }
213
+ };
214
+
215
+ AbstractChosen.prototype.results_option_build = function(options) {
216
+ var content, data, data_content, shown_results, _i, _len, _ref;
217
+ content = '';
218
+ shown_results = 0;
219
+ _ref = this.results_data;
220
+ for (_i = 0, _len = _ref.length; _i < _len; _i++) {
221
+ data = _ref[_i];
222
+ data_content = '';
223
+ if (data.group) {
224
+ data_content = this.result_add_group(data);
225
+ } else {
226
+ data_content = this.result_add_option(data);
227
+ }
228
+ if (data_content !== '') {
229
+ shown_results++;
230
+ content += data_content;
231
+ }
232
+ if (options != null ? options.first : void 0) {
233
+ if (data.selected && this.is_multiple) {
234
+ this.choice_build(data);
235
+ } else if (data.selected && !this.is_multiple) {
236
+ this.single_set_selected_text(this.choice_label(data));
237
+ }
238
+ }
239
+ if (shown_results >= this.max_shown_results) {
240
+ break;
241
+ }
242
+ }
243
+ return content;
244
+ };
245
+
246
+ AbstractChosen.prototype.result_add_option = function(option) {
247
+ var classes, option_el;
248
+ if (!option.search_match) {
249
+ return '';
250
+ }
251
+ if (!this.include_option_in_results(option)) {
252
+ return '';
253
+ }
254
+ classes = [];
255
+ if (!option.disabled && !(option.selected && this.is_multiple)) {
256
+ classes.push("active-result");
257
+ }
258
+ if (option.disabled && !(option.selected && this.is_multiple)) {
259
+ classes.push("disabled-result");
260
+ }
261
+ if (option.selected) {
262
+ classes.push("result-selected");
263
+ }
264
+ if (option.group_array_index != null) {
265
+ classes.push("group-option");
266
+ }
267
+ if (option.classes !== "") {
268
+ classes.push(option.classes);
269
+ }
270
+ option_el = document.createElement("li");
271
+ option_el.className = classes.join(" ");
272
+ option_el.style.cssText = option.style;
273
+ option_el.setAttribute("data-option-array-index", option.array_index);
274
+ option_el.innerHTML = option.search_text;
275
+ if (option.title) {
276
+ option_el.title = option.title;
277
+ }
278
+ return this.outerHTML(option_el);
279
+ };
280
+
281
+ AbstractChosen.prototype.result_add_group = function(group) {
282
+ var classes, group_el;
283
+ if (!(group.search_match || group.group_match)) {
284
+ return '';
285
+ }
286
+ if (!(group.active_options > 0)) {
287
+ return '';
288
+ }
289
+ classes = [];
290
+ classes.push("group-result");
291
+ if (group.classes) {
292
+ classes.push(group.classes);
293
+ }
294
+ group_el = document.createElement("li");
295
+ group_el.className = classes.join(" ");
296
+ group_el.innerHTML = group.search_text;
297
+ if (group.title) {
298
+ group_el.title = group.title;
299
+ }
300
+ return this.outerHTML(group_el);
301
+ };
302
+
303
+ AbstractChosen.prototype.results_update_field = function() {
304
+ this.set_default_text();
305
+ if (!this.is_multiple) {
306
+ this.results_reset_cleanup();
307
+ }
308
+ this.result_clear_highlight();
309
+ this.results_build();
310
+ if (this.results_showing) {
311
+ return this.winnow_results();
312
+ }
313
+ };
314
+
315
+ AbstractChosen.prototype.reset_single_select_options = function() {
316
+ var result, _i, _len, _ref, _results;
317
+ _ref = this.results_data;
318
+ _results = [];
319
+ for (_i = 0, _len = _ref.length; _i < _len; _i++) {
320
+ result = _ref[_i];
321
+ if (result.selected) {
322
+ _results.push(result.selected = false);
323
+ } else {
324
+ _results.push(void 0);
325
+ }
326
+ }
327
+ return _results;
328
+ };
329
+
330
+ AbstractChosen.prototype.results_toggle = function() {
331
+ if (this.results_showing) {
332
+ return this.results_hide();
333
+ } else {
334
+ return this.results_show();
335
+ }
336
+ };
337
+
338
+ AbstractChosen.prototype.results_search = function(evt) {
339
+ if (this.results_showing) {
340
+ return this.winnow_results();
341
+ } else {
342
+ return this.results_show();
343
+ }
344
+ };
345
+
346
+ AbstractChosen.prototype.winnow_results = function() {
347
+ var escapedSearchText, option, regex, results, results_group, searchText, startpos, text, zregex, _i, _len, _ref;
348
+ this.no_results_clear();
349
+ results = 0;
350
+ searchText = this.get_search_text();
351
+ escapedSearchText = searchText.replace(/[-[\]{}()*+?.,\\^$|#\s]/g, "\\$&");
352
+ zregex = new RegExp(escapedSearchText, 'i');
353
+ regex = this.get_search_regex(escapedSearchText);
354
+ _ref = this.results_data;
355
+ for (_i = 0, _len = _ref.length; _i < _len; _i++) {
356
+ option = _ref[_i];
357
+ option.search_match = false;
358
+ results_group = null;
359
+ if (this.include_option_in_results(option)) {
360
+ if (option.group) {
361
+ option.group_match = false;
362
+ option.active_options = 0;
363
+ }
364
+ if ((option.group_array_index != null) && this.results_data[option.group_array_index]) {
365
+ results_group = this.results_data[option.group_array_index];
366
+ if (results_group.active_options === 0 && results_group.search_match) {
367
+ results += 1;
368
+ }
369
+ results_group.active_options += 1;
370
+ }
371
+ option.search_text = option.group ? option.label : option.html;
372
+ if (!(option.group && !this.group_search)) {
373
+ option.search_match = this.search_string_match(option.search_text, regex);
374
+ if (option.search_match && !option.group) {
375
+ results += 1;
376
+ }
377
+ if (option.search_match) {
378
+ if (searchText.length) {
379
+ startpos = option.search_text.search(zregex);
380
+ text = option.search_text.substr(0, startpos + searchText.length) + '</em>' + option.search_text.substr(startpos + searchText.length);
381
+ option.search_text = text.substr(0, startpos) + '<em>' + text.substr(startpos);
382
+ }
383
+ if (results_group != null) {
384
+ results_group.group_match = true;
385
+ }
386
+ } else if ((option.group_array_index != null) && this.results_data[option.group_array_index].search_match) {
387
+ option.search_match = true;
388
+ }
389
+ }
390
+ }
391
+ }
392
+ this.result_clear_highlight();
393
+ if (results < 1 && searchText.length) {
394
+ this.update_results_content("");
395
+ return this.no_results(searchText);
396
+ } else {
397
+ this.update_results_content(this.results_option_build());
398
+ return this.winnow_results_set_highlight();
399
+ }
400
+ };
401
+
402
+ AbstractChosen.prototype.get_search_regex = function(escaped_search_string) {
403
+ var regex_anchor;
404
+ regex_anchor = this.search_contains ? "" : "^";
405
+ return new RegExp(regex_anchor + escaped_search_string, 'i');
406
+ };
407
+
408
+ AbstractChosen.prototype.search_string_match = function(search_string, regex) {
409
+ var part, parts, _i, _len;
410
+ if (regex.test(search_string)) {
411
+ return true;
412
+ } else if (this.enable_split_word_search && (search_string.indexOf(" ") >= 0 || search_string.indexOf("[") === 0)) {
413
+ parts = search_string.replace(/\[|\]/g, "").split(" ");
414
+ if (parts.length) {
415
+ for (_i = 0, _len = parts.length; _i < _len; _i++) {
416
+ part = parts[_i];
417
+ if (regex.test(part)) {
418
+ return true;
419
+ }
420
+ }
421
+ }
422
+ }
423
+ };
424
+
425
+ AbstractChosen.prototype.choices_count = function() {
426
+ var option, _i, _len, _ref;
427
+ if (this.selected_option_count != null) {
428
+ return this.selected_option_count;
429
+ }
430
+ this.selected_option_count = 0;
431
+ _ref = this.form_field.options;
432
+ for (_i = 0, _len = _ref.length; _i < _len; _i++) {
433
+ option = _ref[_i];
434
+ if (option.selected) {
435
+ this.selected_option_count += 1;
436
+ }
437
+ }
438
+ return this.selected_option_count;
439
+ };
440
+
441
+ AbstractChosen.prototype.choices_click = function(evt) {
442
+ evt.preventDefault();
443
+ if (!(this.results_showing || this.is_disabled)) {
444
+ return this.results_show();
445
+ }
446
+ };
447
+
448
+ AbstractChosen.prototype.keyup_checker = function(evt) {
449
+ var stroke, _ref;
450
+ stroke = (_ref = evt.which) != null ? _ref : evt.keyCode;
451
+ this.search_field_scale();
452
+ switch (stroke) {
453
+ case 8:
454
+ if (this.is_multiple && this.backstroke_length < 1 && this.choices_count() > 0) {
455
+ return this.keydown_backstroke();
456
+ } else if (!this.pending_backstroke) {
457
+ this.result_clear_highlight();
458
+ return this.results_search();
459
+ }
460
+ break;
461
+ case 13:
462
+ evt.preventDefault();
463
+ if (this.results_showing) {
464
+ return this.result_select(evt);
465
+ }
466
+ break;
467
+ case 27:
468
+ if (this.results_showing) {
469
+ this.results_hide();
470
+ }
471
+ return true;
472
+ case 9:
473
+ case 38:
474
+ case 40:
475
+ case 16:
476
+ case 91:
477
+ case 17:
478
+ case 18:
479
+ break;
480
+ default:
481
+ return this.results_search();
482
+ }
483
+ };
484
+
485
+ AbstractChosen.prototype.clipboard_event_checker = function(evt) {
486
+ var _this = this;
487
+ return setTimeout((function() {
488
+ return _this.results_search();
489
+ }), 50);
490
+ };
491
+
492
+ AbstractChosen.prototype.container_width = function() {
493
+ if (this.options.width != null) {
494
+ return this.options.width;
495
+ } else {
496
+ return "" + this.form_field.offsetWidth + "px";
497
+ }
498
+ };
499
+
500
+ AbstractChosen.prototype.include_option_in_results = function(option) {
501
+ if (this.is_multiple && (!this.display_selected_options && option.selected)) {
502
+ return false;
503
+ }
504
+ if (!this.display_disabled_options && option.disabled) {
505
+ return false;
506
+ }
507
+ if (option.empty) {
508
+ return false;
509
+ }
510
+ return true;
511
+ };
512
+
513
+ AbstractChosen.prototype.search_results_touchstart = function(evt) {
514
+ this.touch_started = true;
515
+ return this.search_results_mouseover(evt);
516
+ };
517
+
518
+ AbstractChosen.prototype.search_results_touchmove = function(evt) {
519
+ this.touch_started = false;
520
+ return this.search_results_mouseout(evt);
521
+ };
522
+
523
+ AbstractChosen.prototype.search_results_touchend = function(evt) {
524
+ if (this.touch_started) {
525
+ return this.search_results_mouseup(evt);
526
+ }
527
+ };
528
+
529
+ AbstractChosen.prototype.outerHTML = function(element) {
530
+ var tmp;
531
+ if (element.outerHTML) {
532
+ return element.outerHTML;
533
+ }
534
+ tmp = document.createElement("div");
535
+ tmp.appendChild(element);
536
+ return tmp.innerHTML;
537
+ };
538
+
539
+ AbstractChosen.browser_is_supported = function() {
540
+ if (/iP(od|hone)/i.test(window.navigator.userAgent)) {
541
+ return false;
542
+ }
543
+ if (/Android/i.test(window.navigator.userAgent)) {
544
+ if (/Mobile/i.test(window.navigator.userAgent)) {
545
+ return false;
546
+ }
547
+ }
548
+ if (/IEMobile/i.test(window.navigator.userAgent)) {
549
+ return false;
550
+ }
551
+ if (/Windows Phone/i.test(window.navigator.userAgent)) {
552
+ return false;
553
+ }
554
+ if (/BlackBerry/i.test(window.navigator.userAgent)) {
555
+ return false;
556
+ }
557
+ if (/BB10/i.test(window.navigator.userAgent)) {
558
+ return false;
559
+ }
560
+ if (window.navigator.appName === "Microsoft Internet Explorer") {
561
+ return document.documentMode >= 8;
562
+ }
563
+ return true;
564
+ };
565
+
566
+ AbstractChosen.default_multiple_text = "Select Some Options";
567
+
568
+ AbstractChosen.default_single_text = "Select an Option";
569
+
570
+ AbstractChosen.default_no_result_text = "No results match";
571
+
572
+ return AbstractChosen;
573
+
574
+ })();
575
+
576
+ $ = jQuery;
577
+
578
+ $.fn.extend({
579
+ chosen: function(options) {
580
+ if (!AbstractChosen.browser_is_supported()) {
581
+ return this;
582
+ }
583
+ return this.each(function(input_field) {
584
+ var $this, chosen;
585
+ $this = $(this);
586
+ chosen = $this.data('chosen');
587
+ if (options === 'destroy') {
588
+ if (chosen instanceof Chosen) {
589
+ chosen.destroy();
590
+ }
591
+ return;
592
+ }
593
+ if (!(chosen instanceof Chosen)) {
594
+ $this.data('chosen', new Chosen(this, options));
595
+ }
596
+ });
597
+ }
598
+ });
599
+
600
+ Chosen = (function(_super) {
601
+ __extends(Chosen, _super);
602
+
603
+ function Chosen() {
604
+ _ref = Chosen.__super__.constructor.apply(this, arguments);
605
+ return _ref;
606
+ }
607
+
608
+ Chosen.prototype.setup = function() {
609
+ this.form_field_jq = $(this.form_field);
610
+ this.current_selectedIndex = this.form_field.selectedIndex;
611
+ return this.is_rtl = this.form_field_jq.hasClass("chosen-rtl");
612
+ };
613
+
614
+ Chosen.prototype.set_up_html = function() {
615
+ var container_classes, container_props;
616
+ container_classes = ["chosen-container"];
617
+ container_classes.push("chosen-container-" + (this.is_multiple ? "multi" : "single"));
618
+ if (this.inherit_select_classes && this.form_field.className) {
619
+ container_classes.push(this.form_field.className);
620
+ }
621
+ if (this.is_rtl) {
622
+ container_classes.push("chosen-rtl");
623
+ }
624
+ container_props = {
625
+ 'class': container_classes.join(' '),
626
+ 'style': "width: " + (this.container_width()) + ";",
627
+ 'title': this.form_field.title
628
+ };
629
+ if (this.form_field.id.length) {
630
+ container_props.id = this.form_field.id.replace(/[^\w]/g, '_') + "_chosen";
631
+ }
632
+ this.container = $("<div />", container_props);
633
+ if (this.is_multiple) {
634
+ 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>');
635
+ } else {
636
+ this.container.html('<a class="chosen-single chosen-default"><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>');
637
+ }
638
+ this.form_field_jq.hide().after(this.container);
639
+ this.dropdown = this.container.find('div.chosen-drop').first();
640
+ this.search_field = this.container.find('input').first();
641
+ this.search_results = this.container.find('ul.chosen-results').first();
642
+ this.search_field_scale();
643
+ this.search_no_results = this.container.find('li.no-results').first();
644
+ if (this.is_multiple) {
645
+ this.search_choices = this.container.find('ul.chosen-choices').first();
646
+ this.search_container = this.container.find('li.search-field').first();
647
+ } else {
648
+ this.search_container = this.container.find('div.chosen-search').first();
649
+ this.selected_item = this.container.find('.chosen-single').first();
650
+ }
651
+ this.results_build();
652
+ this.set_tab_index();
653
+ return this.set_label_behavior();
654
+ };
655
+
656
+ Chosen.prototype.on_ready = function() {
657
+ return this.form_field_jq.trigger("chosen:ready", {
658
+ chosen: this
659
+ });
660
+ };
661
+
662
+ Chosen.prototype.register_observers = function() {
663
+ var _this = this;
664
+ this.container.bind('touchstart.chosen', function(evt) {
665
+ _this.container_mousedown(evt);
666
+ return evt.preventDefault();
667
+ });
668
+ this.container.bind('touchend.chosen', function(evt) {
669
+ _this.container_mouseup(evt);
670
+ return evt.preventDefault();
671
+ });
672
+ this.container.bind('mousedown.chosen', function(evt) {
673
+ _this.container_mousedown(evt);
674
+ });
675
+ this.container.bind('mouseup.chosen', function(evt) {
676
+ _this.container_mouseup(evt);
677
+ });
678
+ this.container.bind('mouseenter.chosen', function(evt) {
679
+ _this.mouse_enter(evt);
680
+ });
681
+ this.container.bind('mouseleave.chosen', function(evt) {
682
+ _this.mouse_leave(evt);
683
+ });
684
+ this.search_results.bind('mouseup.chosen', function(evt) {
685
+ _this.search_results_mouseup(evt);
686
+ });
687
+ this.search_results.bind('mouseover.chosen', function(evt) {
688
+ _this.search_results_mouseover(evt);
689
+ });
690
+ this.search_results.bind('mouseout.chosen', function(evt) {
691
+ _this.search_results_mouseout(evt);
692
+ });
693
+ this.search_results.bind('mousewheel.chosen DOMMouseScroll.chosen', function(evt) {
694
+ _this.search_results_mousewheel(evt);
695
+ });
696
+ this.search_results.bind('touchstart.chosen', function(evt) {
697
+ _this.search_results_touchstart(evt);
698
+ });
699
+ this.search_results.bind('touchmove.chosen', function(evt) {
700
+ _this.search_results_touchmove(evt);
701
+ });
702
+ this.search_results.bind('touchend.chosen', function(evt) {
703
+ _this.search_results_touchend(evt);
704
+ });
705
+ this.form_field_jq.bind("chosen:updated.chosen", function(evt) {
706
+ _this.results_update_field(evt);
707
+ });
708
+ this.form_field_jq.bind("chosen:activate.chosen", function(evt) {
709
+ _this.activate_field(evt);
710
+ });
711
+ this.form_field_jq.bind("chosen:open.chosen", function(evt) {
712
+ _this.container_mousedown(evt);
713
+ });
714
+ this.form_field_jq.bind("chosen:close.chosen", function(evt) {
715
+ _this.input_blur(evt);
716
+ });
717
+ this.search_field.bind('blur.chosen', function(evt) {
718
+ _this.input_blur(evt);
719
+ });
720
+ this.search_field.bind('keyup.chosen', function(evt) {
721
+ _this.keyup_checker(evt);
722
+ });
723
+ this.search_field.bind('keydown.chosen', function(evt) {
724
+ _this.keydown_checker(evt);
725
+ });
726
+ this.search_field.bind('focus.chosen', function(evt) {
727
+ _this.input_focus(evt);
728
+ });
729
+ this.search_field.bind('cut.chosen', function(evt) {
730
+ _this.clipboard_event_checker(evt);
731
+ });
732
+ this.search_field.bind('paste.chosen', function(evt) {
733
+ _this.clipboard_event_checker(evt);
734
+ });
735
+ if (this.is_multiple) {
736
+ return this.search_choices.bind('click.chosen', function(evt) {
737
+ _this.choices_click(evt);
738
+ });
739
+ } else {
740
+ return this.container.bind('click.chosen', function(evt) {
741
+ evt.preventDefault();
742
+ });
743
+ }
744
+ };
745
+
746
+ Chosen.prototype.destroy = function() {
747
+ $(this.container[0].ownerDocument).unbind("click.chosen", this.click_test_action);
748
+ if (this.search_field[0].tabIndex) {
749
+ this.form_field_jq[0].tabIndex = this.search_field[0].tabIndex;
750
+ }
751
+ this.container.remove();
752
+ this.form_field_jq.removeData('chosen');
753
+ return this.form_field_jq.show();
754
+ };
755
+
756
+ Chosen.prototype.search_field_disabled = function() {
757
+ this.is_disabled = this.form_field_jq[0].disabled;
758
+ if (this.is_disabled) {
759
+ this.container.addClass('chosen-disabled');
760
+ this.search_field[0].disabled = true;
761
+ if (!this.is_multiple) {
762
+ this.selected_item.unbind("focus.chosen", this.activate_action);
763
+ }
764
+ return this.close_field();
765
+ } else {
766
+ this.container.removeClass('chosen-disabled');
767
+ this.search_field[0].disabled = false;
768
+ if (!this.is_multiple) {
769
+ return this.selected_item.bind("focus.chosen", this.activate_action);
770
+ }
771
+ }
772
+ };
773
+
774
+ Chosen.prototype.container_mousedown = function(evt) {
775
+ if (!this.is_disabled) {
776
+ if (evt && evt.type === "mousedown" && !this.results_showing) {
777
+ evt.preventDefault();
778
+ }
779
+ if (!((evt != null) && ($(evt.target)).hasClass("search-choice-close"))) {
780
+ if (!this.active_field) {
781
+ if (this.is_multiple) {
782
+ this.search_field.val("");
783
+ }
784
+ $(this.container[0].ownerDocument).bind('click.chosen', this.click_test_action);
785
+ this.results_show();
786
+ } else if (!this.is_multiple && evt && (($(evt.target)[0] === this.selected_item[0]) || $(evt.target).parents("a.chosen-single").length)) {
787
+ evt.preventDefault();
788
+ this.results_toggle();
789
+ }
790
+ return this.activate_field();
791
+ }
792
+ }
793
+ };
794
+
795
+ Chosen.prototype.container_mouseup = function(evt) {
796
+ if (evt.target.nodeName === "ABBR" && !this.is_disabled) {
797
+ return this.results_reset(evt);
798
+ }
799
+ };
800
+
801
+ Chosen.prototype.search_results_mousewheel = function(evt) {
802
+ var delta;
803
+ if (evt.originalEvent) {
804
+ delta = evt.originalEvent.deltaY || -evt.originalEvent.wheelDelta || evt.originalEvent.detail;
805
+ }
806
+ if (delta != null) {
807
+ evt.preventDefault();
808
+ if (evt.type === 'DOMMouseScroll') {
809
+ delta = delta * 40;
810
+ }
811
+ return this.search_results.scrollTop(delta + this.search_results.scrollTop());
812
+ }
813
+ };
814
+
815
+ Chosen.prototype.blur_test = function(evt) {
816
+ if (!this.active_field && this.container.hasClass("chosen-container-active")) {
817
+ return this.close_field();
818
+ }
819
+ };
820
+
821
+ Chosen.prototype.close_field = function() {
822
+ $(this.container[0].ownerDocument).unbind("click.chosen", this.click_test_action);
823
+ this.active_field = false;
824
+ this.results_hide();
825
+ this.container.removeClass("chosen-container-active");
826
+ this.clear_backstroke();
827
+ this.show_search_field_default();
828
+ return this.search_field_scale();
829
+ };
830
+
831
+ Chosen.prototype.activate_field = function() {
832
+ this.container.addClass("chosen-container-active");
833
+ this.active_field = true;
834
+ this.search_field.val(this.search_field.val());
835
+ return this.search_field.focus();
836
+ };
837
+
838
+ Chosen.prototype.test_active_click = function(evt) {
839
+ var active_container;
840
+ active_container = $(evt.target).closest('.chosen-container');
841
+ if (active_container.length && this.container[0] === active_container[0]) {
842
+ return this.active_field = true;
843
+ } else {
844
+ return this.close_field();
845
+ }
846
+ };
847
+
848
+ Chosen.prototype.results_build = function() {
849
+ this.parsing = true;
850
+ this.selected_option_count = null;
851
+ this.results_data = SelectParser.select_to_array(this.form_field);
852
+ if (this.is_multiple) {
853
+ this.search_choices.find("li.search-choice").remove();
854
+ } else if (!this.is_multiple) {
855
+ this.single_set_selected_text();
856
+ if (this.disable_search || this.form_field.options.length <= this.disable_search_threshold) {
857
+ this.search_field[0].readOnly = true;
858
+ this.container.addClass("chosen-container-single-nosearch");
859
+ } else {
860
+ this.search_field[0].readOnly = false;
861
+ this.container.removeClass("chosen-container-single-nosearch");
862
+ }
863
+ }
864
+ this.update_results_content(this.results_option_build({
865
+ first: true
866
+ }));
867
+ this.search_field_disabled();
868
+ this.show_search_field_default();
869
+ this.search_field_scale();
870
+ return this.parsing = false;
871
+ };
872
+
873
+ Chosen.prototype.result_do_highlight = function(el) {
874
+ var high_bottom, high_top, maxHeight, visible_bottom, visible_top;
875
+ if (el.length) {
876
+ this.result_clear_highlight();
877
+ this.result_highlight = el;
878
+ this.result_highlight.addClass("highlighted");
879
+ maxHeight = parseInt(this.search_results.css("maxHeight"), 10);
880
+ visible_top = this.search_results.scrollTop();
881
+ visible_bottom = maxHeight + visible_top;
882
+ high_top = this.result_highlight.position().top + this.search_results.scrollTop();
883
+ high_bottom = high_top + this.result_highlight.outerHeight();
884
+ if (high_bottom >= visible_bottom) {
885
+ return this.search_results.scrollTop((high_bottom - maxHeight) > 0 ? high_bottom - maxHeight : 0);
886
+ } else if (high_top < visible_top) {
887
+ return this.search_results.scrollTop(high_top);
888
+ }
889
+ }
890
+ };
891
+
892
+ Chosen.prototype.result_clear_highlight = function() {
893
+ if (this.result_highlight) {
894
+ this.result_highlight.removeClass("highlighted");
895
+ }
896
+ return this.result_highlight = null;
897
+ };
898
+
899
+ Chosen.prototype.results_show = function() {
900
+ if (this.is_multiple && this.max_selected_options <= this.choices_count()) {
901
+ this.form_field_jq.trigger("chosen:maxselected", {
902
+ chosen: this
903
+ });
904
+ return false;
905
+ }
906
+ this.container.addClass("chosen-with-drop");
907
+ this.results_showing = true;
908
+ this.search_field.focus();
909
+ this.search_field.val(this.search_field.val());
910
+ this.winnow_results();
911
+ return this.form_field_jq.trigger("chosen:showing_dropdown", {
912
+ chosen: this
913
+ });
914
+ };
915
+
916
+ Chosen.prototype.update_results_content = function(content) {
917
+ return this.search_results.html(content);
918
+ };
919
+
920
+ Chosen.prototype.results_hide = function() {
921
+ if (this.results_showing) {
922
+ this.result_clear_highlight();
923
+ this.container.removeClass("chosen-with-drop");
924
+ this.form_field_jq.trigger("chosen:hiding_dropdown", {
925
+ chosen: this
926
+ });
927
+ }
928
+ return this.results_showing = false;
929
+ };
930
+
931
+ Chosen.prototype.set_tab_index = function(el) {
932
+ var ti;
933
+ if (this.form_field.tabIndex) {
934
+ ti = this.form_field.tabIndex;
935
+ this.form_field.tabIndex = -1;
936
+ return this.search_field[0].tabIndex = ti;
937
+ }
938
+ };
939
+
940
+ Chosen.prototype.set_label_behavior = function() {
941
+ var _this = this;
942
+ this.form_field_label = this.form_field_jq.parents("label");
943
+ if (!this.form_field_label.length && this.form_field.id.length) {
944
+ this.form_field_label = $("label[for='" + this.form_field.id + "']");
945
+ }
946
+ if (this.form_field_label.length > 0) {
947
+ return this.form_field_label.bind('click.chosen', function(evt) {
948
+ if (_this.is_multiple) {
949
+ return _this.container_mousedown(evt);
950
+ } else {
951
+ return _this.activate_field();
952
+ }
953
+ });
954
+ }
955
+ };
956
+
957
+ Chosen.prototype.show_search_field_default = function() {
958
+ if (this.is_multiple && this.choices_count() < 1 && !this.active_field) {
959
+ this.search_field.val(this.default_text);
960
+ return this.search_field.addClass("default");
961
+ } else {
962
+ this.search_field.val("");
963
+ return this.search_field.removeClass("default");
964
+ }
965
+ };
966
+
967
+ Chosen.prototype.search_results_mouseup = function(evt) {
968
+ var target;
969
+ target = $(evt.target).hasClass("active-result") ? $(evt.target) : $(evt.target).parents(".active-result").first();
970
+ if (target.length) {
971
+ this.result_highlight = target;
972
+ this.result_select(evt);
973
+ return this.search_field.focus();
974
+ }
975
+ };
976
+
977
+ Chosen.prototype.search_results_mouseover = function(evt) {
978
+ var target;
979
+ target = $(evt.target).hasClass("active-result") ? $(evt.target) : $(evt.target).parents(".active-result").first();
980
+ if (target) {
981
+ return this.result_do_highlight(target);
982
+ }
983
+ };
984
+
985
+ Chosen.prototype.search_results_mouseout = function(evt) {
986
+ if ($(evt.target).hasClass("active-result" || $(evt.target).parents('.active-result').first())) {
987
+ return this.result_clear_highlight();
988
+ }
989
+ };
990
+
991
+ Chosen.prototype.choice_build = function(item) {
992
+ var choice, close_link,
993
+ _this = this;
994
+ choice = $('<li />', {
995
+ "class": "search-choice"
996
+ }).html("<span>" + (this.choice_label(item)) + "</span>");
997
+ if (item.disabled) {
998
+ choice.addClass('search-choice-disabled');
999
+ } else {
1000
+ close_link = $('<a />', {
1001
+ "class": 'search-choice-close',
1002
+ 'data-option-array-index': item.array_index
1003
+ });
1004
+ close_link.bind('click.chosen', function(evt) {
1005
+ return _this.choice_destroy_link_click(evt);
1006
+ });
1007
+ choice.append(close_link);
1008
+ }
1009
+ return this.search_container.before(choice);
1010
+ };
1011
+
1012
+ Chosen.prototype.choice_destroy_link_click = function(evt) {
1013
+ evt.preventDefault();
1014
+ evt.stopPropagation();
1015
+ if (!this.is_disabled) {
1016
+ return this.choice_destroy($(evt.target));
1017
+ }
1018
+ };
1019
+
1020
+ Chosen.prototype.choice_destroy = function(link) {
1021
+ if (this.result_deselect(link[0].getAttribute("data-option-array-index"))) {
1022
+ this.show_search_field_default();
1023
+ if (this.is_multiple && this.choices_count() > 0 && this.search_field.val().length < 1) {
1024
+ this.results_hide();
1025
+ }
1026
+ link.parents('li').first().remove();
1027
+ return this.search_field_scale();
1028
+ }
1029
+ };
1030
+
1031
+ Chosen.prototype.results_reset = function() {
1032
+ this.reset_single_select_options();
1033
+ this.form_field.options[0].selected = true;
1034
+ this.single_set_selected_text();
1035
+ this.show_search_field_default();
1036
+ this.results_reset_cleanup();
1037
+ this.form_field_jq.trigger("change");
1038
+ if (this.active_field) {
1039
+ return this.results_hide();
1040
+ }
1041
+ };
1042
+
1043
+ Chosen.prototype.results_reset_cleanup = function() {
1044
+ this.current_selectedIndex = this.form_field.selectedIndex;
1045
+ return this.selected_item.find("abbr").remove();
1046
+ };
1047
+
1048
+ Chosen.prototype.result_select = function(evt) {
1049
+ var high, item;
1050
+ if (this.result_highlight) {
1051
+ high = this.result_highlight;
1052
+ this.result_clear_highlight();
1053
+ if (this.is_multiple && this.max_selected_options <= this.choices_count()) {
1054
+ this.form_field_jq.trigger("chosen:maxselected", {
1055
+ chosen: this
1056
+ });
1057
+ return false;
1058
+ }
1059
+ if (this.is_multiple) {
1060
+ high.removeClass("active-result");
1061
+ } else {
1062
+ this.reset_single_select_options();
1063
+ }
1064
+ high.addClass("result-selected");
1065
+ item = this.results_data[high[0].getAttribute("data-option-array-index")];
1066
+ item.selected = true;
1067
+ this.form_field.options[item.options_index].selected = true;
1068
+ this.selected_option_count = null;
1069
+ if (this.is_multiple) {
1070
+ this.choice_build(item);
1071
+ } else {
1072
+ this.single_set_selected_text(this.choice_label(item));
1073
+ }
1074
+ if (!((evt.metaKey || evt.ctrlKey) && this.is_multiple)) {
1075
+ this.results_hide();
1076
+ }
1077
+ this.show_search_field_default();
1078
+ if (this.is_multiple || this.form_field.selectedIndex !== this.current_selectedIndex) {
1079
+ this.form_field_jq.trigger("change", {
1080
+ 'selected': this.form_field.options[item.options_index].value
1081
+ });
1082
+ }
1083
+ this.current_selectedIndex = this.form_field.selectedIndex;
1084
+ evt.preventDefault();
1085
+ return this.search_field_scale();
1086
+ }
1087
+ };
1088
+
1089
+ Chosen.prototype.single_set_selected_text = function(text) {
1090
+ if (text == null) {
1091
+ text = this.default_text;
1092
+ }
1093
+ if (text === this.default_text) {
1094
+ this.selected_item.addClass("chosen-default");
1095
+ } else {
1096
+ this.single_deselect_control_build();
1097
+ this.selected_item.removeClass("chosen-default");
1098
+ }
1099
+ return this.selected_item.find("span").html(text);
1100
+ };
1101
+
1102
+ Chosen.prototype.result_deselect = function(pos) {
1103
+ var result_data;
1104
+ result_data = this.results_data[pos];
1105
+ if (!this.form_field.options[result_data.options_index].disabled) {
1106
+ result_data.selected = false;
1107
+ this.form_field.options[result_data.options_index].selected = false;
1108
+ this.selected_option_count = null;
1109
+ this.result_clear_highlight();
1110
+ if (this.results_showing) {
1111
+ this.winnow_results();
1112
+ }
1113
+ this.form_field_jq.trigger("change", {
1114
+ deselected: this.form_field.options[result_data.options_index].value
1115
+ });
1116
+ this.search_field_scale();
1117
+ return true;
1118
+ } else {
1119
+ return false;
1120
+ }
1121
+ };
1122
+
1123
+ Chosen.prototype.single_deselect_control_build = function() {
1124
+ if (!this.allow_single_deselect) {
1125
+ return;
1126
+ }
1127
+ if (!this.selected_item.find("abbr").length) {
1128
+ this.selected_item.find("span").first().after("<abbr class=\"search-choice-close\"></abbr>");
1129
+ }
1130
+ return this.selected_item.addClass("chosen-single-with-deselect");
1131
+ };
1132
+
1133
+ Chosen.prototype.get_search_text = function() {
1134
+ return $('<div/>').text($.trim(this.search_field.val())).html();
1135
+ };
1136
+
1137
+ Chosen.prototype.winnow_results_set_highlight = function() {
1138
+ var do_high, selected_results;
1139
+ selected_results = !this.is_multiple ? this.search_results.find(".result-selected.active-result") : [];
1140
+ do_high = selected_results.length ? selected_results.first() : this.search_results.find(".active-result").first();
1141
+ if (do_high != null) {
1142
+ return this.result_do_highlight(do_high);
1143
+ }
1144
+ };
1145
+
1146
+ Chosen.prototype.no_results = function(terms) {
1147
+ var no_results_html;
1148
+ no_results_html = $('<li class="no-results">' + this.results_none_found + ' "<span></span>"</li>');
1149
+ no_results_html.find("span").first().html(terms);
1150
+ this.search_results.append(no_results_html);
1151
+ return this.form_field_jq.trigger("chosen:no_results", {
1152
+ chosen: this
1153
+ });
1154
+ };
1155
+
1156
+ Chosen.prototype.no_results_clear = function() {
1157
+ return this.search_results.find(".no-results").remove();
1158
+ };
1159
+
1160
+ Chosen.prototype.keydown_arrow = function() {
1161
+ var next_sib;
1162
+ if (this.results_showing && this.result_highlight) {
1163
+ next_sib = this.result_highlight.nextAll("li.active-result").first();
1164
+ if (next_sib) {
1165
+ return this.result_do_highlight(next_sib);
1166
+ }
1167
+ } else {
1168
+ return this.results_show();
1169
+ }
1170
+ };
1171
+
1172
+ Chosen.prototype.keyup_arrow = function() {
1173
+ var prev_sibs;
1174
+ if (!this.results_showing && !this.is_multiple) {
1175
+ return this.results_show();
1176
+ } else if (this.result_highlight) {
1177
+ prev_sibs = this.result_highlight.prevAll("li.active-result");
1178
+ if (prev_sibs.length) {
1179
+ return this.result_do_highlight(prev_sibs.first());
1180
+ } else {
1181
+ if (this.choices_count() > 0) {
1182
+ this.results_hide();
1183
+ }
1184
+ return this.result_clear_highlight();
1185
+ }
1186
+ }
1187
+ };
1188
+
1189
+ Chosen.prototype.keydown_backstroke = function() {
1190
+ var next_available_destroy;
1191
+ if (this.pending_backstroke) {
1192
+ this.choice_destroy(this.pending_backstroke.find("a").first());
1193
+ return this.clear_backstroke();
1194
+ } else {
1195
+ next_available_destroy = this.search_container.siblings("li.search-choice").last();
1196
+ if (next_available_destroy.length && !next_available_destroy.hasClass("search-choice-disabled")) {
1197
+ this.pending_backstroke = next_available_destroy;
1198
+ if (this.single_backstroke_delete) {
1199
+ return this.keydown_backstroke();
1200
+ } else {
1201
+ return this.pending_backstroke.addClass("search-choice-focus");
1202
+ }
1203
+ }
1204
+ }
1205
+ };
1206
+
1207
+ Chosen.prototype.clear_backstroke = function() {
1208
+ if (this.pending_backstroke) {
1209
+ this.pending_backstroke.removeClass("search-choice-focus");
1210
+ }
1211
+ return this.pending_backstroke = null;
1212
+ };
1213
+
1214
+ Chosen.prototype.keydown_checker = function(evt) {
1215
+ var stroke, _ref1;
1216
+ stroke = (_ref1 = evt.which) != null ? _ref1 : evt.keyCode;
1217
+ this.search_field_scale();
1218
+ if (stroke !== 8 && this.pending_backstroke) {
1219
+ this.clear_backstroke();
1220
+ }
1221
+ switch (stroke) {
1222
+ case 8:
1223
+ this.backstroke_length = this.search_field.val().length;
1224
+ break;
1225
+ case 9:
1226
+ if (this.results_showing && !this.is_multiple) {
1227
+ this.result_select(evt);
1228
+ }
1229
+ this.mouse_on_container = false;
1230
+ break;
1231
+ case 13:
1232
+ if (this.results_showing) {
1233
+ evt.preventDefault();
1234
+ }
1235
+ break;
1236
+ case 32:
1237
+ if (this.disable_search) {
1238
+ evt.preventDefault();
1239
+ }
1240
+ break;
1241
+ case 38:
1242
+ evt.preventDefault();
1243
+ this.keyup_arrow();
1244
+ break;
1245
+ case 40:
1246
+ evt.preventDefault();
1247
+ this.keydown_arrow();
1248
+ break;
1249
+ }
1250
+ };
1251
+
1252
+ Chosen.prototype.search_field_scale = function() {
1253
+ var div, f_width, h, style, style_block, styles, w, _i, _len;
1254
+ if (this.is_multiple) {
1255
+ h = 0;
1256
+ w = 0;
1257
+ style_block = "position:absolute; left: -1000px; top: -1000px; display:none;";
1258
+ styles = ['font-size', 'font-style', 'font-weight', 'font-family', 'line-height', 'text-transform', 'letter-spacing'];
1259
+ for (_i = 0, _len = styles.length; _i < _len; _i++) {
1260
+ style = styles[_i];
1261
+ style_block += style + ":" + this.search_field.css(style) + ";";
1262
+ }
1263
+ div = $('<div />', {
1264
+ 'style': style_block
1265
+ });
1266
+ div.text(this.search_field.val());
1267
+ $('body').append(div);
1268
+ w = div.width() + 25;
1269
+ div.remove();
1270
+ f_width = this.container.outerWidth();
1271
+ if (w > f_width - 10) {
1272
+ w = f_width - 10;
1273
+ }
1274
+ return this.search_field.css({
1275
+ 'width': w + 'px'
1276
+ });
1277
+ }
1278
+ };
1279
+
1280
+ return Chosen;
1281
+
1282
+ })(AbstractChosen);
1283
+
1284
+ }).call(this);
assets/js/chosen.jquery.min.js ADDED
@@ -0,0 +1 @@
 
1
+ (function(){var a,b,c,d,e,f={}.hasOwnProperty,g=function(a,b){function c(){this.constructor=a}for(var d in b)f.call(b,d)&&(a[d]=b[d]);return c.prototype=b.prototype,a.prototype=new c,a.__super__=b.prototype,a};d=function(){function a(){this.options_index=0,this.parsed=[]}return a.prototype.add_node=function(a){return"OPTGROUP"===a.nodeName.toUpperCase()?this.add_group(a):this.add_option(a)},a.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),title:a.title?a.title:void 0,children:0,disabled:a.disabled,classes:a.className}),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},a.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,title:a.title?a.title:void 0,selected:a.selected,disabled:c===!0?c:a.disabled,group_array_index:b,group_label:null!=b?this.parsed[b].label:null,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},a.prototype.escapeExpression=function(a){var b,c;return null==a||a===!1?"":/[\&\<\>\"\'\`]/.test(a)?(b={"<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#x27;","`":"&#x60;"},c=/&(?!\w+;)|[\<\>\"\'\`]/g,a.replace(c,function(a){return b[a]||"&amp;"})):a},a}(),d.select_to_array=function(a){var b,c,e,f,g;for(c=new d,g=a.childNodes,e=0,f=g.length;f>e;e++)b=g[e],c.add_node(b);return c.parsed},b=function(){function a(b,c){this.form_field=b,this.options=null!=c?c:{},a.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(),this.on_ready())}return a.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.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,this.include_group_label_in_selected=this.options.include_group_label_in_selected||!1,this.max_shown_results=this.options.max_shown_results||Number.POSITIVE_INFINITY},a.prototype.set_default_text=function(){return this.form_field.getAttribute("data-placeholder")?this.default_text=this.form_field.getAttribute("data-placeholder"):this.is_multiple?this.default_text=this.options.placeholder_text_multiple||this.options.placeholder_text||a.default_multiple_text:this.default_text=this.options.placeholder_text_single||this.options.placeholder_text||a.default_single_text,this.results_none_found=this.form_field.getAttribute("data-no_results_text")||this.options.no_results_text||a.default_no_result_text},a.prototype.choice_label=function(a){return this.include_group_label_in_selected&&null!=a.group_label?"<b class='group-name'>"+a.group_label+"</b>"+a.html:a.html},a.prototype.mouse_enter=function(){return this.mouse_on_container=!0},a.prototype.mouse_leave=function(){return this.mouse_on_container=!1},a.prototype.input_focus=function(a){var b=this;if(this.is_multiple){if(!this.active_field)return setTimeout(function(){return b.container_mousedown()},50)}else if(!this.active_field)return this.activate_field()},a.prototype.input_blur=function(a){var b=this;return this.mouse_on_container?void 0:(this.active_field=!1,setTimeout(function(){return b.blur_test()},100))},a.prototype.results_option_build=function(a){var b,c,d,e,f,g,h;for(b="",e=0,h=this.results_data,f=0,g=h.length;g>f&&(c=h[f],d="",d=c.group?this.result_add_group(c):this.result_add_option(c),""!==d&&(e++,b+=d),(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(this.choice_label(c))),!(e>=this.max_shown_results));f++);return b},a.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=document.createElement("li"),c.className=b.join(" "),c.style.cssText=a.style,c.setAttribute("data-option-array-index",a.array_index),c.innerHTML=a.search_text,a.title&&(c.title=a.title),this.outerHTML(c)):""},a.prototype.result_add_group=function(a){var b,c;return(a.search_match||a.group_match)&&a.active_options>0?(b=[],b.push("group-result"),a.classes&&b.push(a.classes),c=document.createElement("li"),c.className=b.join(" "),c.innerHTML=a.search_text,a.title&&(c.title=a.title),this.outerHTML(c)):""},a.prototype.results_update_field=function(){return this.set_default_text(),this.is_multiple||this.results_reset_cleanup(),this.result_clear_highlight(),this.results_build(),this.results_showing?this.winnow_results():void 0},a.prototype.reset_single_select_options=function(){var a,b,c,d,e;for(d=this.results_data,e=[],b=0,c=d.length;c>b;b++)a=d[b],a.selected?e.push(a.selected=!1):e.push(void 0);return e},a.prototype.results_toggle=function(){return this.results_showing?this.results_hide():this.results_show()},a.prototype.results_search=function(a){return this.results_showing?this.winnow_results():this.results_show()},a.prototype.winnow_results=function(){var a,b,c,d,e,f,g,h,i,j,k,l;for(this.no_results_clear(),d=0,f=this.get_search_text(),a=f.replace(/[-[\]{}()*+?.,\\^$|#\s]/g,"\\$&"),i=new RegExp(a,"i"),c=this.get_search_regex(a),l=this.results_data,j=0,k=l.length;k>j;j++)b=l[j],b.search_match=!1,e=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]&&(e=this.results_data[b.group_array_index],0===e.active_options&&e.search_match&&(d+=1),e.active_options+=1),b.search_text=b.group?b.label:b.html,b.group&&!this.group_search||(b.search_match=this.search_string_match(b.search_text,c),b.search_match&&!b.group&&(d+=1),b.search_match?(f.length&&(g=b.search_text.search(i),h=b.search_text.substr(0,g+f.length)+"</em>"+b.search_text.substr(g+f.length),b.search_text=h.substr(0,g)+"<em>"+h.substr(g)),null!=e&&(e.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>d&&f.length?(this.update_results_content(""),this.no_results(f)):(this.update_results_content(this.results_option_build()),this.winnow_results_set_highlight())},a.prototype.get_search_regex=function(a){var b;return b=this.search_contains?"":"^",new RegExp(b+a,"i")},a.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},a.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},a.prototype.choices_click=function(a){return a.preventDefault(),this.results_showing||this.is_disabled?void 0:this.results_show()},a.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:case 18:break;default:return this.results_search()}},a.prototype.clipboard_event_checker=function(a){var b=this;return setTimeout(function(){return b.results_search()},50)},a.prototype.container_width=function(){return null!=this.options.width?this.options.width:""+this.form_field.offsetWidth+"px"},a.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},a.prototype.search_results_touchstart=function(a){return this.touch_started=!0,this.search_results_mouseover(a)},a.prototype.search_results_touchmove=function(a){return this.touch_started=!1,this.search_results_mouseout(a)},a.prototype.search_results_touchend=function(a){return this.touch_started?this.search_results_mouseup(a):void 0},a.prototype.outerHTML=function(a){var b;return a.outerHTML?a.outerHTML:(b=document.createElement("div"),b.appendChild(a),b.innerHTML)},a.browser_is_supported=function(){return/iP(od|hone)/i.test(window.navigator.userAgent)?!1:/Android/i.test(window.navigator.userAgent)&&/Mobile/i.test(window.navigator.userAgent)?!1:/IEMobile/i.test(window.navigator.userAgent)?!1:/Windows Phone/i.test(window.navigator.userAgent)?!1:/BlackBerry/i.test(window.navigator.userAgent)?!1:/BB10/i.test(window.navigator.userAgent)?!1:"Microsoft Internet Explorer"===window.navigator.appName?document.documentMode>=8:!0},a.default_multiple_text="Select Some Options",a.default_single_text="Select an Option",a.default_no_result_text="No results match",a}(),a=jQuery,a.fn.extend({chosen:function(d){return b.browser_is_supported()?this.each(function(b){var e,f;return e=a(this),f=e.data("chosen"),"destroy"===d?void(f instanceof c&&f.destroy()):void(f instanceof c||e.data("chosen",new c(this,d)))}):this}}),c=function(b){function c(){return e=c.__super__.constructor.apply(this,arguments)}return g(c,b),c.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")},c.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"><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()},c.prototype.on_ready=function(){return this.form_field_jq.trigger("chosen:ready",{chosen:this})},c.prototype.register_observers=function(){var a=this;return this.container.bind("touchstart.chosen",function(b){return a.container_mousedown(b),b.preventDefault()}),this.container.bind("touchend.chosen",function(b){return a.container_mouseup(b),b.preventDefault()}),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.search_results.bind("touchstart.chosen",function(b){a.search_results_touchstart(b)}),this.search_results.bind("touchmove.chosen",function(b){a.search_results_touchmove(b)}),this.search_results.bind("touchend.chosen",function(b){a.search_results_touchend(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.form_field_jq.bind("chosen:close.chosen",function(b){a.input_blur(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.search_field.bind("cut.chosen",function(b){a.clipboard_event_checker(b)}),this.search_field.bind("paste.chosen",function(b){a.clipboard_event_checker(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()})},c.prototype.destroy=function(){return a(this.container[0].ownerDocument).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()},c.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))},c.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(this.container[0].ownerDocument).bind("click.chosen",this.click_test_action),this.results_show()),this.activate_field())},c.prototype.container_mouseup=function(a){return"ABBR"!==a.target.nodeName||this.is_disabled?void 0:this.results_reset(a)},c.prototype.search_results_mousewheel=function(a){var b;return a.originalEvent&&(b=a.originalEvent.deltaY||-a.originalEvent.wheelDelta||a.originalEvent.detail),null!=b?(a.preventDefault(),"DOMMouseScroll"===a.type&&(b=40*b),this.search_results.scrollTop(b+this.search_results.scrollTop())):void 0},c.prototype.blur_test=function(a){return!this.active_field&&this.container.hasClass("chosen-container-active")?this.close_field():void 0},c.prototype.close_field=function(){return a(this.container[0].ownerDocument).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()},c.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()},c.prototype.test_active_click=function(b){var c;return c=a(b.target).closest(".chosen-container"),c.length&&this.container[0]===c[0]?this.active_field=!0:this.close_field()},c.prototype.results_build=function(){return this.parsing=!0,this.selected_option_count=null,this.results_data=d.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},c.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)}},c.prototype.result_clear_highlight=function(){return this.result_highlight&&this.result_highlight.removeClass("highlighted"),this.result_highlight=null},c.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.results_showing=!0,this.search_field.focus(),this.search_field.val(this.search_field.val()),this.winnow_results(),this.form_field_jq.trigger("chosen:showing_dropdown",{chosen:this}))},c.prototype.update_results_content=function(a){return this.search_results.html(a)},c.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},c.prototype.set_tab_index=function(a){var b;return this.form_field.tabIndex?(b=this.form_field.tabIndex,this.form_field.tabIndex=-1,this.search_field[0].tabIndex=b):void 0},c.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},c.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"))},c.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},c.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},c.prototype.search_results_mouseout=function(b){return a(b.target).hasClass("active-result")?this.result_clear_highlight():void 0},c.prototype.choice_build=function(b){var c,d,e=this;return c=a("<li />",{"class":"search-choice"}).html("<span>"+this.choice_label(b)+"</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)},c.prototype.choice_destroy_link_click=function(b){return b.preventDefault(),b.stopPropagation(),this.is_disabled?void 0:this.choice_destroy(a(b.target))},c.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},c.prototype.results_reset=function(){return this.reset_single_select_options(),this.form_field.options[0].selected=!0,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},c.prototype.results_reset_cleanup=function(){return this.current_selectedIndex=this.form_field.selectedIndex,this.selected_item.find("abbr").remove()},c.prototype.result_select=function(a){var b,c;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.reset_single_select_options(),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(this.choice_label(c)),(a.metaKey||a.ctrlKey)&&this.is_multiple||this.results_hide(),this.show_search_field_default(),(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,a.preventDefault(),this.search_field_scale())):void 0},c.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").html(a)},c.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)},c.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},c.prototype.get_search_text=function(){return a("<div/>").text(a.trim(this.search_field.val())).html()},c.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},c.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),this.form_field_jq.trigger("chosen:no_results",{chosen:this})},c.prototype.no_results_clear=function(){return this.search_results.find(".no-results").remove()},c.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()},c.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()},c.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)},c.prototype.clear_backstroke=function(){return this.pending_backstroke&&this.pending_backstroke.removeClass("search-choice-focus"),this.pending_backstroke=null},c.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:this.results_showing&&a.preventDefault();break;case 32:this.disable_search&&a.preventDefault();break;case 38:a.preventDefault(),this.keyup_arrow();break;case 40:a.preventDefault(),this.keydown_arrow()}},c.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"})}},c}(b)}).call(this);
assets/js/index.php CHANGED
@@ -1,2 +1,2 @@
1
- <?php
2
- // Silence is golden.
1
+ <?php
2
+ // Silence is golden.
assets/js/jquery-ui-timepicker-addon.js CHANGED
@@ -7,7 +7,13 @@
7
  * http://trentrichardson.com/Impromptu/MIT-LICENSE.txt
8
  */
9
 
10
- (function ($) {
 
 
 
 
 
 
11
 
12
  /*
13
  * Lets not redefine timepicker, Prevent "Uncaught RangeError: Maximum call stack size exceeded"
@@ -26,7 +32,7 @@
26
  }
27
  });
28
 
29
- /*
30
  * Timepicker manager.
31
  * Use the singleton instance of this class, $.timepicker, to interact with the time picker.
32
  * Settings for (groups of) time pickers are maintained in an instance object,
@@ -107,8 +113,10 @@
107
  addSliderAccess: false,
108
  sliderAccessArgs: null,
109
  controlType: 'slider',
 
110
  defaultValue: null,
111
- parse: 'strict'
 
112
  };
113
  $.extend(this._defaults, this.regional['']);
114
  };
@@ -151,7 +159,7 @@
151
  support: {},
152
  control: null,
153
 
154
- /*
155
  * Override the default settings for all instances of the time picker.
156
  * @param {Object} settings object - the new settings to use as defaults (anonymous object)
157
  * @return {Object} the manager object
@@ -191,7 +199,7 @@
191
  },
192
  onChangeMonthYear: function (year, month, dp_inst) {
193
  // Update the time as well : this prevents the time from disappearing from the $input field.
194
- tp_inst._updateDateTime(dp_inst);
195
  if ($.isFunction(tp_inst._defaults.evnts.onChangeMonthYear)) {
196
  tp_inst._defaults.evnts.onChangeMonthYear.call($input[0], year, month, dp_inst, tp_inst);
197
  }
@@ -207,7 +215,7 @@
207
  };
208
  for (i in overrides) {
209
  if (overrides.hasOwnProperty(i)) {
210
- fns[i] = opts[i] || null;
211
  }
212
  }
213
 
@@ -224,7 +232,7 @@
224
 
225
  // detect which units are supported
226
  tp_inst.support = detectSupport(
227
- tp_inst._defaults.timeFormat +
228
  (tp_inst._defaults.pickerTimeFormat ? tp_inst._defaults.pickerTimeFormat : '') +
229
  (tp_inst._defaults.altTimeFormat ? tp_inst._defaults.altTimeFormat : ''));
230
 
@@ -313,11 +321,12 @@
313
  * add our sliders to the calendar
314
  */
315
  _addTimePicker: function (dp_inst) {
316
- var currDT = (this.$altInput && this._defaults.altFieldTimeOnly) ? this.$input.val() + ' ' + this.$altInput.val() : this.$input.val();
317
 
318
  this.timeDefined = this._parseTime(currDT);
319
  this._limitMinMaxDateTime(dp_inst, false);
320
  this._injectTimePicker();
 
321
  },
322
 
323
  /*
@@ -354,6 +363,16 @@
354
  }
355
  },
356
 
 
 
 
 
 
 
 
 
 
 
357
  /*
358
  * generate and inject html for timepicker into ui datepicker
359
  */
@@ -372,9 +391,9 @@
372
 
373
  // Prevent displaying twice
374
  if ($dp.find("div.ui-timepicker-div").length === 0 && o.showTimepicker) {
375
- var noDisplay = ' style="display:none;"',
376
- html = '<div class="ui-timepicker-div' + (o.isRTL ? ' ui-timepicker-rtl' : '') + '"><dl>' + '<dt class="ui_tpicker_time_label"' + ((o.showTime) ? '' : noDisplay) + '>' + o.timeText + '</dt>' +
377
- '<dd class="ui_tpicker_time"' + ((o.showTime) ? '' : noDisplay) + '></dd>';
378
 
379
  // Create the markup
380
  for (i = 0, l = this.units.length; i < l; i++) {
@@ -388,8 +407,8 @@
388
  max[litem] = parseInt((o[litem + 'Max'] - ((o[litem + 'Max'] - o[litem + 'Min']) % o['step' + uitem])), 10);
389
  gridSize[litem] = 0;
390
 
391
- html += '<dt class="ui_tpicker_' + litem + '_label"' + (show ? '' : noDisplay) + '>' + o[litem + 'Text'] + '</dt>' +
392
- '<dd class="ui_tpicker_' + litem + '"><div class="ui_tpicker_' + litem + '_slider"' + (show ? '' : noDisplay) + '></div>';
393
 
394
  if (show && o[litem + 'Grid'] > 0) {
395
  html += '<div style="padding-left: 1px"><table class="ui-tpicker-grid-label"><tr>';
@@ -412,11 +431,11 @@
412
  }
413
  html += '</dd>';
414
  }
415
-
416
  // Timezone
417
  var showTz = o.showTimezone !== null ? o.showTimezone : this.support.timezone;
418
- html += '<dt class="ui_tpicker_timezone_label"' + (showTz ? '' : noDisplay) + '>' + o.timezoneText + '</dt>';
419
- html += '<dd class="ui_tpicker_timezone" ' + (showTz ? '' : noDisplay) + '></dd>';
420
 
421
  // Create the elements from string
422
  html += '</dl></div>';
@@ -427,7 +446,7 @@
427
  $tp.prepend('<div class="ui-widget-header ui-helper-clearfix ui-corner-all">' + '<div class="ui-datepicker-title">' + o.timeOnlyTitle + '</div>' + '</div>');
428
  $dp.find('.ui-datepicker-header, .ui-datepicker-calendar').hide();
429
  }
430
-
431
  // add sliders, adjust grids, add events
432
  for (i = 0, l = tp_inst.units.length; i < l; i++) {
433
  litem = tp_inst.units[i];
@@ -462,7 +481,7 @@
462
  }
463
  }
464
  }
465
-
466
  tp_inst.control.value(tp_inst, tp_inst[f + '_slider'], litem, n);
467
 
468
  tp_inst._onTimeChange();
@@ -499,9 +518,10 @@
499
  this.timezone_select.change(function () {
500
  tp_inst._onTimeChange();
501
  tp_inst._onSelectHandler();
 
502
  });
503
  // End timezone options
504
-
505
  // inject timepicker into datepicker
506
  var $buttonPanel = $dp.find('.ui-datepicker-buttonpane');
507
  if ($buttonPanel.length) {
@@ -510,7 +530,21 @@
510
  $dp.append($tp);
511
  }
512
 
513
- this.$timeObj = $tp.find('.ui_tpicker_time');
 
 
 
 
 
 
 
 
 
 
 
 
 
 
514
 
515
  if (this.inst !== null) {
516
  var timeDefined = this.timeDefined;
@@ -523,7 +557,7 @@
523
  var sliderAccessArgs = this._defaults.sliderAccessArgs,
524
  rtl = this._defaults.isRTL;
525
  sliderAccessArgs.isRTL = rtl;
526
-
527
  setTimeout(function () { // fix for inline mode
528
  if ($tp.find('.ui-slider-access').length === 0) {
529
  $tp.find('.ui-slider:visible').sliderAccess(sliderAccessArgs);
@@ -675,44 +709,44 @@
675
  }
676
  }
677
 
678
- if (dp_inst.settings.minTime!==null) {
679
- var tempMinTime=new Date("01/01/1970 " + dp_inst.settings.minTime);
680
  if (this.hour<tempMinTime.getHours()) {
681
  this.hour=this._defaults.hourMin=tempMinTime.getHours();
682
- this.minute=this._defaults.minuteMin=tempMinTime.getMinutes();
683
  } else if (this.hour===tempMinTime.getHours() && this.minute<tempMinTime.getMinutes()) {
684
  this.minute=this._defaults.minuteMin=tempMinTime.getMinutes();
685
- } else {
686
  if (this._defaults.hourMin<tempMinTime.getHours()) {
687
  this._defaults.hourMin=tempMinTime.getHours();
688
- this._defaults.minuteMin=tempMinTime.getMinutes();
689
  } else if (this._defaults.hourMin===tempMinTime.getHours()===this.hour && this._defaults.minuteMin<tempMinTime.getMinutes()) {
690
- this._defaults.minuteMin=tempMinTime.getMinutes();
691
  } else {
692
  this._defaults.minuteMin=0;
693
  }
694
- }
695
  }
696
-
697
- if (dp_inst.settings.maxTime!==null) {
698
  var tempMaxTime=new Date("01/01/1970 " + dp_inst.settings.maxTime);
699
  if (this.hour>tempMaxTime.getHours()) {
700
- this.hour=this._defaults.hourMax=tempMaxTime.getHours();
 
 
701
  this.minute=this._defaults.minuteMax=tempMaxTime.getMinutes();
702
- } else if (this.hour===tempMaxTime.getHours() && this.minute>tempMaxTime.getMinutes()) {
703
- this.minute=this._defaults.minuteMax=tempMaxTime.getMinutes();
704
  } else {
705
  if (this._defaults.hourMax>tempMaxTime.getHours()) {
706
  this._defaults.hourMax=tempMaxTime.getHours();
707
- this._defaults.minuteMax=tempMaxTime.getMinutes();
708
  } else if (this._defaults.hourMax===tempMaxTime.getHours()===this.hour && this._defaults.minuteMax>tempMaxTime.getMinutes()) {
709
- this._defaults.minuteMax=tempMaxTime.getMinutes();
710
  } else {
711
  this._defaults.minuteMax=59;
712
  }
713
- }
714
  }
715
-
716
  if (adjustSliders !== undefined && adjustSliders === true) {
717
  var hourMax = parseInt((this._defaults.hourMax - ((this._defaults.hourMax - this._defaults.hourMin) % this._defaults.stepHour)), 10),
718
  minMax = parseInt((this._defaults.minuteMax - ((this._defaults.minuteMax - this._defaults.minuteMin) % this._defaults.stepMinute)), 10),
@@ -806,11 +840,11 @@
806
  // If the update was done using the sliders, update the input field.
807
  var hasChanged = (
808
  hour !== parseInt(this.hour,10) || // sliders should all be numeric
809
- minute !== parseInt(this.minute,10) ||
810
- second !== parseInt(this.second,10) ||
811
- millisec !== parseInt(this.millisec,10) ||
812
- microsec !== parseInt(this.microsec,10) ||
813
- (this.ampm.length > 0 && (hour < 12) !== ($.inArray(this.ampm.toUpperCase(), this.amNames) !== -1)) ||
814
  (this.timezone !== null && timezone !== this.timezone.toString()) // could be numeric or "EST" format, so use toString()
815
  );
816
 
@@ -849,10 +883,15 @@
849
  this.formattedTime = $.datepicker.formatTime(o.timeFormat, this, o);
850
  if (this.$timeObj) {
851
  if (pickerTimeFormat === o.timeFormat) {
852
- this.$timeObj.text(this.formattedTime + pickerTimeSuffix);
853
  }
854
  else {
855
- this.$timeObj.text($.datepicker.formatTime(pickerTimeFormat, this, o) + pickerTimeSuffix);
 
 
 
 
 
856
  }
857
  }
858
 
@@ -880,8 +919,8 @@
880
  */
881
  _updateDateTime: function (dp_inst) {
882
  dp_inst = this.inst || dp_inst;
883
- var dtTmp = (dp_inst.currentYear > 0?
884
- new Date(dp_inst.currentYear, dp_inst.currentMonth, dp_inst.currentDay) :
885
  new Date(dp_inst.selectedYear, dp_inst.selectedMonth, dp_inst.selectedDay)),
886
  dt = $.datepicker._daylightSavingAdjust(dtTmp),
887
  //dt = $.datepicker._daylightSavingAdjust(new Date(dp_inst.selectedYear, dp_inst.selectedMonth, dp_inst.selectedDay)),
@@ -891,7 +930,7 @@
891
  timeAvailable = dt !== null && this.timeDefined;
892
  this.formattedDate = $.datepicker.formatDate(dateFmt, (dt === null ? new Date() : dt), formatCfg);
893
  var formattedDateTime = this.formattedDate;
894
-
895
  // if a slider was changed but datepicker doesn't have a value yet, set it
896
  if (dp_inst.lastVal === "") {
897
  dp_inst.currentYear = dp_inst.selectedYear;
@@ -901,7 +940,7 @@
901
 
902
  /*
903
  * remove following lines to force every changes in date picker to change the input value
904
- * Bug descriptions: when an input field has a default value, and click on the field to pop up the date picker.
905
  * If the user manually empty the value in the input field, the date picker will never change selected value.
906
  */
907
  //if (dp_inst.lastVal !== undefined && (dp_inst.lastVal.length > 0 && this.$input.val().length === 0)) {
@@ -926,7 +965,7 @@
926
  var altFormattedDateTime = '',
927
  altSeparator = this._defaults.altSeparator !== null ? this._defaults.altSeparator : this._defaults.separator,
928
  altTimeSuffix = this._defaults.altTimeSuffix !== null ? this._defaults.altTimeSuffix : this._defaults.timeSuffix;
929
-
930
  if (!this._defaults.timeOnly) {
931
  if (this._defaults.altFormat) {
932
  altFormattedDateTime = $.datepicker.formatDate(this._defaults.altFormat, (dt === null ? new Date() : dt), formatCfg);
@@ -993,7 +1032,7 @@
993
  stop: function (event, ui) {
994
  tp_inst._onSelectHandler();
995
  }
996
- });
997
  },
998
  options: function (tp_inst, obj, unit, opts, val) {
999
  if (tp_inst._defaults.isRTL) {
@@ -1006,7 +1045,7 @@
1006
  }
1007
  return obj.slider(opts);
1008
  }
1009
- var min = opts.min,
1010
  max = opts.max;
1011
  opts.min = opts.max = null;
1012
  if (min !== undefined) {
@@ -1038,7 +1077,7 @@
1038
  // select methods
1039
  select: {
1040
  create: function (tp_inst, obj, unit, val, min, max, step) {
1041
- var sel = '<select class="ui-timepicker-select" data-unit="' + unit + '" data-min="' + min + '" data-max="' + max + '" data-step="' + step + '">',
1042
  format = tp_inst._defaults.pickerTimeFormat || tp_inst._defaults.timeFormat;
1043
 
1044
  for (var i = min; i <= max; i += step) {
@@ -1057,6 +1096,7 @@
1057
  $(sel).appendTo(obj).change(function (e) {
1058
  tp_inst._onTimeChange();
1059
  tp_inst._onSelectHandler();
 
1060
  });
1061
 
1062
  return obj;
@@ -1068,10 +1108,10 @@
1068
  if (val === undefined) {
1069
  return $t.data(opts);
1070
  }
1071
- o[opts] = val;
1072
  }
1073
  else { o = opts; }
1074
- return tp_inst.control.create(tp_inst, obj, $t.data('unit'), $t.val(), o.min || $t.data('min'), o.max || $t.data('max'), o.step || $t.data('step'));
1075
  },
1076
  value: function (tp_inst, obj, unit, val) {
1077
  var $t = obj.children('select');
@@ -1235,7 +1275,7 @@
1235
  ampm = '';
1236
  resTime.ampm = '';
1237
  } else {
1238
- ampm = $.inArray(treg[order.t].toUpperCase(), o.amNames) !== -1 ? 'AM' : 'PM';
1239
  resTime.ampm = o[ampm === 'AM' ? 'amNames' : 'pmNames'][0];
1240
  }
1241
  }
@@ -1303,11 +1343,11 @@
1303
  }
1304
  catch (err2) {
1305
  $.timepicker.log("Unable to parse \ntimeString: " + s + "\ntimeFormat: " + f);
1306
- }
1307
  }
1308
  return false;
1309
  }; // end looseParse
1310
-
1311
  if (typeof o.parse === "function") {
1312
  return o.parse(timeFormat, timeString, o);
1313
  }
@@ -1393,14 +1433,17 @@
1393
  $.datepicker._base_selectDate = $.datepicker._selectDate;
1394
  $.datepicker._selectDate = function (id, dateStr) {
1395
  var inst = this._getInst($(id)[0]),
1396
- tp_inst = this._get(inst, 'timepicker');
 
1397
 
1398
  if (tp_inst && inst.settings.showTimepicker) {
1399
  tp_inst._limitMinMaxDateTime(inst, true);
 
1400
  inst.inline = inst.stay_open = true;
1401
  //This way the onSelect handler called from calendarpicker get the full dateTime
1402
  this._base_selectDate(id, dateStr);
1403
- inst.inline = inst.stay_open = false;
 
1404
  this._notifyChange(inst);
1405
  this._updateDatepicker(inst);
1406
  } else {
@@ -1453,11 +1496,11 @@
1453
  .replace(/tT/g, ampm ? 'AaPpMm' : '')
1454
  .replace(/T/g, ampm ? 'AP' : '')
1455
  .replace(/tt/g, ampm ? 'apm' : '')
1456
- .replace(/t/g, ampm ? 'ap' : '') +
1457
- " " + tp_inst._defaults.separator +
1458
- tp_inst._defaults.timeSuffix +
1459
- (tz ? tp_inst._defaults.timezoneList.join('') : '') +
1460
- (tp_inst._defaults.amNames.join('')) + (tp_inst._defaults.pmNames.join('')) +
1461
  dateChars,
1462
  chr = String.fromCharCode(event.charCode === undefined ? event.keyCode : event.charCode);
1463
  return event.ctrlKey || (chr < ' ' || !dateChars || datetimeChars.indexOf(chr) > -1);
@@ -1480,11 +1523,11 @@
1480
  var altFormat = tp_inst._defaults.altFormat || tp_inst._defaults.dateFormat,
1481
  date = this._getDate(inst),
1482
  formatCfg = $.datepicker._getFormatConfig(inst),
1483
- altFormattedDateTime = '',
1484
- altSeparator = tp_inst._defaults.altSeparator ? tp_inst._defaults.altSeparator : tp_inst._defaults.separator,
1485
  altTimeSuffix = tp_inst._defaults.altTimeSuffix ? tp_inst._defaults.altTimeSuffix : tp_inst._defaults.timeSuffix,
1486
  altTimeFormat = tp_inst._defaults.altTimeFormat !== null ? tp_inst._defaults.altTimeFormat : tp_inst._defaults.timeFormat;
1487
-
1488
  altFormattedDateTime += $.datepicker.formatTime(altTimeFormat, tp_inst, tp_inst._defaults) + altTimeSuffix;
1489
  if (!tp_inst._defaults.timeOnly && !tp_inst._defaults.altFieldTimeOnly && date !== null) {
1490
  if (tp_inst._defaults.altFormat) {
@@ -1498,7 +1541,7 @@
1498
  }
1499
  }
1500
  else {
1501
- $.datepicker._base_updateAlternate(inst);
1502
  }
1503
  };
1504
 
@@ -1524,18 +1567,23 @@
1524
  };
1525
 
1526
  /*
1527
- * override "Today" button to also grab the time.
1528
  */
1529
  $.datepicker._base_gotoToday = $.datepicker._gotoToday;
1530
  $.datepicker._gotoToday = function (id) {
1531
- var inst = this._getInst($(id)[0]),
1532
- $dp = inst.dpDiv;
1533
  this._base_gotoToday(id);
1534
  var tp_inst = this._get(inst, 'timepicker');
1535
- selectLocalTimezone(tp_inst);
 
 
 
 
1536
  var now = new Date();
 
1537
  this._setTime(inst, now);
1538
- $('.ui-datepicker-today', $dp).click();
 
1539
  };
1540
 
1541
  /*
@@ -1587,7 +1635,7 @@
1587
  tp_inst.millisec = date ? date.getMilliseconds() : defaults.millisec;
1588
  tp_inst.microsec = date ? date.getMicroseconds() : defaults.microsec;
1589
 
1590
- //check if within min/max times..
1591
  tp_inst._limitMinMaxDateTime(inst, true);
1592
 
1593
  tp_inst._onTimeChange();
@@ -1655,9 +1703,9 @@
1655
  } else {
1656
  tp_date = date;
1657
  }
1658
-
1659
- // This is important if you are using the timezone option, javascript's Date
1660
- // object will only return the timezone offset for the current locale, so we
1661
  // adjust it accordingly. If not using timezone option this won't matter..
1662
  // If a timezone is different in tp, keep the timezone as is
1663
  if (tp_inst && tp_date) {
@@ -1665,8 +1713,8 @@
1665
  if (!tp_inst.support.timezone && tp_inst._defaults.timezone === null) {
1666
  tp_inst.timezone = tp_date.getTimezoneOffset() * -1;
1667
  }
1668
- date = $.timepicker.timezoneAdjust(date, tp_inst.timezone);
1669
- tp_date = $.timepicker.timezoneAdjust(tp_date, tp_inst.timezone);
1670
  }
1671
 
1672
  this._updateDatepicker(inst);
@@ -1693,19 +1741,39 @@
1693
  }
1694
 
1695
  var date = this._getDate(inst);
1696
- if (date && tp_inst._parseTime($(target).val(), tp_inst.timeOnly)) {
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1697
  date.setHours(tp_inst.hour, tp_inst.minute, tp_inst.second, tp_inst.millisec);
1698
  date.setMicroseconds(tp_inst.microsec);
1699
 
1700
- // This is important if you are using the timezone option, javascript's Date
1701
- // object will only return the timezone offset for the current locale, so we
1702
  // adjust it accordingly. If not using timezone option this won't matter..
1703
  if (tp_inst.timezone != null) {
1704
  // look out for DST if tz wasn't specified
1705
  if (!tp_inst.support.timezone && tp_inst._defaults.timezone === null) {
1706
  tp_inst.timezone = date.getTimezoneOffset() * -1;
1707
  }
1708
- date = $.timepicker.timezoneAdjust(date, tp_inst.timezone);
1709
  }
1710
  }
1711
  return date;
@@ -1767,7 +1835,10 @@
1767
  onselect = null,
1768
  overrides = tp_inst._defaults.evnts,
1769
  fns = {},
1770
- prop;
 
 
 
1771
  if (typeof name === 'string') { // if min/max was set with the string
1772
  if (name === 'minDate' || name === 'minDateTime') {
1773
  min = value;
@@ -1825,13 +1896,24 @@
1825
  } else if (onselect) {
1826
  tp_inst._defaults.onSelect = onselect;
1827
  }
 
 
 
 
 
 
 
 
 
 
 
1828
  }
1829
  if (value === undefined) {
1830
  return this._base_optionDatepicker.call($.datepicker, target, name);
1831
  }
1832
  return this._base_optionDatepicker.call($.datepicker, target, name_clone || name, value);
1833
  };
1834
-
1835
  /*
1836
  * jQuery isEmptyObject does not check hasOwnProperty - if someone has added to the object prototype,
1837
  * it will return false for all objects
@@ -1989,7 +2071,7 @@
1989
  hours = (off - minutes) / 60,
1990
  iso = iso8601 ? ':' : '',
1991
  tz = (off >= 0 ? '+' : '-') + ('0' + Math.abs(hours)).slice(-2) + iso + ('0' + Math.abs(minutes)).slice(-2);
1992
-
1993
  if (tz === '+00:00') {
1994
  return 'Z';
1995
  }
@@ -2009,7 +2091,7 @@
2009
  }
2010
 
2011
  if (!/^(\-|\+)\d{4}$/.test(normalized)) { // possibly a user defined tz, so just give it back
2012
- return tzString;
2013
  }
2014
 
2015
  return ((normalized.substr(0, 1) === '-' ? -1 : 1) * // plus or minus
@@ -2020,13 +2102,15 @@
2020
  /**
2021
  * No way to set timezone in js Date, so we must adjust the minutes to compensate. (think setDate, getDate)
2022
  * @param {Date} date
 
2023
  * @param {string} toTimezone formatted like "+0500", "-1245"
2024
  * @return {Date}
2025
  */
2026
- $.timepicker.timezoneAdjust = function (date, toTimezone) {
 
2027
  var toTz = $.timepicker.timezoneOffsetNumber(toTimezone);
2028
  if (!isNaN(toTz)) {
2029
- date.setMinutes(date.getMinutes() + -date.getTimezoneOffset() - toTz);
2030
  }
2031
  return date;
2032
  };
@@ -2133,6 +2217,7 @@
2133
  date.setMilliseconds(date.getMilliseconds() - options.minInterval);
2134
  }
2135
  }
 
2136
  if (date.getTime) {
2137
  other[method].call(other, 'option', option, date);
2138
  }
@@ -2158,8 +2243,10 @@
2158
  }, options, options.end));
2159
 
2160
  checkDates(startTime, endTime);
 
2161
  selected(startTime, endTime, 'minDate');
2162
  selected(endTime, startTime, 'maxDate');
 
2163
  return $([startTime.get(0), endTime.get(0)]);
2164
  };
2165
 
@@ -2168,9 +2255,10 @@
2168
  * @param {Object} err pass any type object to log to the console during error or debugging
2169
  * @return {void}
2170
  */
2171
- $.timepicker.log = function (err) {
2172
- if (window.console) {
2173
- window.console.log(err);
 
2174
  }
2175
  };
2176
 
@@ -2206,4 +2294,4 @@
2206
  */
2207
  $.timepicker.version = "@@version";
2208
 
2209
- })(jQuery);
7
  * http://trentrichardson.com/Impromptu/MIT-LICENSE.txt
8
  */
9
 
10
+ (function (factory) {
11
+ if (typeof define === 'function' && define.amd) {
12
+ define(['jquery', 'jquery-ui'], factory);
13
+ } else {
14
+ factory(jQuery);
15
+ }
16
+ }(function ($) {
17
 
18
  /*
19
  * Lets not redefine timepicker, Prevent "Uncaught RangeError: Maximum call stack size exceeded"
32
  }
33
  });
34
 
35
+ /*
36
  * Timepicker manager.
37
  * Use the singleton instance of this class, $.timepicker, to interact with the time picker.
38
  * Settings for (groups of) time pickers are maintained in an instance object,
113
  addSliderAccess: false,
114
  sliderAccessArgs: null,
115
  controlType: 'slider',
116
+ oneLine: false,
117
  defaultValue: null,
118
+ parse: 'strict',
119
+ afterInject: null
120
  };
121
  $.extend(this._defaults, this.regional['']);
122
  };
159
  support: {},
160
  control: null,
161
 
162
+ /*
163
  * Override the default settings for all instances of the time picker.
164
  * @param {Object} settings object - the new settings to use as defaults (anonymous object)
165
  * @return {Object} the manager object
199
  },
200
  onChangeMonthYear: function (year, month, dp_inst) {
201
  // Update the time as well : this prevents the time from disappearing from the $input field.
202
+ // tp_inst._updateDateTime(dp_inst);
203
  if ($.isFunction(tp_inst._defaults.evnts.onChangeMonthYear)) {
204
  tp_inst._defaults.evnts.onChangeMonthYear.call($input[0], year, month, dp_inst, tp_inst);
205
  }
215
  };
216
  for (i in overrides) {
217
  if (overrides.hasOwnProperty(i)) {
218
+ fns[i] = opts[i] || this._defaults[i] || null;
219
  }
220
  }
221
 
232
 
233
  // detect which units are supported
234
  tp_inst.support = detectSupport(
235
+ tp_inst._defaults.timeFormat +
236
  (tp_inst._defaults.pickerTimeFormat ? tp_inst._defaults.pickerTimeFormat : '') +
237
  (tp_inst._defaults.altTimeFormat ? tp_inst._defaults.altTimeFormat : ''));
238
 
321
  * add our sliders to the calendar
322
  */
323
  _addTimePicker: function (dp_inst) {
324
+ var currDT = $.trim((this.$altInput && this._defaults.altFieldTimeOnly) ? this.$input.val() + ' ' + this.$altInput.val() : this.$input.val());
325
 
326
  this.timeDefined = this._parseTime(currDT);
327
  this._limitMinMaxDateTime(dp_inst, false);
328
  this._injectTimePicker();
329
+ this._afterInject();
330
  },
331
 
332
  /*
363
  }
364
  },
365
 
366
+ /*
367
+ * Handle callback option after injecting timepicker
368
+ */
369
+ _afterInject: function() {
370
+ var o = this.inst.settings;
371
+ if ($.isFunction(o.afterInject)) {
372
+ o.afterInject.call(this);
373
+ }
374
+ },
375
+
376
  /*
377
  * generate and inject html for timepicker into ui datepicker
378
  */
391
 
392
  // Prevent displaying twice
393
  if ($dp.find("div.ui-timepicker-div").length === 0 && o.showTimepicker) {
394
+ var noDisplay = ' ui_tpicker_unit_hide',
395
+ html = '<div class="ui-timepicker-div' + (o.isRTL ? ' ui-timepicker-rtl' : '') + (o.oneLine && o.controlType === 'select' ? ' ui-timepicker-oneLine' : '') + '"><dl>' + '<dt class="ui_tpicker_time_label' + ((o.showTime) ? '' : noDisplay) + '">' + o.timeText + '</dt>' +
396
+ '<dd class="ui_tpicker_time '+ ((o.showTime) ? '' : noDisplay) + '"><input class="ui_tpicker_time_input" ' + (o.timeInput ? '' : 'disabled') + '/></dd>';
397
 
398
  // Create the markup
399
  for (i = 0, l = this.units.length; i < l; i++) {
407
  max[litem] = parseInt((o[litem + 'Max'] - ((o[litem + 'Max'] - o[litem + 'Min']) % o['step' + uitem])), 10);
408
  gridSize[litem] = 0;
409
 
410
+ html += '<dt class="ui_tpicker_' + litem + '_label' + (show ? '' : noDisplay) + '">' + o[litem + 'Text'] + '</dt>' +
411
+ '<dd class="ui_tpicker_' + litem + (show ? '' : noDisplay) + '"><div class="ui_tpicker_' + litem + '_slider' + (show ? '' : noDisplay) + '"></div>';
412
 
413
  if (show && o[litem + 'Grid'] > 0) {
414
  html += '<div style="padding-left: 1px"><table class="ui-tpicker-grid-label"><tr>';
431
  }
432
  html += '</dd>';
433
  }
434
+
435
  // Timezone
436
  var showTz = o.showTimezone !== null ? o.showTimezone : this.support.timezone;
437
+ html += '<dt class="ui_tpicker_timezone_label' + (showTz ? '' : noDisplay) + '">' + o.timezoneText + '</dt>';
438
+ html += '<dd class="ui_tpicker_timezone' + (showTz ? '' : noDisplay) + '"></dd>';
439
 
440
  // Create the elements from string
441
  html += '</dl></div>';
446
  $tp.prepend('<div class="ui-widget-header ui-helper-clearfix ui-corner-all">' + '<div class="ui-datepicker-title">' + o.timeOnlyTitle + '</div>' + '</div>');
447
  $dp.find('.ui-datepicker-header, .ui-datepicker-calendar').hide();
448
  }
449
+
450
  // add sliders, adjust grids, add events
451
  for (i = 0, l = tp_inst.units.length; i < l; i++) {
452
  litem = tp_inst.units[i];
481
  }
482
  }
483
  }
484
+
485
  tp_inst.control.value(tp_inst, tp_inst[f + '_slider'], litem, n);
486
 
487
  tp_inst._onTimeChange();
518
  this.timezone_select.change(function () {
519
  tp_inst._onTimeChange();
520
  tp_inst._onSelectHandler();
521
+ tp_inst._afterInject();
522
  });
523
  // End timezone options
524
+
525
  // inject timepicker into datepicker
526
  var $buttonPanel = $dp.find('.ui-datepicker-buttonpane');
527
  if ($buttonPanel.length) {
530
  $dp.append($tp);
531
  }
532
 
533
+ this.$timeObj = $tp.find('.ui_tpicker_time_input');
534
+ this.$timeObj.change(function () {
535
+ var timeFormat = tp_inst.inst.settings.timeFormat;
536
+ var parsedTime = $.datepicker.parseTime(timeFormat, this.value);
537
+ var update = new Date();
538
+ if (parsedTime) {
539
+ update.setHours(parsedTime.hour);
540
+ update.setMinutes(parsedTime.minute);
541
+ update.setSeconds(parsedTime.second);
542
+ $.datepicker._setTime(tp_inst.inst, update);
543
+ } else {
544
+ this.value = tp_inst.formattedTime;
545
+ this.blur();
546
+ }
547
+ });
548
 
549
  if (this.inst !== null) {
550
  var timeDefined = this.timeDefined;
557
  var sliderAccessArgs = this._defaults.sliderAccessArgs,
558
  rtl = this._defaults.isRTL;
559
  sliderAccessArgs.isRTL = rtl;
560
+
561
  setTimeout(function () { // fix for inline mode
562
  if ($tp.find('.ui-slider-access').length === 0) {
563
  $tp.find('.ui-slider:visible').sliderAccess(sliderAccessArgs);
709
  }
710
  }
711
 
712
+ if (dp_inst.settings.minTime!==null) {
713
+ var tempMinTime=new Date("01/01/1970 " + dp_inst.settings.minTime);
714
  if (this.hour<tempMinTime.getHours()) {
715
  this.hour=this._defaults.hourMin=tempMinTime.getHours();
716
+ this.minute=this._defaults.minuteMin=tempMinTime.getMinutes();
717
  } else if (this.hour===tempMinTime.getHours() && this.minute<tempMinTime.getMinutes()) {
718
  this.minute=this._defaults.minuteMin=tempMinTime.getMinutes();
719
+ } else {
720
  if (this._defaults.hourMin<tempMinTime.getHours()) {
721
  this._defaults.hourMin=tempMinTime.getHours();
722
+ this._defaults.minuteMin=tempMinTime.getMinutes();
723
  } else if (this._defaults.hourMin===tempMinTime.getHours()===this.hour && this._defaults.minuteMin<tempMinTime.getMinutes()) {
724
+ this._defaults.minuteMin=tempMinTime.getMinutes();
725
  } else {
726
  this._defaults.minuteMin=0;
727
  }
728
+ }
729
  }
730
+
731
+ if (dp_inst.settings.maxTime!==null) {
732
  var tempMaxTime=new Date("01/01/1970 " + dp_inst.settings.maxTime);
733
  if (this.hour>tempMaxTime.getHours()) {
734
+ this.hour=this._defaults.hourMax=tempMaxTime.getHours();
735
+ this.minute=this._defaults.minuteMax=tempMaxTime.getMinutes();
736
+ } else if (this.hour===tempMaxTime.getHours() && this.minute>tempMaxTime.getMinutes()) {
737
  this.minute=this._defaults.minuteMax=tempMaxTime.getMinutes();
 
 
738
  } else {
739
  if (this._defaults.hourMax>tempMaxTime.getHours()) {
740
  this._defaults.hourMax=tempMaxTime.getHours();
741
+ this._defaults.minuteMax=tempMaxTime.getMinutes();
742
  } else if (this._defaults.hourMax===tempMaxTime.getHours()===this.hour && this._defaults.minuteMax>tempMaxTime.getMinutes()) {
743
+ this._defaults.minuteMax=tempMaxTime.getMinutes();
744
  } else {
745
  this._defaults.minuteMax=59;
746
  }
747
+ }
748
  }
749
+
750
  if (adjustSliders !== undefined && adjustSliders === true) {
751
  var hourMax = parseInt((this._defaults.hourMax - ((this._defaults.hourMax - this._defaults.hourMin) % this._defaults.stepHour)), 10),
752
  minMax = parseInt((this._defaults.minuteMax - ((this._defaults.minuteMax - this._defaults.minuteMin) % this._defaults.stepMinute)), 10),
840
  // If the update was done using the sliders, update the input field.
841
  var hasChanged = (
842
  hour !== parseInt(this.hour,10) || // sliders should all be numeric
843
+ minute !== parseInt(this.minute,10) ||
844
+ second !== parseInt(this.second,10) ||
845
+ millisec !== parseInt(this.millisec,10) ||
846
+ microsec !== parseInt(this.microsec,10) ||
847
+ (this.ampm.length > 0 && (hour < 12) !== ($.inArray(this.ampm.toUpperCase(), this.amNames) !== -1)) ||
848
  (this.timezone !== null && timezone !== this.timezone.toString()) // could be numeric or "EST" format, so use toString()
849
  );
850
 
883
  this.formattedTime = $.datepicker.formatTime(o.timeFormat, this, o);
884
  if (this.$timeObj) {
885
  if (pickerTimeFormat === o.timeFormat) {
886
+ this.$timeObj.val(this.formattedTime + pickerTimeSuffix);
887
  }
888
  else {
889
+ this.$timeObj.val($.datepicker.formatTime(pickerTimeFormat, this, o) + pickerTimeSuffix);
890
+ }
891
+ if (this.$timeObj[0].setSelectionRange) {
892
+ var sPos = this.$timeObj[0].selectionStart;
893
+ var ePos = this.$timeObj[0].selectionEnd;
894
+ this.$timeObj[0].setSelectionRange(sPos, ePos);
895
  }
896
  }
897
 
919
  */
920
  _updateDateTime: function (dp_inst) {
921
  dp_inst = this.inst || dp_inst;
922
+ var dtTmp = (dp_inst.currentYear > 0?
923
+ new Date(dp_inst.currentYear, dp_inst.currentMonth, dp_inst.currentDay) :
924
  new Date(dp_inst.selectedYear, dp_inst.selectedMonth, dp_inst.selectedDay)),
925
  dt = $.datepicker._daylightSavingAdjust(dtTmp),
926
  //dt = $.datepicker._daylightSavingAdjust(new Date(dp_inst.selectedYear, dp_inst.selectedMonth, dp_inst.selectedDay)),
930
  timeAvailable = dt !== null && this.timeDefined;
931
  this.formattedDate = $.datepicker.formatDate(dateFmt, (dt === null ? new Date() : dt), formatCfg);
932
  var formattedDateTime = this.formattedDate;
933
+
934
  // if a slider was changed but datepicker doesn't have a value yet, set it
935
  if (dp_inst.lastVal === "") {
936
  dp_inst.currentYear = dp_inst.selectedYear;
940
 
941
  /*
942
  * remove following lines to force every changes in date picker to change the input value
943
+ * Bug descriptions: when an input field has a default value, and click on the field to pop up the date picker.
944
  * If the user manually empty the value in the input field, the date picker will never change selected value.
945
  */
946
  //if (dp_inst.lastVal !== undefined && (dp_inst.lastVal.length > 0 && this.$input.val().length === 0)) {
965
  var altFormattedDateTime = '',
966
  altSeparator = this._defaults.altSeparator !== null ? this._defaults.altSeparator : this._defaults.separator,
967
  altTimeSuffix = this._defaults.altTimeSuffix !== null ? this._defaults.altTimeSuffix : this._defaults.timeSuffix;
968
+
969
  if (!this._defaults.timeOnly) {
970
  if (this._defaults.altFormat) {
971
  altFormattedDateTime = $.datepicker.formatDate(this._defaults.altFormat, (dt === null ? new Date() : dt), formatCfg);
1032
  stop: function (event, ui) {
1033
  tp_inst._onSelectHandler();
1034
  }
1035
+ });
1036
  },
1037
  options: function (tp_inst, obj, unit, opts, val) {
1038
  if (tp_inst._defaults.isRTL) {
1045
  }
1046
  return obj.slider(opts);
1047
  }
1048
+ var min = opts.min,
1049
  max = opts.max;
1050
  opts.min = opts.max = null;
1051
  if (min !== undefined) {
1077
  // select methods
1078
  select: {
1079
  create: function (tp_inst, obj, unit, val, min, max, step) {
1080
+ var sel = '<select class="ui-timepicker-select ui-state-default ui-corner-all" data-unit="' + unit + '" data-min="' + min + '" data-max="' + max + '" data-step="' + step + '">',
1081
  format = tp_inst._defaults.pickerTimeFormat || tp_inst._defaults.timeFormat;
1082
 
1083
  for (var i = min; i <= max; i += step) {
1096
  $(sel).appendTo(obj).change(function (e) {
1097
  tp_inst._onTimeChange();
1098
  tp_inst._onSelectHandler();
1099
+ tp_inst._afterInject();
1100
  });
1101
 
1102
  return obj;
1108
  if (val === undefined) {
1109
  return $t.data(opts);
1110
  }
1111
+ o[opts] = val;
1112
  }
1113
  else { o = opts; }
1114
+ return tp_inst.control.create(tp_inst, obj, $t.data('unit'), $t.val(), o.min>=0 ? o.min : $t.data('min'), o.max || $t.data('max'), o.step || $t.data('step'));
1115
  },
1116
  value: function (tp_inst, obj, unit, val) {
1117
  var $t = obj.children('select');
1275
  ampm = '';
1276
  resTime.ampm = '';
1277
  } else {
1278
+ ampm = $.inArray(treg[order.t].toUpperCase(), $.map(o.amNames, function (x,i) { return x.toUpperCase(); })) !== -1 ? 'AM' : 'PM';
1279
  resTime.ampm = o[ampm === 'AM' ? 'amNames' : 'pmNames'][0];
1280
  }
1281
  }
1343
  }
1344
  catch (err2) {
1345
  $.timepicker.log("Unable to parse \ntimeString: " + s + "\ntimeFormat: " + f);
1346
+ }
1347
  }
1348
  return false;
1349
  }; // end looseParse
1350
+
1351
  if (typeof o.parse === "function") {
1352
  return o.parse(timeFormat, timeString, o);
1353
  }
1433
  $.datepicker._base_selectDate = $.datepicker._selectDate;
1434
  $.datepicker._selectDate = function (id, dateStr) {
1435
  var inst = this._getInst($(id)[0]),
1436
+ tp_inst = this._get(inst, 'timepicker'),
1437
+ was_inline;
1438
 
1439
  if (tp_inst && inst.settings.showTimepicker) {
1440
  tp_inst._limitMinMaxDateTime(inst, true);
1441
+ was_inline = inst.inline;
1442
  inst.inline = inst.stay_open = true;
1443
  //This way the onSelect handler called from calendarpicker get the full dateTime
1444
  this._base_selectDate(id, dateStr);
1445
+ inst.inline = was_inline;
1446
+ inst.stay_open = false;
1447
  this._notifyChange(inst);
1448
  this._updateDatepicker(inst);
1449
  } else {
1496
  .replace(/tT/g, ampm ? 'AaPpMm' : '')
1497
  .replace(/T/g, ampm ? 'AP' : '')
1498
  .replace(/tt/g, ampm ? 'apm' : '')
1499
+ .replace(/t/g, ampm ? 'ap' : '') +
1500
+ " " + tp_inst._defaults.separator +
1501
+ tp_inst._defaults.timeSuffix +
1502
+ (tz ? tp_inst._defaults.timezoneList.join('') : '') +
1503
+ (tp_inst._defaults.amNames.join('')) + (tp_inst._defaults.pmNames.join('')) +
1504
  dateChars,
1505
  chr = String.fromCharCode(event.charCode === undefined ? event.keyCode : event.charCode);
1506
  return event.ctrlKey || (chr < ' ' || !dateChars || datetimeChars.indexOf(chr) > -1);
1523
  var altFormat = tp_inst._defaults.altFormat || tp_inst._defaults.dateFormat,
1524
  date = this._getDate(inst),
1525
  formatCfg = $.datepicker._getFormatConfig(inst),
1526
+ altFormattedDateTime = '',
1527
+ altSeparator = tp_inst._defaults.altSeparator ? tp_inst._defaults.altSeparator : tp_inst._defaults.separator,
1528
  altTimeSuffix = tp_inst._defaults.altTimeSuffix ? tp_inst._defaults.altTimeSuffix : tp_inst._defaults.timeSuffix,
1529
  altTimeFormat = tp_inst._defaults.altTimeFormat !== null ? tp_inst._defaults.altTimeFormat : tp_inst._defaults.timeFormat;
1530
+
1531
  altFormattedDateTime += $.datepicker.formatTime(altTimeFormat, tp_inst, tp_inst._defaults) + altTimeSuffix;
1532
  if (!tp_inst._defaults.timeOnly && !tp_inst._defaults.altFieldTimeOnly && date !== null) {
1533
  if (tp_inst._defaults.altFormat) {
1541
  }
1542
  }
1543
  else {
1544
+ $.datepicker._base_updateAlternate(inst);
1545
  }
1546
  };
1547
 
1567
  };
1568
 
1569
  /*
1570
+ * override "Today" button to also grab the time and set it to input field.
1571
  */
1572
  $.datepicker._base_gotoToday = $.datepicker._gotoToday;
1573
  $.datepicker._gotoToday = function (id) {
1574
+ var inst = this._getInst($(id)[0]);
 
1575
  this._base_gotoToday(id);
1576
  var tp_inst = this._get(inst, 'timepicker');
1577
+ if (!tp_inst) {
1578
+ return;
1579
+ }
1580
+
1581
+ var tzoffset = $.timepicker.timezoneOffsetNumber(tp_inst.timezone);
1582
  var now = new Date();
1583
+ now.setMinutes(now.getMinutes() + now.getTimezoneOffset() + parseInt(tzoffset, 10));
1584
  this._setTime(inst, now);
1585
+ this._setDate(inst, now);
1586
+ tp_inst._onSelectHandler();
1587
  };
1588
 
1589
  /*
1635
  tp_inst.millisec = date ? date.getMilliseconds() : defaults.millisec;
1636
  tp_inst.microsec = date ? date.getMicroseconds() : defaults.microsec;
1637
 
1638
+ //check if within min/max times..
1639
  tp_inst._limitMinMaxDateTime(inst, true);
1640
 
1641
  tp_inst._onTimeChange();
1703
  } else {
1704
  tp_date = date;
1705
  }
1706
+
1707
+ // This is important if you are using the timezone option, javascript's Date
1708
+ // object will only return the timezone offset for the current locale, so we
1709
  // adjust it accordingly. If not using timezone option this won't matter..
1710
  // If a timezone is different in tp, keep the timezone as is
1711
  if (tp_inst && tp_date) {
1713
  if (!tp_inst.support.timezone && tp_inst._defaults.timezone === null) {
1714
  tp_inst.timezone = tp_date.getTimezoneOffset() * -1;
1715
  }
1716
+ date = $.timepicker.timezoneAdjust(date, $.timepicker.timezoneOffsetString(-date.getTimezoneOffset()), tp_inst.timezone);
1717
+ tp_date = $.timepicker.timezoneAdjust(tp_date, $.timepicker.timezoneOffsetString(-tp_date.getTimezoneOffset()), tp_inst.timezone);
1718
  }
1719
 
1720
  this._updateDatepicker(inst);
1741
  }
1742
 
1743
  var date = this._getDate(inst);
1744
+
1745
+ var currDT = null;
1746
+
1747
+ if (tp_inst.$altInput && tp_inst._defaults.altFieldTimeOnly) {
1748
+ currDT = tp_inst.$input.val() + ' ' + tp_inst.$altInput.val();
1749
+ }
1750
+ else if (tp_inst.$input.get(0).tagName !== 'INPUT' && tp_inst.$altInput) {
1751
+ /**
1752
+ * in case the datetimepicker has been applied to a non-input tag for inline UI,
1753
+ * and the user has not configured the plugin to display only time in altInput,
1754
+ * pick current date time from the altInput (and hope for the best, for now, until "ER1" is applied)
1755
+ *
1756
+ * @todo ER1. Since altInput can have a totally difference format, convert it to standard format by reading input format from "altFormat" and "altTimeFormat" option values
1757
+ */
1758
+ currDT = tp_inst.$altInput.val();
1759
+ }
1760
+ else {
1761
+ currDT = tp_inst.$input.val();
1762
+ }
1763
+
1764
+ if (date && tp_inst._parseTime(currDT, !inst.settings.timeOnly)) {
1765
  date.setHours(tp_inst.hour, tp_inst.minute, tp_inst.second, tp_inst.millisec);
1766
  date.setMicroseconds(tp_inst.microsec);
1767
 
1768
+ // This is important if you are using the timezone option, javascript's Date
1769
+ // object will only return the timezone offset for the current locale, so we
1770
  // adjust it accordingly. If not using timezone option this won't matter..
1771
  if (tp_inst.timezone != null) {
1772
  // look out for DST if tz wasn't specified
1773
  if (!tp_inst.support.timezone && tp_inst._defaults.timezone === null) {
1774
  tp_inst.timezone = date.getTimezoneOffset() * -1;
1775
  }
1776
+ date = $.timepicker.timezoneAdjust(date, tp_inst.timezone, $.timepicker.timezoneOffsetString(-date.getTimezoneOffset()));
1777
  }
1778
  }
1779
  return date;
1835
  onselect = null,
1836
  overrides = tp_inst._defaults.evnts,
1837
  fns = {},
1838
+ prop,
1839
+ ret,
1840
+ oldVal,
1841
+ $target;
1842
  if (typeof name === 'string') { // if min/max was set with the string
1843
  if (name === 'minDate' || name === 'minDateTime') {
1844
  min = value;
1896
  } else if (onselect) {
1897
  tp_inst._defaults.onSelect = onselect;
1898
  }
1899
+
1900
+ // Datepicker will override our date when we call _base_optionDatepicker when
1901
+ // calling minDate/maxDate, so we will first grab the value, call
1902
+ // _base_optionDatepicker, then set our value back.
1903
+ if(min || max){
1904
+ $target = $(target);
1905
+ oldVal = $target.datetimepicker('getDate');
1906
+ ret = this._base_optionDatepicker.call($.datepicker, target, name_clone || name, value);
1907
+ $target.datetimepicker('setDate', oldVal);
1908
+ return ret;
1909
+ }
1910
  }
1911
  if (value === undefined) {
1912
  return this._base_optionDatepicker.call($.datepicker, target, name);
1913
  }
1914
  return this._base_optionDatepicker.call($.datepicker, target, name_clone || name, value);
1915
  };
1916
+
1917
  /*
1918
  * jQuery isEmptyObject does not check hasOwnProperty - if someone has added to the object prototype,
1919
  * it will return false for all objects
2071
  hours = (off - minutes) / 60,
2072
  iso = iso8601 ? ':' : '',
2073
  tz = (off >= 0 ? '+' : '-') + ('0' + Math.abs(hours)).slice(-2) + iso + ('0' + Math.abs(minutes)).slice(-2);
2074
+
2075
  if (tz === '+00:00') {
2076
  return 'Z';
2077
  }
2091
  }
2092
 
2093
  if (!/^(\-|\+)\d{4}$/.test(normalized)) { // possibly a user defined tz, so just give it back
2094
+ return parseInt(tzString, 10);
2095
  }
2096
 
2097
  return ((normalized.substr(0, 1) === '-' ? -1 : 1) * // plus or minus
2102
  /**
2103
  * No way to set timezone in js Date, so we must adjust the minutes to compensate. (think setDate, getDate)
2104
  * @param {Date} date
2105
+ * @param {string} fromTimezone formatted like "+0500", "-1245"
2106
  * @param {string} toTimezone formatted like "+0500", "-1245"
2107
  * @return {Date}
2108
  */
2109
+ $.timepicker.timezoneAdjust = function (date, fromTimezone, toTimezone) {
2110
+ var fromTz = $.timepicker.timezoneOffsetNumber(fromTimezone);
2111
  var toTz = $.timepicker.timezoneOffsetNumber(toTimezone);
2112
  if (!isNaN(toTz)) {
2113
+ date.setMinutes(date.getMinutes() + (-fromTz) - (-toTz));
2114
  }
2115
  return date;
2116
  };
2217
  date.setMilliseconds(date.getMilliseconds() - options.minInterval);
2218
  }
2219
  }
2220
+
2221
  if (date.getTime) {
2222
  other[method].call(other, 'option', option, date);
2223
  }
2243
  }, options, options.end));
2244
 
2245
  checkDates(startTime, endTime);
2246
+
2247
  selected(startTime, endTime, 'minDate');
2248
  selected(endTime, startTime, 'maxDate');
2249
+
2250
  return $([startTime.get(0), endTime.get(0)]);
2251
  };
2252
 
2255
  * @param {Object} err pass any type object to log to the console during error or debugging
2256
  * @return {void}
2257
  */
2258
+ $.timepicker.log = function () {
2259
+ // Older IE (9, maybe 10) throw error on accessing `window.console.log.apply`, so check first.
2260
+ if (window.console && window.console.log && window.console.log.apply) {
2261
+ window.console.log.apply(window.console, Array.prototype.slice.call(arguments));
2262
  }
2263
  };
2264
 
2294
  */
2295
  $.timepicker.version = "@@version";
2296
 
2297
+ }));
assets/js/jquery-ui-timepicker-addon.min.js ADDED
@@ -0,0 +1,2 @@
 
 
1
+ !function(a){"function"==typeof define&&define.amd?define(["jquery","jquery-ui"],a):a(jQuery)}(function($){if($.ui.timepicker=$.ui.timepicker||{},!$.ui.timepicker.version){$.extend($.ui,{timepicker:{version:"@@version"}});var Timepicker=function(){this.regional=[],this.regional[""]={currentText:"Now",closeText:"Done",amNames:["AM","A"],pmNames:["PM","P"],timeFormat:"HH:mm",timeSuffix:"",timeOnlyTitle:"Choose Time",timeText:"Time",hourText:"Hour",minuteText:"Minute",secondText:"Second",millisecText:"Millisecond",microsecText:"Microsecond",timezoneText:"Time Zone",isRTL:!1},this._defaults={showButtonPanel:!0,timeOnly:!1,timeOnlyShowDate:!1,showHour:null,showMinute:null,showSecond:null,showMillisec:null,showMicrosec:null,showTimezone:null,showTime:!0,stepHour:1,stepMinute:1,stepSecond:1,stepMillisec:1,stepMicrosec:1,hour:0,minute:0,second:0,millisec:0,microsec:0,timezone:null,hourMin:0,minuteMin:0,secondMin:0,millisecMin:0,microsecMin:0,hourMax:23,minuteMax:59,secondMax:59,millisecMax:999,microsecMax:999,minDateTime:null,maxDateTime:null,maxTime:null,minTime:null,onSelect:null,hourGrid:0,minuteGrid:0,secondGrid:0,millisecGrid:0,microsecGrid:0,alwaysSetTime:!0,separator:" ",altFieldTimeOnly:!0,altTimeFormat:null,altSeparator:null,altTimeSuffix:null,altRedirectFocus:!0,pickerTimeFormat:null,pickerTimeSuffix:null,showTimepicker:!0,timezoneList:null,addSliderAccess:!1,sliderAccessArgs:null,controlType:"slider",oneLine:!1,defaultValue:null,parse:"strict",afterInject:null},$.extend(this._defaults,this.regional[""])};$.extend(Timepicker.prototype,{$input:null,$altInput:null,$timeObj:null,inst:null,hour_slider:null,minute_slider:null,second_slider:null,millisec_slider:null,microsec_slider:null,timezone_select:null,maxTime:null,minTime:null,hour:0,minute:0,second:0,millisec:0,microsec:0,timezone:null,hourMinOriginal:null,minuteMinOriginal:null,secondMinOriginal:null,millisecMinOriginal:null,microsecMinOriginal:null,hourMaxOriginal:null,minuteMaxOriginal:null,secondMaxOriginal:null,millisecMaxOriginal:null,microsecMaxOriginal:null,ampm:"",formattedDate:"",formattedTime:"",formattedDateTime:"",timezoneList:null,units:["hour","minute","second","millisec","microsec"],support:{},control:null,setDefaults:function(a){return extendRemove(this._defaults,a||{}),this},_newInst:function($input,opts){var tp_inst=new Timepicker,inlineSettings={},fns={},overrides,i;for(var attrName in this._defaults)if(this._defaults.hasOwnProperty(attrName)){var attrValue=$input.attr("time:"+attrName);if(attrValue)try{inlineSettings[attrName]=eval(attrValue)}catch(err){inlineSettings[attrName]=attrValue}}overrides={beforeShow:function(a,b){return $.isFunction(tp_inst._defaults.evnts.beforeShow)?tp_inst._defaults.evnts.beforeShow.call($input[0],a,b,tp_inst):void 0},onChangeMonthYear:function(a,b,c){$.isFunction(tp_inst._defaults.evnts.onChangeMonthYear)&&tp_inst._defaults.evnts.onChangeMonthYear.call($input[0],a,b,c,tp_inst)},onClose:function(a,b){tp_inst.timeDefined===!0&&""!==$input.val()&&tp_inst._updateDateTime(b),$.isFunction(tp_inst._defaults.evnts.onClose)&&tp_inst._defaults.evnts.onClose.call($input[0],a,b,tp_inst)}};for(i in overrides)overrides.hasOwnProperty(i)&&(fns[i]=opts[i]||this._defaults[i]||null);tp_inst._defaults=$.extend({},this._defaults,inlineSettings,opts,overrides,{evnts:fns,timepicker:tp_inst}),tp_inst.amNames=$.map(tp_inst._defaults.amNames,function(a){return a.toUpperCase()}),tp_inst.pmNames=$.map(tp_inst._defaults.pmNames,function(a){return a.toUpperCase()}),tp_inst.support=detectSupport(tp_inst._defaults.timeFormat+(tp_inst._defaults.pickerTimeFormat?tp_inst._defaults.pickerTimeFormat:"")+(tp_inst._defaults.altTimeFormat?tp_inst._defaults.altTimeFormat:"")),"string"==typeof tp_inst._defaults.controlType?("slider"===tp_inst._defaults.controlType&&"undefined"==typeof $.ui.slider&&(tp_inst._defaults.controlType="select"),tp_inst.control=tp_inst._controls[tp_inst._defaults.controlType]):tp_inst.control=tp_inst._defaults.controlType;var timezoneList=[-720,-660,-600,-570,-540,-480,-420,-360,-300,-270,-240,-210,-180,-120,-60,0,60,120,180,210,240,270,300,330,345,360,390,420,480,525,540,570,600,630,660,690,720,765,780,840];null!==tp_inst._defaults.timezoneList&&(timezoneList=tp_inst._defaults.timezoneList);var tzl=timezoneList.length,tzi=0,tzv=null;if(tzl>0&&"object"!=typeof timezoneList[0])for(;tzl>tzi;tzi++)tzv=timezoneList[tzi],timezoneList[tzi]={value:tzv,label:$.timepicker.timezoneOffsetString(tzv,tp_inst.support.iso8601)};return tp_inst._defaults.timezoneList=timezoneList,tp_inst.timezone=null!==tp_inst._defaults.timezone?$.timepicker.timezoneOffsetNumber(tp_inst._defaults.timezone):-1*(new Date).getTimezoneOffset(),tp_inst.hour=tp_inst._defaults.hour<tp_inst._defaults.hourMin?tp_inst._defaults.hourMin:tp_inst._defaults.hour>tp_inst._defaults.hourMax?tp_inst._defaults.hourMax:tp_inst._defaults.hour,tp_inst.minute=tp_inst._defaults.minute<tp_inst._defaults.minuteMin?tp_inst._defaults.minuteMin:tp_inst._defaults.minute>tp_inst._defaults.minuteMax?tp_inst._defaults.minuteMax:tp_inst._defaults.minute,tp_inst.second=tp_inst._defaults.second<tp_inst._defaults.secondMin?tp_inst._defaults.secondMin:tp_inst._defaults.second>tp_inst._defaults.secondMax?tp_inst._defaults.secondMax:tp_inst._defaults.second,tp_inst.millisec=tp_inst._defaults.millisec<tp_inst._defaults.millisecMin?tp_inst._defaults.millisecMin:tp_inst._defaults.millisec>tp_inst._defaults.millisecMax?tp_inst._defaults.millisecMax:tp_inst._defaults.millisec,tp_inst.microsec=tp_inst._defaults.microsec<tp_inst._defaults.microsecMin?tp_inst._defaults.microsecMin:tp_inst._defaults.microsec>tp_inst._defaults.microsecMax?tp_inst._defaults.microsecMax:tp_inst._defaults.microsec,tp_inst.ampm="",tp_inst.$input=$input,tp_inst._defaults.altField&&(tp_inst.$altInput=$(tp_inst._defaults.altField),tp_inst._defaults.altRedirectFocus===!0&&tp_inst.$altInput.css({cursor:"pointer"}).focus(function(){$input.trigger("focus")})),0!==tp_inst._defaults.minDate&&0!==tp_inst._defaults.minDateTime||(tp_inst._defaults.minDate=new Date),0!==tp_inst._defaults.maxDate&&0!==tp_inst._defaults.maxDateTime||(tp_inst._defaults.maxDate=new Date),void 0!==tp_inst._defaults.minDate&&tp_inst._defaults.minDate instanceof Date&&(tp_inst._defaults.minDateTime=new Date(tp_inst._defaults.minDate.getTime())),void 0!==tp_inst._defaults.minDateTime&&tp_inst._defaults.minDateTime instanceof Date&&(tp_inst._defaults.minDate=new Date(tp_inst._defaults.minDateTime.getTime())),void 0!==tp_inst._defaults.maxDate&&tp_inst._defaults.maxDate instanceof Date&&(tp_inst._defaults.maxDateTime=new Date(tp_inst._defaults.maxDate.getTime())),void 0!==tp_inst._defaults.maxDateTime&&tp_inst._defaults.maxDateTime instanceof Date&&(tp_inst._defaults.maxDate=new Date(tp_inst._defaults.maxDateTime.getTime())),tp_inst.$input.bind("focus",function(){tp_inst._onFocus()}),tp_inst},_addTimePicker:function(a){var b=$.trim(this.$altInput&&this._defaults.altFieldTimeOnly?this.$input.val()+" "+this.$altInput.val():this.$input.val());this.timeDefined=this._parseTime(b),this._limitMinMaxDateTime(a,!1),this._injectTimePicker(),this._afterInject()},_parseTime:function(a,b){if(this.inst||(this.inst=$.datepicker._getInst(this.$input[0])),b||!this._defaults.timeOnly){var c=$.datepicker._get(this.inst,"dateFormat");try{var d=parseDateTimeInternal(c,this._defaults.timeFormat,a,$.datepicker._getFormatConfig(this.inst),this._defaults);if(!d.timeObj)return!1;$.extend(this,d.timeObj)}catch(e){return $.timepicker.log("Error parsing the date/time string: "+e+"\ndate/time string = "+a+"\ntimeFormat = "+this._defaults.timeFormat+"\ndateFormat = "+c),!1}return!0}var f=$.datepicker.parseTime(this._defaults.timeFormat,a,this._defaults);return f?($.extend(this,f),!0):!1},_afterInject:function(){var a=this.inst.settings;$.isFunction(a.afterInject)&&a.afterInject.call(this)},_injectTimePicker:function(){var a=this.inst.dpDiv,b=this.inst.settings,c=this,d="",e="",f=null,g={},h={},i=null,j=0,k=0;if(0===a.find("div.ui-timepicker-div").length&&b.showTimepicker){var l=" ui_tpicker_unit_hide",m='<div class="ui-timepicker-div'+(b.isRTL?" ui-timepicker-rtl":"")+(b.oneLine&&"select"===b.controlType?" ui-timepicker-oneLine":"")+'"><dl><dt class="ui_tpicker_time_label'+(b.showTime?"":l)+'">'+b.timeText+'</dt><dd class="ui_tpicker_time '+(b.showTime?"":l)+'"><input class="ui_tpicker_time_input" '+(b.timeInput?"":"disabled")+"/></dd>";for(j=0,k=this.units.length;k>j;j++){if(d=this.units[j],e=d.substr(0,1).toUpperCase()+d.substr(1),f=null!==b["show"+e]?b["show"+e]:this.support[d],g[d]=parseInt(b[d+"Max"]-(b[d+"Max"]-b[d+"Min"])%b["step"+e],10),h[d]=0,m+='<dt class="ui_tpicker_'+d+"_label"+(f?"":l)+'">'+b[d+"Text"]+'</dt><dd class="ui_tpicker_'+d+(f?"":l)+'"><div class="ui_tpicker_'+d+"_slider"+(f?"":l)+'"></div>',f&&b[d+"Grid"]>0){if(m+='<div style="padding-left: 1px"><table class="ui-tpicker-grid-label"><tr>',"hour"===d)for(var n=b[d+"Min"];n<=g[d];n+=parseInt(b[d+"Grid"],10)){h[d]++;var o=$.datepicker.formatTime(this.support.ampm?"hht":"HH",{hour:n},b);m+='<td data-for="'+d+'">'+o+"</td>"}else for(var p=b[d+"Min"];p<=g[d];p+=parseInt(b[d+"Grid"],10))h[d]++,m+='<td data-for="'+d+'">'+(10>p?"0":"")+p+"</td>";m+="</tr></table></div>"}m+="</dd>"}var q=null!==b.showTimezone?b.showTimezone:this.support.timezone;m+='<dt class="ui_tpicker_timezone_label'+(q?"":l)+'">'+b.timezoneText+"</dt>",m+='<dd class="ui_tpicker_timezone'+(q?"":l)+'"></dd>',m+="</dl></div>";var r=$(m);for(b.timeOnly===!0&&(r.prepend('<div class="ui-widget-header ui-helper-clearfix ui-corner-all"><div class="ui-datepicker-title">'+b.timeOnlyTitle+"</div></div>"),a.find(".ui-datepicker-header, .ui-datepicker-calendar").hide()),j=0,k=c.units.length;k>j;j++)d=c.units[j],e=d.substr(0,1).toUpperCase()+d.substr(1),f=null!==b["show"+e]?b["show"+e]:this.support[d],c[d+"_slider"]=c.control.create(c,r.find(".ui_tpicker_"+d+"_slider"),d,c[d],b[d+"Min"],g[d],b["step"+e]),f&&b[d+"Grid"]>0&&(i=100*h[d]*b[d+"Grid"]/(g[d]-b[d+"Min"]),r.find(".ui_tpicker_"+d+" table").css({width:i+"%",marginLeft:b.isRTL?"0":i/(-2*h[d])+"%",marginRight:b.isRTL?i/(-2*h[d])+"%":"0",borderCollapse:"collapse"}).find("td").click(function(a){var b=$(this),e=b.html(),f=parseInt(e.replace(/[^0-9]/g),10),g=e.replace(/[^apm]/gi),h=b.data("for");"hour"===h&&(-1!==g.indexOf("p")&&12>f?f+=12:-1!==g.indexOf("a")&&12===f&&(f=0)),c.control.value(c,c[h+"_slider"],d,f),c._onTimeChange(),c._onSelectHandler()}).css({cursor:"pointer",width:100/h[d]+"%",textAlign:"center",overflow:"hidden"}));if(this.timezone_select=r.find(".ui_tpicker_timezone").append("<select></select>").find("select"),$.fn.append.apply(this.timezone_select,$.map(b.timezoneList,function(a,b){return $("<option />").val("object"==typeof a?a.value:a).text("object"==typeof a?a.label:a)})),"undefined"!=typeof this.timezone&&null!==this.timezone&&""!==this.timezone){var s=-1*new Date(this.inst.selectedYear,this.inst.selectedMonth,this.inst.selectedDay,12).getTimezoneOffset();s===this.timezone?selectLocalTimezone(c):this.timezone_select.val(this.timezone)}else"undefined"!=typeof this.hour&&null!==this.hour&&""!==this.hour?this.timezone_select.val(b.timezone):selectLocalTimezone(c);this.timezone_select.change(function(){c._onTimeChange(),c._onSelectHandler(),c._afterInject()});var t=a.find(".ui-datepicker-buttonpane");if(t.length?t.before(r):a.append(r),this.$timeObj=r.find(".ui_tpicker_time_input"),this.$timeObj.change(function(){var a=c.inst.settings.timeFormat,b=$.datepicker.parseTime(a,this.value),d=new Date;b?(d.setHours(b.hour),d.setMinutes(b.minute),d.setSeconds(b.second),$.datepicker._setTime(c.inst,d)):(this.value=c.formattedTime,this.blur())}),null!==this.inst){var u=this.timeDefined;this._onTimeChange(),this.timeDefined=u}if(this._defaults.addSliderAccess){var v=this._defaults.sliderAccessArgs,w=this._defaults.isRTL;v.isRTL=w,setTimeout(function(){if(0===r.find(".ui-slider-access").length){r.find(".ui-slider:visible").sliderAccess(v);var a=r.find(".ui-slider-access:eq(0)").outerWidth(!0);a&&r.find("table:visible").each(function(){var b=$(this),c=b.outerWidth(),d=b.css(w?"marginRight":"marginLeft").toString().replace("%",""),e=c-a,f=d*e/c+"%",g={width:e,marginRight:0,marginLeft:0};g[w?"marginRight":"marginLeft"]=f,b.css(g)})}},10)}c._limitMinMaxDateTime(this.inst,!0)}},_limitMinMaxDateTime:function(a,b){var c=this._defaults,d=new Date(a.selectedYear,a.selectedMonth,a.selectedDay);if(this._defaults.showTimepicker){if(null!==$.datepicker._get(a,"minDateTime")&&void 0!==$.datepicker._get(a,"minDateTime")&&d){var e=$.datepicker._get(a,"minDateTime"),f=new Date(e.getFullYear(),e.getMonth(),e.getDate(),0,0,0,0);null!==this.hourMinOriginal&&null!==this.minuteMinOriginal&&null!==this.secondMinOriginal&&null!==this.millisecMinOriginal&&null!==this.microsecMinOriginal||(this.hourMinOriginal=c.hourMin,this.minuteMinOriginal=c.minuteMin,this.secondMinOriginal=c.secondMin,this.millisecMinOriginal=c.millisecMin,this.microsecMinOriginal=c.microsecMin),a.settings.timeOnly||f.getTime()===d.getTime()?(this._defaults.hourMin=e.getHours(),this.hour<=this._defaults.hourMin?(this.hour=this._defaults.hourMin,this._defaults.minuteMin=e.getMinutes(),this.minute<=this._defaults.minuteMin?(this.minute=this._defaults.minuteMin,this._defaults.secondMin=e.getSeconds(),this.second<=this._defaults.secondMin?(this.second=this._defaults.secondMin,this._defaults.millisecMin=e.getMilliseconds(),this.millisec<=this._defaults.millisecMin?(this.millisec=this._defaults.millisecMin,this._defaults.microsecMin=e.getMicroseconds()):(this.microsec<this._defaults.microsecMin&&(this.microsec=this._defaults.microsecMin),this._defaults.microsecMin=this.microsecMinOriginal)):(this._defaults.millisecMin=this.millisecMinOriginal,this._defaults.microsecMin=this.microsecMinOriginal)):(this._defaults.secondMin=this.secondMinOriginal,this._defaults.millisecMin=this.millisecMinOriginal,this._defaults.microsecMin=this.microsecMinOriginal)):(this._defaults.minuteMin=this.minuteMinOriginal,this._defaults.secondMin=this.secondMinOriginal,this._defaults.millisecMin=this.millisecMinOriginal,this._defaults.microsecMin=this.microsecMinOriginal)):(this._defaults.hourMin=this.hourMinOriginal,this._defaults.minuteMin=this.minuteMinOriginal,this._defaults.secondMin=this.secondMinOriginal,this._defaults.millisecMin=this.millisecMinOriginal,this._defaults.microsecMin=this.microsecMinOriginal)}if(null!==$.datepicker._get(a,"maxDateTime")&&void 0!==$.datepicker._get(a,"maxDateTime")&&d){var g=$.datepicker._get(a,"maxDateTime"),h=new Date(g.getFullYear(),g.getMonth(),g.getDate(),0,0,0,0);null!==this.hourMaxOriginal&&null!==this.minuteMaxOriginal&&null!==this.secondMaxOriginal&&null!==this.millisecMaxOriginal||(this.hourMaxOriginal=c.hourMax,this.minuteMaxOriginal=c.minuteMax,this.secondMaxOriginal=c.secondMax,this.millisecMaxOriginal=c.millisecMax,this.microsecMaxOriginal=c.microsecMax),a.settings.timeOnly||h.getTime()===d.getTime()?(this._defaults.hourMax=g.getHours(),this.hour>=this._defaults.hourMax?(this.hour=this._defaults.hourMax,this._defaults.minuteMax=g.getMinutes(),this.minute>=this._defaults.minuteMax?(this.minute=this._defaults.minuteMax,this._defaults.secondMax=g.getSeconds(),this.second>=this._defaults.secondMax?(this.second=this._defaults.secondMax,this._defaults.millisecMax=g.getMilliseconds(),this.millisec>=this._defaults.millisecMax?(this.millisec=this._defaults.millisecMax,this._defaults.microsecMax=g.getMicroseconds()):(this.microsec>this._defaults.microsecMax&&(this.microsec=this._defaults.microsecMax),this._defaults.microsecMax=this.microsecMaxOriginal)):(this._defaults.millisecMax=this.millisecMaxOriginal,this._defaults.microsecMax=this.microsecMaxOriginal)):(this._defaults.secondMax=this.secondMaxOriginal,this._defaults.millisecMax=this.millisecMaxOriginal,this._defaults.microsecMax=this.microsecMaxOriginal)):(this._defaults.minuteMax=this.minuteMaxOriginal,this._defaults.secondMax=this.secondMaxOriginal,this._defaults.millisecMax=this.millisecMaxOriginal,this._defaults.microsecMax=this.microsecMaxOriginal)):(this._defaults.hourMax=this.hourMaxOriginal,this._defaults.minuteMax=this.minuteMaxOriginal,this._defaults.secondMax=this.secondMaxOriginal,this._defaults.millisecMax=this.millisecMaxOriginal,this._defaults.microsecMax=this.microsecMaxOriginal)}if(null!==a.settings.minTime){var i=new Date("01/01/1970 "+a.settings.minTime);this.hour<i.getHours()?(this.hour=this._defaults.hourMin=i.getHours(),this.minute=this._defaults.minuteMin=i.getMinutes()):this.hour===i.getHours()&&this.minute<i.getMinutes()?this.minute=this._defaults.minuteMin=i.getMinutes():this._defaults.hourMin<i.getHours()?(this._defaults.hourMin=i.getHours(),this._defaults.minuteMin=i.getMinutes()):this._defaults.hourMin===i.getHours()===this.hour&&this._defaults.minuteMin<i.getMinutes()?this._defaults.minuteMin=i.getMinutes():this._defaults.minuteMin=0}if(null!==a.settings.maxTime){var j=new Date("01/01/1970 "+a.settings.maxTime);this.hour>j.getHours()?(this.hour=this._defaults.hourMax=j.getHours(),this.minute=this._defaults.minuteMax=j.getMinutes()):this.hour===j.getHours()&&this.minute>j.getMinutes()?this.minute=this._defaults.minuteMax=j.getMinutes():this._defaults.hourMax>j.getHours()?(this._defaults.hourMax=j.getHours(),this._defaults.minuteMax=j.getMinutes()):this._defaults.hourMax===j.getHours()===this.hour&&this._defaults.minuteMax>j.getMinutes()?this._defaults.minuteMax=j.getMinutes():this._defaults.minuteMax=59}if(void 0!==b&&b===!0){var k=parseInt(this._defaults.hourMax-(this._defaults.hourMax-this._defaults.hourMin)%this._defaults.stepHour,10),l=parseInt(this._defaults.minuteMax-(this._defaults.minuteMax-this._defaults.minuteMin)%this._defaults.stepMinute,10),m=parseInt(this._defaults.secondMax-(this._defaults.secondMax-this._defaults.secondMin)%this._defaults.stepSecond,10),n=parseInt(this._defaults.millisecMax-(this._defaults.millisecMax-this._defaults.millisecMin)%this._defaults.stepMillisec,10),o=parseInt(this._defaults.microsecMax-(this._defaults.microsecMax-this._defaults.microsecMin)%this._defaults.stepMicrosec,10);this.hour_slider&&(this.control.options(this,this.hour_slider,"hour",{min:this._defaults.hourMin,max:k,step:this._defaults.stepHour}),this.control.value(this,this.hour_slider,"hour",this.hour-this.hour%this._defaults.stepHour)),this.minute_slider&&(this.control.options(this,this.minute_slider,"minute",{min:this._defaults.minuteMin,max:l,step:this._defaults.stepMinute}),this.control.value(this,this.minute_slider,"minute",this.minute-this.minute%this._defaults.stepMinute)),this.second_slider&&(this.control.options(this,this.second_slider,"second",{min:this._defaults.secondMin,max:m,step:this._defaults.stepSecond}),this.control.value(this,this.second_slider,"second",this.second-this.second%this._defaults.stepSecond)),this.millisec_slider&&(this.control.options(this,this.millisec_slider,"millisec",{min:this._defaults.millisecMin,max:n,step:this._defaults.stepMillisec}),this.control.value(this,this.millisec_slider,"millisec",this.millisec-this.millisec%this._defaults.stepMillisec)),this.microsec_slider&&(this.control.options(this,this.microsec_slider,"microsec",{min:this._defaults.microsecMin,max:o,step:this._defaults.stepMicrosec}),this.control.value(this,this.microsec_slider,"microsec",this.microsec-this.microsec%this._defaults.stepMicrosec))}}},_onTimeChange:function(){if(this._defaults.showTimepicker){var a=this.hour_slider?this.control.value(this,this.hour_slider,"hour"):!1,b=this.minute_slider?this.control.value(this,this.minute_slider,"minute"):!1,c=this.second_slider?this.control.value(this,this.second_slider,"second"):!1,d=this.millisec_slider?this.control.value(this,this.millisec_slider,"millisec"):!1,e=this.microsec_slider?this.control.value(this,this.microsec_slider,"microsec"):!1,f=this.timezone_select?this.timezone_select.val():!1,g=this._defaults,h=g.pickerTimeFormat||g.timeFormat,i=g.pickerTimeSuffix||g.timeSuffix;"object"==typeof a&&(a=!1),"object"==typeof b&&(b=!1),"object"==typeof c&&(c=!1),"object"==typeof d&&(d=!1),"object"==typeof e&&(e=!1),"object"==typeof f&&(f=!1),a!==!1&&(a=parseInt(a,10)),b!==!1&&(b=parseInt(b,10)),c!==!1&&(c=parseInt(c,10)),d!==!1&&(d=parseInt(d,10)),e!==!1&&(e=parseInt(e,10)),f!==!1&&(f=f.toString());var j=g[12>a?"amNames":"pmNames"][0],k=a!==parseInt(this.hour,10)||b!==parseInt(this.minute,10)||c!==parseInt(this.second,10)||d!==parseInt(this.millisec,10)||e!==parseInt(this.microsec,10)||this.ampm.length>0&&12>a!=(-1!==$.inArray(this.ampm.toUpperCase(),this.amNames))||null!==this.timezone&&f!==this.timezone.toString();if(k&&(a!==!1&&(this.hour=a),b!==!1&&(this.minute=b),c!==!1&&(this.second=c),d!==!1&&(this.millisec=d),e!==!1&&(this.microsec=e),f!==!1&&(this.timezone=f),this.inst||(this.inst=$.datepicker._getInst(this.$input[0])),this._limitMinMaxDateTime(this.inst,!0)),this.support.ampm&&(this.ampm=j),this.formattedTime=$.datepicker.formatTime(g.timeFormat,this,g),this.$timeObj&&(h===g.timeFormat?this.$timeObj.val(this.formattedTime+i):this.$timeObj.val($.datepicker.formatTime(h,this,g)+i),this.$timeObj[0].setSelectionRange)){var l=this.$timeObj[0].selectionStart,m=this.$timeObj[0].selectionEnd;this.$timeObj[0].setSelectionRange(l,m)}this.timeDefined=!0,k&&this._updateDateTime()}},_onSelectHandler:function(){var a=this._defaults.onSelect||this.inst.settings.onSelect,b=this.$input?this.$input[0]:null;a&&b&&a.apply(b,[this.formattedDateTime,this])},_updateDateTime:function(a){a=this.inst||a;var b=a.currentYear>0?new Date(a.currentYear,a.currentMonth,a.currentDay):new Date(a.selectedYear,a.selectedMonth,a.selectedDay),c=$.datepicker._daylightSavingAdjust(b),d=$.datepicker._get(a,"dateFormat"),e=$.datepicker._getFormatConfig(a),f=null!==c&&this.timeDefined;this.formattedDate=$.datepicker.formatDate(d,null===c?new Date:c,e);var g=this.formattedDate;if(""===a.lastVal&&(a.currentYear=a.selectedYear,a.currentMonth=a.selectedMonth,a.currentDay=a.selectedDay),this._defaults.timeOnly===!0&&this._defaults.timeOnlyShowDate===!1?g=this.formattedTime:(this._defaults.timeOnly!==!0&&(this._defaults.alwaysSetTime||f)||this._defaults.timeOnly===!0&&this._defaults.timeOnlyShowDate===!0)&&(g+=this._defaults.separator+this.formattedTime+this._defaults.timeSuffix),this.formattedDateTime=g,this._defaults.showTimepicker)if(this.$altInput&&this._defaults.timeOnly===!1&&this._defaults.altFieldTimeOnly===!0)this.$altInput.val(this.formattedTime),this.$input.val(this.formattedDate);else if(this.$altInput){this.$input.val(g);var h="",i=null!==this._defaults.altSeparator?this._defaults.altSeparator:this._defaults.separator,j=null!==this._defaults.altTimeSuffix?this._defaults.altTimeSuffix:this._defaults.timeSuffix;this._defaults.timeOnly||(h=this._defaults.altFormat?$.datepicker.formatDate(this._defaults.altFormat,null===c?new Date:c,e):this.formattedDate,h&&(h+=i)),h+=null!==this._defaults.altTimeFormat?$.datepicker.formatTime(this._defaults.altTimeFormat,this,this._defaults)+j:this.formattedTime+j,this.$altInput.val(h)}else this.$input.val(g);else this.$input.val(this.formattedDate);this.$input.trigger("change")},_onFocus:function(){if(!this.$input.val()&&this._defaults.defaultValue){this.$input.val(this._defaults.defaultValue);var a=$.datepicker._getInst(this.$input.get(0)),b=$.datepicker._get(a,"timepicker");if(b&&b._defaults.timeOnly&&a.input.val()!==a.lastVal)try{$.datepicker._updateDatepicker(a)}catch(c){$.timepicker.log(c)}}},_controls:{slider:{create:function(a,b,c,d,e,f,g){var h=a._defaults.isRTL;return b.prop("slide",null).slider({orientation:"horizontal",value:h?-1*d:d,min:h?-1*f:e,max:h?-1*e:f,step:g,slide:function(b,d){a.control.value(a,$(this),c,h?-1*d.value:d.value),a._onTimeChange()},stop:function(b,c){a._onSelectHandler()}})},options:function(a,b,c,d,e){if(a._defaults.isRTL){if("string"==typeof d)return"min"===d||"max"===d?void 0!==e?b.slider(d,-1*e):Math.abs(b.slider(d)):b.slider(d);var f=d.min,g=d.max;return d.min=d.max=null,void 0!==f&&(d.max=-1*f),void 0!==g&&(d.min=-1*g),b.slider(d)}return"string"==typeof d&&void 0!==e?b.slider(d,e):b.slider(d)},value:function(a,b,c,d){return a._defaults.isRTL?void 0!==d?b.slider("value",-1*d):Math.abs(b.slider("value")):void 0!==d?b.slider("value",d):b.slider("value")}},select:{create:function(a,b,c,d,e,f,g){for(var h='<select class="ui-timepicker-select ui-state-default ui-corner-all" data-unit="'+c+'" data-min="'+e+'" data-max="'+f+'" data-step="'+g+'">',i=a._defaults.pickerTimeFormat||a._defaults.timeFormat,j=e;f>=j;j+=g)h+='<option value="'+j+'"'+(j===d?" selected":"")+">",h+="hour"===c?$.datepicker.formatTime($.trim(i.replace(/[^ht ]/gi,"")),{hour:j},a._defaults):"millisec"===c||"microsec"===c||j>=10?j:"0"+j.toString(),h+="</option>";return h+="</select>",b.children("select").remove(),$(h).appendTo(b).change(function(b){a._onTimeChange(),a._onSelectHandler(),a._afterInject()}),b},options:function(a,b,c,d,e){var f={},g=b.children("select");if("string"==typeof d){if(void 0===e)return g.data(d);f[d]=e}else f=d;return a.control.create(a,b,g.data("unit"),g.val(),f.min>=0?f.min:g.data("min"),f.max||g.data("max"),f.step||g.data("step"))},value:function(a,b,c,d){var e=b.children("select");return void 0!==d?e.val(d):e.val()}}}}),$.fn.extend({timepicker:function(a){a=a||{};var b=Array.prototype.slice.call(arguments);return"object"==typeof a&&(b[0]=$.extend(a,{timeOnly:!0})),$(this).each(function(){$.fn.datetimepicker.apply($(this),b)})},datetimepicker:function(a){a=a||{};var b=arguments;return"string"==typeof a?"getDate"===a||"option"===a&&2===b.length&&"string"==typeof b[1]?$.fn.datepicker.apply($(this[0]),b):this.each(function(){var a=$(this);a.datepicker.apply(a,b)}):this.each(function(){var b=$(this);b.datepicker($.timepicker._newInst(b,a)._defaults)})}}),$.datepicker.parseDateTime=function(a,b,c,d,e){var f=parseDateTimeInternal(a,b,c,d,e);if(f.timeObj){var g=f.timeObj;f.date.setHours(g.hour,g.minute,g.second,g.millisec),f.date.setMicroseconds(g.microsec)}return f.date},$.datepicker.parseTime=function(a,b,c){var d=extendRemove(extendRemove({},$.timepicker._defaults),c||{}),e=(-1!==a.replace(/\'.*?\'/g,"").indexOf("Z"),function(a,b,c){var d,e=function(a,b){var c=[];return a&&$.merge(c,a),b&&$.merge(c,b),c=$.map(c,function(a){return a.replace(/[.*+?|()\[\]{}\\]/g,"\\$&")}),"("+c.join("|")+")?"},f=function(a){var b=a.toLowerCase().match(/(h{1,2}|m{1,2}|s{1,2}|l{1}|c{1}|t{1,2}|z|'.*?')/g),c={h:-1,m:-1,s:-1,l:-1,c:-1,t:-1,z:-1};if(b)for(var d=0;d<b.length;d++)-1===c[b[d].toString().charAt(0)]&&(c[b[d].toString().charAt(0)]=d+1);return c},g="^"+a.toString().replace(/([hH]{1,2}|mm?|ss?|[tT]{1,2}|[zZ]|[lc]|'.*?')/g,function(a){var b=a.length;switch(a.charAt(0).toLowerCase()){case"h":return 1===b?"(\\d?\\d)":"(\\d{"+b+"})";case"m":return 1===b?"(\\d?\\d)":"(\\d{"+b+"})";case"s":return 1===b?"(\\d?\\d)":"(\\d{"+b+"})";case"l":return"(\\d?\\d?\\d)";case"c":return"(\\d?\\d?\\d)";case"z":return"(z|[-+]\\d\\d:?\\d\\d|\\S+)?";case"t":return e(c.amNames,c.pmNames);default:return"("+a.replace(/\'/g,"").replace(/(\.|\$|\^|\\|\/|\(|\)|\[|\]|\?|\+|\*)/g,function(a){return"\\"+a})+")?"}}).replace(/\s/g,"\\s?")+c.timeSuffix+"$",h=f(a),i="";d=b.match(new RegExp(g,"i"));var j={hour:0,minute:0,second:0,millisec:0,microsec:0};return d?(-1!==h.t&&(void 0===d[h.t]||0===d[h.t].length?(i="",j.ampm=""):(i=-1!==$.inArray(d[h.t].toUpperCase(),$.map(c.amNames,function(a,b){return a.toUpperCase()}))?"AM":"PM",j.ampm=c["AM"===i?"amNames":"pmNames"][0])),-1!==h.h&&("AM"===i&&"12"===d[h.h]?j.hour=0:"PM"===i&&"12"!==d[h.h]?j.hour=parseInt(d[h.h],10)+12:j.hour=Number(d[h.h])),-1!==h.m&&(j.minute=Number(d[h.m])),-1!==h.s&&(j.second=Number(d[h.s])),-1!==h.l&&(j.millisec=Number(d[h.l])),-1!==h.c&&(j.microsec=Number(d[h.c])),-1!==h.z&&void 0!==d[h.z]&&(j.timezone=$.timepicker.timezoneOffsetNumber(d[h.z])),j):!1}),f=function(a,b,c){try{var d=new Date("2012-01-01 "+b);if(isNaN(d.getTime())&&(d=new Date("2012-01-01T"+b),isNaN(d.getTime())&&(d=new Date("01/01/2012 "+b),isNaN(d.getTime()))))throw"Unable to parse time with native Date: "+b;return{hour:d.getHours(),minute:d.getMinutes(),second:d.getSeconds(),millisec:d.getMilliseconds(),microsec:d.getMicroseconds(),timezone:-1*d.getTimezoneOffset()}}catch(f){try{return e(a,b,c)}catch(g){$.timepicker.log("Unable to parse \ntimeString: "+b+"\ntimeFormat: "+a)}}return!1};return"function"==typeof d.parse?d.parse(a,b,d):"loose"===d.parse?f(a,b,d):e(a,b,d)},$.datepicker.formatTime=function(a,b,c){c=c||{},c=$.extend({},$.timepicker._defaults,c),b=$.extend({hour:0,minute:0,second:0,millisec:0,microsec:0,timezone:null},b);var d=a,e=c.amNames[0],f=parseInt(b.hour,10);return f>11&&(e=c.pmNames[0]),d=d.replace(/(?:HH?|hh?|mm?|ss?|[tT]{1,2}|[zZ]|[lc]|'.*?')/g,function(a){switch(a){case"HH":return("0"+f).slice(-2);case"H":return f;case"hh":return("0"+convert24to12(f)).slice(-2);case"h":return convert24to12(f);case"mm":return("0"+b.minute).slice(-2);case"m":return b.minute;case"ss":return("0"+b.second).slice(-2);case"s":return b.second;case"l":return("00"+b.millisec).slice(-3);case"c":return("00"+b.microsec).slice(-3);case"z":return $.timepicker.timezoneOffsetString(null===b.timezone?c.timezone:b.timezone,!1);case"Z":return $.timepicker.timezoneOffsetString(null===b.timezone?c.timezone:b.timezone,!0);case"T":return e.charAt(0).toUpperCase();case"TT":return e.toUpperCase();case"t":return e.charAt(0).toLowerCase();case"tt":return e.toLowerCase();default:return a.replace(/'/g,"")}})},$.datepicker._base_selectDate=$.datepicker._selectDate,$.datepicker._selectDate=function(a,b){var c,d=this._getInst($(a)[0]),e=this._get(d,"timepicker");e&&d.settings.showTimepicker?(e._limitMinMaxDateTime(d,!0),c=d.inline,d.inline=d.stay_open=!0,this._base_selectDate(a,b),d.inline=c,d.stay_open=!1,this._notifyChange(d),this._updateDatepicker(d)):this._base_selectDate(a,b)},$.datepicker._base_updateDatepicker=$.datepicker._updateDatepicker,$.datepicker._updateDatepicker=function(a){var b=a.input[0];if(!($.datepicker._curInst&&$.datepicker._curInst!==a&&$.datepicker._datepickerShowing&&$.datepicker._lastInput!==b||"boolean"==typeof a.stay_open&&a.stay_open!==!1)){this._base_updateDatepicker(a);var c=this._get(a,"timepicker");c&&c._addTimePicker(a)}},$.datepicker._base_doKeyPress=$.datepicker._doKeyPress,$.datepicker._doKeyPress=function(a){var b=$.datepicker._getInst(a.target),c=$.datepicker._get(b,"timepicker");if(c&&$.datepicker._get(b,"constrainInput")){var d=c.support.ampm,e=null!==c._defaults.showTimezone?c._defaults.showTimezone:c.support.timezone,f=$.datepicker._possibleChars($.datepicker._get(b,"dateFormat")),g=c._defaults.timeFormat.toString().replace(/[hms]/g,"").replace(/TT/g,d?"APM":"").replace(/Tt/g,d?"AaPpMm":"").replace(/tT/g,d?"AaPpMm":"").replace(/T/g,d?"AP":"").replace(/tt/g,d?"apm":"").replace(/t/g,d?"ap":"")+" "+c._defaults.separator+c._defaults.timeSuffix+(e?c._defaults.timezoneList.join(""):"")+c._defaults.amNames.join("")+c._defaults.pmNames.join("")+f,h=String.fromCharCode(void 0===a.charCode?a.keyCode:a.charCode);return a.ctrlKey||" ">h||!f||g.indexOf(h)>-1}return $.datepicker._base_doKeyPress(a)},$.datepicker._base_updateAlternate=$.datepicker._updateAlternate,$.datepicker._updateAlternate=function(a){var b=this._get(a,"timepicker");if(b){var c=b._defaults.altField;if(c){var d=(b._defaults.altFormat||b._defaults.dateFormat,this._getDate(a)),e=$.datepicker._getFormatConfig(a),f="",g=b._defaults.altSeparator?b._defaults.altSeparator:b._defaults.separator,h=b._defaults.altTimeSuffix?b._defaults.altTimeSuffix:b._defaults.timeSuffix,i=null!==b._defaults.altTimeFormat?b._defaults.altTimeFormat:b._defaults.timeFormat;f+=$.datepicker.formatTime(i,b,b._defaults)+h,b._defaults.timeOnly||b._defaults.altFieldTimeOnly||null===d||(f=b._defaults.altFormat?$.datepicker.formatDate(b._defaults.altFormat,d,e)+g+f:b.formattedDate+g+f),$(c).val(a.input.val()?f:"")}}else $.datepicker._base_updateAlternate(a)},$.datepicker._base_doKeyUp=$.datepicker._doKeyUp,$.datepicker._doKeyUp=function(a){var b=$.datepicker._getInst(a.target),c=$.datepicker._get(b,"timepicker");
2
+ if(c&&c._defaults.timeOnly&&b.input.val()!==b.lastVal)try{$.datepicker._updateDatepicker(b)}catch(d){$.timepicker.log(d)}return $.datepicker._base_doKeyUp(a)},$.datepicker._base_gotoToday=$.datepicker._gotoToday,$.datepicker._gotoToday=function(a){var b=this._getInst($(a)[0]);this._base_gotoToday(a);var c=this._get(b,"timepicker");if(c){var d=$.timepicker.timezoneOffsetNumber(c.timezone),e=new Date;e.setMinutes(e.getMinutes()+e.getTimezoneOffset()+parseInt(d,10)),this._setTime(b,e),this._setDate(b,e),c._onSelectHandler()}},$.datepicker._disableTimepickerDatepicker=function(a){var b=this._getInst(a);if(b){var c=this._get(b,"timepicker");$(a).datepicker("getDate"),c&&(b.settings.showTimepicker=!1,c._defaults.showTimepicker=!1,c._updateDateTime(b))}},$.datepicker._enableTimepickerDatepicker=function(a){var b=this._getInst(a);if(b){var c=this._get(b,"timepicker");$(a).datepicker("getDate"),c&&(b.settings.showTimepicker=!0,c._defaults.showTimepicker=!0,c._addTimePicker(b),c._updateDateTime(b))}},$.datepicker._setTime=function(a,b){var c=this._get(a,"timepicker");if(c){var d=c._defaults;c.hour=b?b.getHours():d.hour,c.minute=b?b.getMinutes():d.minute,c.second=b?b.getSeconds():d.second,c.millisec=b?b.getMilliseconds():d.millisec,c.microsec=b?b.getMicroseconds():d.microsec,c._limitMinMaxDateTime(a,!0),c._onTimeChange(),c._updateDateTime(a)}},$.datepicker._setTimeDatepicker=function(a,b,c){var d=this._getInst(a);if(d){var e=this._get(d,"timepicker");if(e){this._setDateFromField(d);var f;b&&("string"==typeof b?(e._parseTime(b,c),f=new Date,f.setHours(e.hour,e.minute,e.second,e.millisec),f.setMicroseconds(e.microsec)):(f=new Date(b.getTime()),f.setMicroseconds(b.getMicroseconds())),"Invalid Date"===f.toString()&&(f=void 0),this._setTime(d,f))}}},$.datepicker._base_setDateDatepicker=$.datepicker._setDateDatepicker,$.datepicker._setDateDatepicker=function(a,b){var c=this._getInst(a),d=b;if(c){"string"==typeof b&&(d=new Date(b),d.getTime()||(this._base_setDateDatepicker.apply(this,arguments),d=$(a).datepicker("getDate")));var e,f=this._get(c,"timepicker");d instanceof Date?(e=new Date(d.getTime()),e.setMicroseconds(d.getMicroseconds())):e=d,f&&e&&(f.support.timezone||null!==f._defaults.timezone||(f.timezone=-1*e.getTimezoneOffset()),d=$.timepicker.timezoneAdjust(d,$.timepicker.timezoneOffsetString(-d.getTimezoneOffset()),f.timezone),e=$.timepicker.timezoneAdjust(e,$.timepicker.timezoneOffsetString(-e.getTimezoneOffset()),f.timezone)),this._updateDatepicker(c),this._base_setDateDatepicker.apply(this,arguments),this._setTimeDatepicker(a,e,!0)}},$.datepicker._base_getDateDatepicker=$.datepicker._getDateDatepicker,$.datepicker._getDateDatepicker=function(a,b){var c=this._getInst(a);if(c){var d=this._get(c,"timepicker");if(d){void 0===c.lastVal&&this._setDateFromField(c,b);var e=this._getDate(c),f=null;return f=d.$altInput&&d._defaults.altFieldTimeOnly?d.$input.val()+" "+d.$altInput.val():"INPUT"!==d.$input.get(0).tagName&&d.$altInput?d.$altInput.val():d.$input.val(),e&&d._parseTime(f,!c.settings.timeOnly)&&(e.setHours(d.hour,d.minute,d.second,d.millisec),e.setMicroseconds(d.microsec),null!=d.timezone&&(d.support.timezone||null!==d._defaults.timezone||(d.timezone=-1*e.getTimezoneOffset()),e=$.timepicker.timezoneAdjust(e,d.timezone,$.timepicker.timezoneOffsetString(-e.getTimezoneOffset())))),e}return this._base_getDateDatepicker(a,b)}},$.datepicker._base_parseDate=$.datepicker.parseDate,$.datepicker.parseDate=function(a,b,c){var d;try{d=this._base_parseDate(a,b,c)}catch(e){if(!(e.indexOf(":")>=0))throw e;d=this._base_parseDate(a,b.substring(0,b.length-(e.length-e.indexOf(":")-2)),c),$.timepicker.log("Error parsing the date string: "+e+"\ndate string = "+b+"\ndate format = "+a)}return d},$.datepicker._base_formatDate=$.datepicker._formatDate,$.datepicker._formatDate=function(a,b,c,d){var e=this._get(a,"timepicker");return e?(e._updateDateTime(a),e.$input.val()):this._base_formatDate(a)},$.datepicker._base_optionDatepicker=$.datepicker._optionDatepicker,$.datepicker._optionDatepicker=function(a,b,c){var d,e=this._getInst(a);if(!e)return null;var f=this._get(e,"timepicker");if(f){var g,h,i,j,k=null,l=null,m=null,n=f._defaults.evnts,o={};if("string"==typeof b){if("minDate"===b||"minDateTime"===b)k=c;else if("maxDate"===b||"maxDateTime"===b)l=c;else if("onSelect"===b)m=c;else if(n.hasOwnProperty(b)){if("undefined"==typeof c)return n[b];o[b]=c,d={}}}else if("object"==typeof b){b.minDate?k=b.minDate:b.minDateTime?k=b.minDateTime:b.maxDate?l=b.maxDate:b.maxDateTime&&(l=b.maxDateTime);for(g in n)n.hasOwnProperty(g)&&b[g]&&(o[g]=b[g])}for(g in o)o.hasOwnProperty(g)&&(n[g]=o[g],d||(d=$.extend({},b)),delete d[g]);if(d&&isEmptyObject(d))return;if(k?(k=0===k?new Date:new Date(k),f._defaults.minDate=k,f._defaults.minDateTime=k):l?(l=0===l?new Date:new Date(l),f._defaults.maxDate=l,f._defaults.maxDateTime=l):m&&(f._defaults.onSelect=m),k||l)return j=$(a),i=j.datetimepicker("getDate"),h=this._base_optionDatepicker.call($.datepicker,a,d||b,c),j.datetimepicker("setDate",i),h}return void 0===c?this._base_optionDatepicker.call($.datepicker,a,b):this._base_optionDatepicker.call($.datepicker,a,d||b,c)};var isEmptyObject=function(a){var b;for(b in a)if(a.hasOwnProperty(b))return!1;return!0},extendRemove=function(a,b){$.extend(a,b);for(var c in b)null!==b[c]&&void 0!==b[c]||(a[c]=b[c]);return a},detectSupport=function(a){var b=a.replace(/'.*?'/g,"").toLowerCase(),c=function(a,b){return-1!==a.indexOf(b)};return{hour:c(b,"h"),minute:c(b,"m"),second:c(b,"s"),millisec:c(b,"l"),microsec:c(b,"c"),timezone:c(b,"z"),ampm:c(b,"t")&&c(a,"h"),iso8601:c(a,"Z")}},convert24to12=function(a){return a%=12,0===a&&(a=12),String(a)},computeEffectiveSetting=function(a,b){return a&&a[b]?a[b]:$.timepicker._defaults[b]},splitDateTime=function(a,b){var c=computeEffectiveSetting(b,"separator"),d=computeEffectiveSetting(b,"timeFormat"),e=d.split(c),f=e.length,g=a.split(c),h=g.length;return h>1?{dateString:g.splice(0,h-f).join(c),timeString:g.splice(0,f).join(c)}:{dateString:a,timeString:""}},parseDateTimeInternal=function(a,b,c,d,e){var f,g,h;if(g=splitDateTime(c,e),f=$.datepicker._base_parseDate(a,g.dateString,d),""===g.timeString)return{date:f};if(h=$.datepicker.parseTime(b,g.timeString,e),!h)throw"Wrong time format";return{date:f,timeObj:h}},selectLocalTimezone=function(a,b){if(a&&a.timezone_select){var c=b||new Date;a.timezone_select.val(-c.getTimezoneOffset())}};$.timepicker=new Timepicker,$.timepicker.timezoneOffsetString=function(a,b){if(isNaN(a)||a>840||-720>a)return a;var c=a,d=c%60,e=(c-d)/60,f=b?":":"",g=(c>=0?"+":"-")+("0"+Math.abs(e)).slice(-2)+f+("0"+Math.abs(d)).slice(-2);return"+00:00"===g?"Z":g},$.timepicker.timezoneOffsetNumber=function(a){var b=a.toString().replace(":","");return"Z"===b.toUpperCase()?0:/^(\-|\+)\d{4}$/.test(b)?("-"===b.substr(0,1)?-1:1)*(60*parseInt(b.substr(1,2),10)+parseInt(b.substr(3,2),10)):parseInt(a,10)},$.timepicker.timezoneAdjust=function(a,b,c){var d=$.timepicker.timezoneOffsetNumber(b),e=$.timepicker.timezoneOffsetNumber(c);return isNaN(e)||a.setMinutes(a.getMinutes()+-d- -e),a},$.timepicker.timeRange=function(a,b,c){return $.timepicker.handleRange("timepicker",a,b,c)},$.timepicker.datetimeRange=function(a,b,c){$.timepicker.handleRange("datetimepicker",a,b,c)},$.timepicker.dateRange=function(a,b,c){$.timepicker.handleRange("datepicker",a,b,c)},$.timepicker.handleRange=function(a,b,c,d){function e(e,f){var g=b[a]("getDate"),h=c[a]("getDate"),i=e[a]("getDate");if(null!==g){var j=new Date(g.getTime()),k=new Date(g.getTime());j.setMilliseconds(j.getMilliseconds()+d.minInterval),k.setMilliseconds(k.getMilliseconds()+d.maxInterval),d.minInterval>0&&j>h?c[a]("setDate",j):d.maxInterval>0&&h>k?c[a]("setDate",k):g>h&&f[a]("setDate",i)}}function f(b,c,e){if(b.val()){var f=b[a].call(b,"getDate");null!==f&&d.minInterval>0&&("minDate"===e&&f.setMilliseconds(f.getMilliseconds()+d.minInterval),"maxDate"===e&&f.setMilliseconds(f.getMilliseconds()-d.minInterval)),f.getTime&&c[a].call(c,"option",e,f)}}d=$.extend({},{minInterval:0,maxInterval:0,start:{},end:{}},d);var g=!1;return"timepicker"===a&&(g=!0,a="datetimepicker"),$.fn[a].call(b,$.extend({timeOnly:g,onClose:function(a,b){e($(this),c)},onSelect:function(a){f($(this),c,"minDate")}},d,d.start)),$.fn[a].call(c,$.extend({timeOnly:g,onClose:function(a,c){e($(this),b)},onSelect:function(a){f($(this),b,"maxDate")}},d,d.end)),e(b,c),f(b,c,"minDate"),f(c,b,"maxDate"),$([b.get(0),c.get(0)])},$.timepicker.log=function(){window.console&&window.console.log&&window.console.log.apply&&window.console.log.apply(window.console,Array.prototype.slice.call(arguments))},$.timepicker._util={_extendRemove:extendRemove,_isEmptyObject:isEmptyObject,_convert24to12:convert24to12,_detectSupport:detectSupport,_selectLocalTimezone:selectLocalTimezone,_computeEffectiveSetting:computeEffectiveSetting,_splitDateTime:splitDateTime,_parseDateTimeInternal:parseDateTimeInternal},Date.prototype.getMicroseconds||(Date.prototype.microseconds=0,Date.prototype.getMicroseconds=function(){return this.microseconds},Date.prototype.setMicroseconds=function(a){return this.setMilliseconds(this.getMilliseconds()+Math.floor(a/1e3)),this.microseconds=a%1e3,this}),$.timepicker.version="@@version"}});
assets/js/jquery.countdown.js CHANGED
@@ -1,7 +1,7 @@
1
  /* http://keith-wood.name/countdown.html
2
- Countdown for jQuery v2.0.1.
3
  Written by Keith Wood (kbwood{at}iinet.com.au) January 2008.
4
- Available under the MIT (https://github.com/jquery/jquery/blob/master/MIT-LICENSE.txt) license.
5
  Please attribute the author if you use it. */
6
 
7
  (function($) { // Hide scope, no $ conflict
@@ -253,6 +253,40 @@
253
  periods[3] * 86400 + periods[4] * 3600 + periods[5] * 60 + periods[6];
254
  },
255
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
256
  _instSettings: function(elem, options) {
257
  return {_periods: [0, 0, 0, 0, 0, 0, 0]};
258
  },
@@ -375,8 +409,6 @@
375
  @param inst {object} The current settings for this instance.
376
  @param recalc {boolean} True if until or since are set. */
377
  _adjustSettings: function(elem, inst, recalc) {
378
- var now;
379
- var serverOffset = 0;
380
  var serverEntry = null;
381
  for (var i = 0; i < this._serverSyncs.length; i++) {
382
  if (this._serverSyncs[i][0] == inst.options.serverSync) {
@@ -385,14 +417,14 @@
385
  }
386
  }
387
  if (serverEntry != null) {
388
- serverOffset = (inst.options.serverSync ? serverEntry : 0);
389
- now = new Date();
390
  }
391
  else {
392
  var serverResult = ($.isFunction(inst.options.serverSync) ?
393
  inst.options.serverSync.apply(elem[0], []) : null);
394
- now = new Date();
395
- serverOffset = (serverResult ? now.getTime() - serverResult.getTime() : 0);
396
  this._serverSyncs.push([inst.options.serverSync, serverOffset]);
397
  }
398
  var timezone = inst.options.timezone;
@@ -778,8 +810,8 @@
778
  var periods = [0, 0, 0, 0, 0, 0, 0];
779
  if (show[Y] || show[O]) {
780
  // Treat end of months as the same
781
- var lastNow = this._getDaysInMonth(now.getFullYear(), now.getMonth());
782
- var lastUntil = this._getDaysInMonth(until.getFullYear(), until.getMonth());
783
  var sameDay = (until.getDate() == now.getDate() ||
784
  (until.getDate() >= Math.min(lastNow, lastUntil) &&
785
  now.getDate() >= Math.min(lastNow, lastUntil)));
@@ -795,7 +827,7 @@
795
  // Adjust for months difference and end of month if necessary
796
  now = new Date(now.getTime());
797
  var wasLastDay = (now.getDate() == lastNow);
798
- var lastDay = this._getDaysInMonth(now.getFullYear() + periods[Y],
799
  now.getMonth() + periods[O]);
800
  if (now.getDate() > lastDay) {
801
  now.setDate(lastDay);
1
  /* http://keith-wood.name/countdown.html
2
+ Countdown for jQuery v2.0.2.
3
  Written by Keith Wood (kbwood{at}iinet.com.au) January 2008.
4
+ Available under the MIT (http://keith-wood.name/licence.html) license.
5
  Please attribute the author if you use it. */
6
 
7
  (function($) { // Hide scope, no $ conflict
253
  periods[3] * 86400 + periods[4] * 3600 + periods[5] * 60 + periods[6];
254
  },
255
 
256
+ /** Resynchronise the countdowns with the server.
257
+ @example $.countdown.resync() */
258
+ resync: function() {
259
+ var self = this;
260
+ $('.' + this._getMarker()).each(function() { // Each countdown
261
+ var inst = $.data(this, self.name);
262
+ if (inst.options.serverSync) { // If synced
263
+ var serverSync = null;
264
+ for (var i = 0; i < self._serverSyncs.length; i++) {
265
+ if (self._serverSyncs[i][0] == inst.options.serverSync) { // Find sync details
266
+ serverSync = self._serverSyncs[i];
267
+ break;
268
+ }
269
+ }
270
+ if (serverSync[2] == null) { // Recalculate if missing
271
+ var serverResult = ($.isFunction(inst.options.serverSync) ?
272
+ inst.options.serverSync.apply(this, []) : null);
273
+ serverSync[2] =
274
+ (serverResult ? new Date().getTime() - serverResult.getTime() : 0) - serverSync[1];
275
+ }
276
+ if (inst._since) { // Apply difference
277
+ inst._since.setMilliseconds(inst._since.getMilliseconds() + serverSync[2]);
278
+ }
279
+ inst._until.setMilliseconds(inst._until.getMilliseconds() + serverSync[2]);
280
+ }
281
+ });
282
+ for (var i = 0; i < self._serverSyncs.length; i++) { // Update sync details
283
+ if (self._serverSyncs[i][2] != null) {
284
+ self._serverSyncs[i][1] += self._serverSyncs[i][2];
285
+ delete self._serverSyncs[i][2];
286
+ }
287
+ }
288
+ },
289
+
290
  _instSettings: function(elem, options) {
291
  return {_periods: [0, 0, 0, 0, 0, 0, 0]};
292
  },
409
  @param inst {object} The current settings for this instance.
410
  @param recalc {boolean} True if until or since are set. */
411
  _adjustSettings: function(elem, inst, recalc) {
 
 
412
  var serverEntry = null;
413
  for (var i = 0; i < this._serverSyncs.length; i++) {
414
  if (this._serverSyncs[i][0] == inst.options.serverSync) {
417
  }
418
  }
419
  if (serverEntry != null) {
420
+ var serverOffset = (inst.options.serverSync ? serverEntry : 0);
421
+ var now = new Date();
422
  }
423
  else {
424
  var serverResult = ($.isFunction(inst.options.serverSync) ?
425
  inst.options.serverSync.apply(elem[0], []) : null);
426
+ var now = new Date();
427
+ var serverOffset = (serverResult ? now.getTime() - serverResult.getTime() : 0);
428
  this._serverSyncs.push([inst.options.serverSync, serverOffset]);
429
  }
430
  var timezone = inst.options.timezone;
810
  var periods = [0, 0, 0, 0, 0, 0, 0];
811
  if (show[Y] || show[O]) {
812
  // Treat end of months as the same
813
+ var lastNow = this._getDaysInMonth(now.getFullYear(), now.getMonth());
814
+ var lastUntil = this._getDaysInMonth(until.getFullYear(), until.getMonth());
815
  var sameDay = (until.getDate() == now.getDate() ||
816
  (until.getDate() >= Math.min(lastNow, lastUntil) &&
817
  now.getDate() >= Math.min(lastNow, lastUntil)));
827
  // Adjust for months difference and end of month if necessary
828
  now = new Date(now.getTime());
829
  var wasLastDay = (now.getDate() == lastNow);
830
+ var lastDay = this._getDaysInMonth(now.getFullYear() + periods[Y],
831
  now.getMonth() + periods[O]);
832
  if (now.getDate() > lastDay) {
833
  now.setDate(lastDay);
assets/js/jquery.countdown.min.js CHANGED
@@ -1,6 +1 @@
1
- /* http://keith-wood.name/countdown.html
2
- Countdown for jQuery v2.0.1.
3
- Written by Keith Wood (kbwood{at}iinet.com.au) January 2008.
4
- Available under the MIT (https://github.com/jquery/jquery/blob/master/MIT-LICENSE.txt) license.
5
- Please attribute the author if you use it. */
6
- (function($){var w='countdown';var Y=0;var O=1;var W=2;var D=3;var H=4;var M=5;var S=6;$.JQPlugin.createPlugin({name:w,defaultOptions:{until:null,since:null,timezone:null,serverSync:null,format:'dHMS',layout:'',compact:false,padZeroes:false,significant:0,description:'',expiryUrl:'',expiryText:'',alwaysExpire:false,onExpiry:null,onTick:null,tickInterval:1},regionalOptions:{'':{labels:['Years','Months','Weeks','Days','Hours','Minutes','Seconds'],labels1:['Year','Month','Week','Day','Hour','Minute','Second'],compactLabels:['y','m','w','d'],whichLabels:null,digits:['0','1','2','3','4','5','6','7','8','9'],timeSeparator:':',isRTL:false}},_getters:['getTimes'],_rtlClass:w+'-rtl',_sectionClass:w+'-section',_amountClass:w+'-amount',_periodClass:w+'-period',_rowClass:w+'-row',_holdingClass:w+'-holding',_showClass:w+'-show',_descrClass:w+'-descr',_timerElems:[],_init:function(){var c=this;this._super();this._serverSyncs=[];var d=(typeof Date.now=='function'?Date.now:function(){return new Date().getTime()});var e=(window.performance&&typeof window.performance.now=='function');function timerCallBack(a){var b=(a<1e12?(e?(performance.now()+performance.timing.navigationStart):d()):a||d());if(b-g>=1000){c._updateElems();g=b}f(timerCallBack)}var f=window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||window.oRequestAnimationFrame||window.msRequestAnimationFrame||null;var g=0;if(!f||$.noRequestAnimationFrame){$.noRequestAnimationFrame=null;setInterval(function(){c._updateElems()},980)}else{g=window.animationStartTime||window.webkitAnimationStartTime||window.mozAnimationStartTime||window.oAnimationStartTime||window.msAnimationStartTime||d();f(timerCallBack)}},UTCDate:function(a,b,c,e,f,g,h,i){if(typeof b=='object'&&b.constructor==Date){i=b.getMilliseconds();h=b.getSeconds();g=b.getMinutes();f=b.getHours();e=b.getDate();c=b.getMonth();b=b.getFullYear()}var d=new Date();d.setUTCFullYear(b);d.setUTCDate(1);d.setUTCMonth(c||0);d.setUTCDate(e||1);d.setUTCHours(f||0);d.setUTCMinutes((g||0)-(Math.abs(a)<30?a*60:a));d.setUTCSeconds(h||0);d.setUTCMilliseconds(i||0);return d},periodsToSeconds:function(a){return a[0]*31557600+a[1]*2629800+a[2]*604800+a[3]*86400+a[4]*3600+a[5]*60+a[6]},_instSettings:function(a,b){return{_periods:[0,0,0,0,0,0,0]}},_addElem:function(a){if(!this._hasElem(a)){this._timerElems.push(a)}},_hasElem:function(a){return($.inArray(a,this._timerElems)>-1)},_removeElem:function(b){this._timerElems=$.map(this._timerElems,function(a){return(a==b?null:a)})},_updateElems:function(){for(var i=this._timerElems.length-1;i>=0;i--){this._updateCountdown(this._timerElems[i])}},_optionsChanged:function(a,b,c){if(c.layout){c.layout=c.layout.replace(/&lt;/g,'<').replace(/&gt;/g,'>')}this._resetExtraLabels(b.options,c);var d=(b.options.timezone!=c.timezone);$.extend(b.options,c);this._adjustSettings(a,b,c.until!=null||c.since!=null||d);var e=new Date();if((b._since&&b._since<e)||(b._until&&b._until>e)){this._addElem(a[0])}this._updateCountdown(a,b)},_updateCountdown:function(a,b){a=a.jquery?a:$(a);b=b||this._getInst(a);if(!b){return}a.html(this._generateHTML(b)).toggleClass(this._rtlClass,b.options.isRTL);if($.isFunction(b.options.onTick)){var c=b._hold!='lap'?b._periods:this._calculatePeriods(b,b._show,b.options.significant,new Date());if(b.options.tickInterval==1||this.periodsToSeconds(c)%b.options.tickInterval==0){b.options.onTick.apply(a[0],[c])}}var d=b._hold!='pause'&&(b._since?b._now.getTime()<b._since.getTime():b._now.getTime()>=b._until.getTime());if(d&&!b._expiring){b._expiring=true;if(this._hasElem(a[0])||b.options.alwaysExpire){this._removeElem(a[0]);if($.isFunction(b.options.onExpiry)){b.options.onExpiry.apply(a[0],[])}if(b.options.expiryText){var e=b.options.layout;b.options.layout=b.options.expiryText;this._updateCountdown(a[0],b);b.options.layout=e}if(b.options.expiryUrl){window.location=b.options.expiryUrl}}b._expiring=false}else if(b._hold=='pause'){this._removeElem(a[0])}},_resetExtraLabels:function(a,b){for(var n in b){if(n.match(/[Ll]abels[02-9]|compactLabels1/)){a[n]=b[n]}}for(var n in a){if(n.match(/[Ll]abels[02-9]|compactLabels1/)&&typeof b[n]==='undefined'){a[n]=null}}},_adjustSettings:function(a,b,c){var d;var e=0;var f=null;for(var i=0;i<this._serverSyncs.length;i++){if(this._serverSyncs[i][0]==b.options.serverSync){f=this._serverSyncs[i][1];break}}if(f!=null){e=(b.options.serverSync?f:0);d=new Date()}else{var g=($.isFunction(b.options.serverSync)?b.options.serverSync.apply(a[0],[]):null);d=new Date();e=(g?d.getTime()-g.getTime():0);this._serverSyncs.push([b.options.serverSync,e])}var h=b.options.timezone;h=(h==null?-d.getTimezoneOffset():h);if(c||(!c&&b._until==null&&b._since==null)){b._since=b.options.since;if(b._since!=null){b._since=this.UTCDate(h,this._determineTime(b._since,null));if(b._since&&e){b._since.setMilliseconds(b._since.getMilliseconds()+e)}}b._until=this.UTCDate(h,this._determineTime(b.options.until,d));if(e){b._until.setMilliseconds(b._until.getMilliseconds()+e)}}b._show=this._determineShow(b)},_preDestroy:function(a,b){this._removeElem(a[0]);a.empty()},pause:function(a){this._hold(a,'pause')},lap:function(a){this._hold(a,'lap')},resume:function(a){this._hold(a,null)},toggle:function(a){var b=$.data(a,this.name)||{};this[!b._hold?'pause':'resume'](a)},toggleLap:function(a){var b=$.data(a,this.name)||{};this[!b._hold?'lap':'resume'](a)},_hold:function(a,b){var c=$.data(a,this.name);if(c){if(c._hold=='pause'&&!b){c._periods=c._savePeriods;var d=(c._since?'-':'+');c[c._since?'_since':'_until']=this._determineTime(d+c._periods[0]+'y'+d+c._periods[1]+'o'+d+c._periods[2]+'w'+d+c._periods[3]+'d'+d+c._periods[4]+'h'+d+c._periods[5]+'m'+d+c._periods[6]+'s');this._addElem(a)}c._hold=b;c._savePeriods=(b=='pause'?c._periods:null);$.data(a,this.name,c);this._updateCountdown(a,c)}},getTimes:function(a){var b=$.data(a,this.name);return(!b?null:(b._hold=='pause'?b._savePeriods:(!b._hold?b._periods:this._calculatePeriods(b,b._show,b.options.significant,new Date()))))},_determineTime:function(k,l){var m=this;var n=function(a){var b=new Date();b.setTime(b.getTime()+a*1000);return b};var o=function(a){a=a.toLowerCase();var b=new Date();var c=b.getFullYear();var d=b.getMonth();var e=b.getDate();var f=b.getHours();var g=b.getMinutes();var h=b.getSeconds();var i=/([+-]?[0-9]+)\s*(s|m|h|d|w|o|y)?/g;var j=i.exec(a);while(j){switch(j[2]||'s'){case's':h+=parseInt(j[1],10);break;case'm':g+=parseInt(j[1],10);break;case'h':f+=parseInt(j[1],10);break;case'd':e+=parseInt(j[1],10);break;case'w':e+=parseInt(j[1],10)*7;break;case'o':d+=parseInt(j[1],10);e=Math.min(e,m._getDaysInMonth(c,d));break;case'y':c+=parseInt(j[1],10);e=Math.min(e,m._getDaysInMonth(c,d));break}j=i.exec(a)}return new Date(c,d,e,f,g,h,0)};var p=(k==null?l:(typeof k=='string'?o(k):(typeof k=='number'?n(k):k)));if(p)p.setMilliseconds(0);return p},_getDaysInMonth:function(a,b){return 32-new Date(a,b,32).getDate()},_normalLabels:function(a){return a},_generateHTML:function(c){var d=this;c._periods=(c._hold?c._periods:this._calculatePeriods(c,c._show,c.options.significant,new Date()));var e=false;var f=0;var g=c.options.significant;var h=$.extend({},c._show);for(var i=Y;i<=S;i++){e|=(c._show[i]=='?'&&c._periods[i]>0);h[i]=(c._show[i]=='?'&&!e?null:c._show[i]);f+=(h[i]?1:0);g-=(c._periods[i]>0?1:0)}var j=[false,false,false,false,false,false,false];for(var i=S;i>=Y;i--){if(c._show[i]){if(c._periods[i]){j[i]=true}else{j[i]=g>0;g--}}}var k=(c.options.compact?c.options.compactLabels:c.options.labels);var l=c.options.whichLabels||this._normalLabels;var m=function(a){var b=c.options['compactLabels'+l(c._periods[a])];return(h[a]?d._translateDigits(c,c._periods[a])+(b?b[a]:k[a])+' ':'')};var n=(c.options.padZeroes?2:1);var o=function(a){var b=c.options['labels'+l(c._periods[a])];return((!c.options.significant&&h[a])||(c.options.significant&&j[a])?'<span class="'+d._sectionClass+'">'+'<span class="'+d._amountClass+'">'+d._minDigits(c,c._periods[a],n)+'</span>'+'<span class="'+d._periodClass+'">'+(b?b[a]:k[a])+'</span></span>':'')};return(c.options.layout?this._buildLayout(c,h,c.options.layout,c.options.compact,c.options.significant,j):((c.options.compact?'<span class="'+this._rowClass+' '+this._amountClass+(c._hold?' '+this._holdingClass:'')+'">'+m(Y)+m(O)+m(W)+m(D)+(h[H]?this._minDigits(c,c._periods[H],2):'')+(h[M]?(h[H]?c.options.timeSeparator:'')+this._minDigits(c,c._periods[M],2):'')+(h[S]?(h[H]||h[M]?c.options.timeSeparator:'')+this._minDigits(c,c._periods[S],2):''):'<span class="'+this._rowClass+' '+this._showClass+(c.options.significant||f)+(c._hold?' '+this._holdingClass:'')+'">'+o(Y)+o(O)+o(W)+o(D)+o(H)+o(M)+o(S))+'</span>'+(c.options.description?'<span class="'+this._rowClass+' '+this._descrClass+'">'+c.options.description+'</span>':'')))},_buildLayout:function(c,d,e,f,g,h){var j=c.options[f?'compactLabels':'labels'];var k=c.options.whichLabels||this._normalLabels;var l=function(a){return(c.options[(f?'compactLabels':'labels')+k(c._periods[a])]||j)[a]};var m=function(a,b){return c.options.digits[Math.floor(a/b)%10]};var o={desc:c.options.description,sep:c.options.timeSeparator,yl:l(Y),yn:this._minDigits(c,c._periods[Y],1),ynn:this._minDigits(c,c._periods[Y],2),ynnn:this._minDigits(c,c._periods[Y],3),y1:m(c._periods[Y],1),y10:m(c._periods[Y],10),y100:m(c._periods[Y],100),y1000:m(c._periods[Y],1000),ol:l(O),on:this._minDigits(c,c._periods[O],1),onn:this._minDigits(c,c._periods[O],2),onnn:this._minDigits(c,c._periods[O],3),o1:m(c._periods[O],1),o10:m(c._periods[O],10),o100:m(c._periods[O],100),o1000:m(c._periods[O],1000),wl:l(W),wn:this._minDigits(c,c._periods[W],1),wnn:this._minDigits(c,c._periods[W],2),wnnn:this._minDigits(c,c._periods[W],3),w1:m(c._periods[W],1),w10:m(c._periods[W],10),w100:m(c._periods[W],100),w1000:m(c._periods[W],1000),dl:l(D),dn:this._minDigits(c,c._periods[D],1),dnn:this._minDigits(c,c._periods[D],2),dnnn:this._minDigits(c,c._periods[D],3),d1:m(c._periods[D],1),d10:m(c._periods[D],10),d100:m(c._periods[D],100),d1000:m(c._periods[D],1000),hl:l(H),hn:this._minDigits(c,c._periods[H],1),hnn:this._minDigits(c,c._periods[H],2),hnnn:this._minDigits(c,c._periods[H],3),h1:m(c._periods[H],1),h10:m(c._periods[H],10),h100:m(c._periods[H],100),h1000:m(c._periods[H],1000),ml:l(M),mn:this._minDigits(c,c._periods[M],1),mnn:this._minDigits(c,c._periods[M],2),mnnn:this._minDigits(c,c._periods[M],3),m1:m(c._periods[M],1),m10:m(c._periods[M],10),m100:m(c._periods[M],100),m1000:m(c._periods[M],1000),sl:l(S),sn:this._minDigits(c,c._periods[S],1),snn:this._minDigits(c,c._periods[S],2),snnn:this._minDigits(c,c._periods[S],3),s1:m(c._periods[S],1),s10:m(c._periods[S],10),s100:m(c._periods[S],100),s1000:m(c._periods[S],1000)};var p=e;for(var i=Y;i<=S;i++){var q='yowdhms'.charAt(i);var r=new RegExp('\\{'+q+'<\\}([\\s\\S]*)\\{'+q+'>\\}','g');p=p.replace(r,((!g&&d[i])||(g&&h[i])?'$1':''))}$.each(o,function(n,v){var a=new RegExp('\\{'+n+'\\}','g');p=p.replace(a,v)});return p},_minDigits:function(a,b,c){b=''+b;if(b.length>=c){return this._translateDigits(a,b)}b='0000000000'+b;return this._translateDigits(a,b.substr(b.length-c))},_translateDigits:function(b,c){return(''+c).replace(/[0-9]/g,function(a){return b.options.digits[a]})},_determineShow:function(a){var b=a.options.format;var c=[];c[Y]=(b.match('y')?'?':(b.match('Y')?'!':null));c[O]=(b.match('o')?'?':(b.match('O')?'!':null));c[W]=(b.match('w')?'?':(b.match('W')?'!':null));c[D]=(b.match('d')?'?':(b.match('D')?'!':null));c[H]=(b.match('h')?'?':(b.match('H')?'!':null));c[M]=(b.match('m')?'?':(b.match('M')?'!':null));c[S]=(b.match('s')?'?':(b.match('S')?'!':null));return c},_calculatePeriods:function(c,d,e,f){c._now=f;c._now.setMilliseconds(0);var g=new Date(c._now.getTime());if(c._since){if(f.getTime()<c._since.getTime()){c._now=f=g}else{f=c._since}}else{g.setTime(c._until.getTime());if(f.getTime()>c._until.getTime()){c._now=f=g}}var h=[0,0,0,0,0,0,0];if(d[Y]||d[O]){var i=this._getDaysInMonth(f.getFullYear(),f.getMonth());var j=this._getDaysInMonth(g.getFullYear(),g.getMonth());var k=(g.getDate()==f.getDate()||(g.getDate()>=Math.min(i,j)&&f.getDate()>=Math.min(i,j)));var l=function(a){return(a.getHours()*60+a.getMinutes())*60+a.getSeconds()};var m=Math.max(0,(g.getFullYear()-f.getFullYear())*12+g.getMonth()-f.getMonth()+((g.getDate()<f.getDate()&&!k)||(k&&l(g)<l(f))?-1:0));h[Y]=(d[Y]?Math.floor(m/12):0);h[O]=(d[O]?m-h[Y]*12:0);f=new Date(f.getTime());var n=(f.getDate()==i);var o=this._getDaysInMonth(f.getFullYear()+h[Y],f.getMonth()+h[O]);if(f.getDate()>o){f.setDate(o)}f.setFullYear(f.getFullYear()+h[Y]);f.setMonth(f.getMonth()+h[O]);if(n){f.setDate(o)}}var p=Math.floor((g.getTime()-f.getTime())/1000);var q=function(a,b){h[a]=(d[a]?Math.floor(p/b):0);p-=h[a]*b};q(W,604800);q(D,86400);q(H,3600);q(M,60);q(S,1);if(p>0&&!c._since){var r=[1,12,4.3482,7,24,60,60];var s=S;var t=1;for(var u=S;u>=Y;u--){if(d[u]){if(h[s]>=t){h[s]=0;p=1}if(p>0){h[u]++;p=0;s=u;t=1}}t*=r[u]}}if(e){for(var u=Y;u<=S;u++){if(e&&h[u]){e--}else if(!e){h[u]=0}}}return h}})})(jQuery);
1
+ !function(a){var b="countdown",c=0,d=1,e=2,f=3,g=4,h=5,i=6;a.JQPlugin.createPlugin({name:b,defaultOptions:{until:null,since:null,timezone:null,serverSync:null,format:"dHMS",layout:"",compact:!1,padZeroes:!1,significant:0,description:"",expiryUrl:"",expiryText:"",alwaysExpire:!1,onExpiry:null,onTick:null,tickInterval:1},regionalOptions:{"":{labels:["Years","Months","Weeks","Days","Hours","Minutes","Seconds"],labels1:["Year","Month","Week","Day","Hour","Minute","Second"],compactLabels:["y","m","w","d"],whichLabels:null,digits:["0","1","2","3","4","5","6","7","8","9"],timeSeparator:":",isRTL:!1}},_getters:["getTimes"],_rtlClass:b+"-rtl",_sectionClass:b+"-section",_amountClass:b+"-amount",_periodClass:b+"-period",_rowClass:b+"-row",_holdingClass:b+"-holding",_showClass:b+"-show",_descrClass:b+"-descr",_timerElems:[],_init:function(){function b(a){var h=1e12>a?e?performance.now()+performance.timing.navigationStart:d():a||d();h-g>=1e3&&(c._updateElems(),g=h),f(b)}var c=this;this._super(),this._serverSyncs=[];var d="function"==typeof Date.now?Date.now:function(){return(new Date).getTime()},e=window.performance&&"function"==typeof window.performance.now,f=window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||window.oRequestAnimationFrame||window.msRequestAnimationFrame||null,g=0;!f||a.noRequestAnimationFrame?(a.noRequestAnimationFrame=null,setInterval(function(){c._updateElems()},980)):(g=window.animationStartTime||window.webkitAnimationStartTime||window.mozAnimationStartTime||window.oAnimationStartTime||window.msAnimationStartTime||d(),f(b))},UTCDate:function(a,b,c,d,e,f,g,h){"object"==typeof b&&b.constructor==Date&&(h=b.getMilliseconds(),g=b.getSeconds(),f=b.getMinutes(),e=b.getHours(),d=b.getDate(),c=b.getMonth(),b=b.getFullYear());var i=new Date;return i.setUTCFullYear(b),i.setUTCDate(1),i.setUTCMonth(c||0),i.setUTCDate(d||1),i.setUTCHours(e||0),i.setUTCMinutes((f||0)-(Math.abs(a)<30?60*a:a)),i.setUTCSeconds(g||0),i.setUTCMilliseconds(h||0),i},periodsToSeconds:function(a){return 31557600*a[0]+2629800*a[1]+604800*a[2]+86400*a[3]+3600*a[4]+60*a[5]+a[6]},resync:function(){var b=this;a("."+this._getMarker()).each(function(){var c=a.data(this,b.name);if(c.options.serverSync){for(var d=null,e=0;e<b._serverSyncs.length;e++)if(b._serverSyncs[e][0]==c.options.serverSync){d=b._serverSyncs[e];break}if(null==d[2]){var f=a.isFunction(c.options.serverSync)?c.options.serverSync.apply(this,[]):null;d[2]=(f?(new Date).getTime()-f.getTime():0)-d[1]}c._since&&c._since.setMilliseconds(c._since.getMilliseconds()+d[2]),c._until.setMilliseconds(c._until.getMilliseconds()+d[2])}});for(var c=0;c<b._serverSyncs.length;c++)null!=b._serverSyncs[c][2]&&(b._serverSyncs[c][1]+=b._serverSyncs[c][2],delete b._serverSyncs[c][2])},_instSettings:function(a,b){return{_periods:[0,0,0,0,0,0,0]}},_addElem:function(a){this._hasElem(a)||this._timerElems.push(a)},_hasElem:function(b){return a.inArray(b,this._timerElems)>-1},_removeElem:function(b){this._timerElems=a.map(this._timerElems,function(a){return a==b?null:a})},_updateElems:function(){for(var a=this._timerElems.length-1;a>=0;a--)this._updateCountdown(this._timerElems[a])},_optionsChanged:function(b,c,d){d.layout&&(d.layout=d.layout.replace(/&lt;/g,"<").replace(/&gt;/g,">")),this._resetExtraLabels(c.options,d);var e=c.options.timezone!=d.timezone;a.extend(c.options,d),this._adjustSettings(b,c,null!=d.until||null!=d.since||e);var f=new Date;(c._since&&c._since<f||c._until&&c._until>f)&&this._addElem(b[0]),this._updateCountdown(b,c)},_updateCountdown:function(b,c){if(b=b.jquery?b:a(b),c=c||this._getInst(b)){if(b.html(this._generateHTML(c)).toggleClass(this._rtlClass,c.options.isRTL),a.isFunction(c.options.onTick)){var d="lap"!=c._hold?c._periods:this._calculatePeriods(c,c._show,c.options.significant,new Date);1!=c.options.tickInterval&&this.periodsToSeconds(d)%c.options.tickInterval!=0||c.options.onTick.apply(b[0],[d])}var e="pause"!=c._hold&&(c._since?c._now.getTime()<c._since.getTime():c._now.getTime()>=c._until.getTime());if(e&&!c._expiring){if(c._expiring=!0,this._hasElem(b[0])||c.options.alwaysExpire){if(this._removeElem(b[0]),a.isFunction(c.options.onExpiry)&&c.options.onExpiry.apply(b[0],[]),c.options.expiryText){var f=c.options.layout;c.options.layout=c.options.expiryText,this._updateCountdown(b[0],c),c.options.layout=f}c.options.expiryUrl&&(window.location=c.options.expiryUrl)}c._expiring=!1}else"pause"==c._hold&&this._removeElem(b[0])}},_resetExtraLabels:function(a,b){for(var c in b)c.match(/[Ll]abels[02-9]|compactLabels1/)&&(a[c]=b[c]);for(var c in a)c.match(/[Ll]abels[02-9]|compactLabels1/)&&"undefined"==typeof b[c]&&(a[c]=null)},_adjustSettings:function(b,c,d){for(var e=null,f=0;f<this._serverSyncs.length;f++)if(this._serverSyncs[f][0]==c.options.serverSync){e=this._serverSyncs[f][1];break}if(null!=e)var g=c.options.serverSync?e:0,h=new Date;else{var i=a.isFunction(c.options.serverSync)?c.options.serverSync.apply(b[0],[]):null,h=new Date,g=i?h.getTime()-i.getTime():0;this._serverSyncs.push([c.options.serverSync,g])}var j=c.options.timezone;j=null==j?-h.getTimezoneOffset():j,(d||!d&&null==c._until&&null==c._since)&&(c._since=c.options.since,null!=c._since&&(c._since=this.UTCDate(j,this._determineTime(c._since,null)),c._since&&g&&c._since.setMilliseconds(c._since.getMilliseconds()+g)),c._until=this.UTCDate(j,this._determineTime(c.options.until,h)),g&&c._until.setMilliseconds(c._until.getMilliseconds()+g)),c._show=this._determineShow(c)},_preDestroy:function(a,b){this._removeElem(a[0]),a.empty()},pause:function(a){this._hold(a,"pause")},lap:function(a){this._hold(a,"lap")},resume:function(a){this._hold(a,null)},toggle:function(b){var c=a.data(b,this.name)||{};this[c._hold?"resume":"pause"](b)},toggleLap:function(b){var c=a.data(b,this.name)||{};this[c._hold?"resume":"lap"](b)},_hold:function(b,c){var d=a.data(b,this.name);if(d){if("pause"==d._hold&&!c){d._periods=d._savePeriods;var e=d._since?"-":"+";d[d._since?"_since":"_until"]=this._determineTime(e+d._periods[0]+"y"+e+d._periods[1]+"o"+e+d._periods[2]+"w"+e+d._periods[3]+"d"+e+d._periods[4]+"h"+e+d._periods[5]+"m"+e+d._periods[6]+"s"),this._addElem(b)}d._hold=c,d._savePeriods="pause"==c?d._periods:null,a.data(b,this.name,d),this._updateCountdown(b,d)}},getTimes:function(b){var c=a.data(b,this.name);return c?"pause"==c._hold?c._savePeriods:c._hold?this._calculatePeriods(c,c._show,c.options.significant,new Date):c._periods:null},_determineTime:function(a,b){var c=this,d=function(a){var b=new Date;return b.setTime(b.getTime()+1e3*a),b},e=function(a){a=a.toLowerCase();for(var b=new Date,d=b.getFullYear(),e=b.getMonth(),f=b.getDate(),g=b.getHours(),h=b.getMinutes(),i=b.getSeconds(),j=/([+-]?[0-9]+)\s*(s|m|h|d|w|o|y)?/g,k=j.exec(a);k;){switch(k[2]||"s"){case"s":i+=parseInt(k[1],10);break;case"m":h+=parseInt(k[1],10);break;case"h":g+=parseInt(k[1],10);break;case"d":f+=parseInt(k[1],10);break;case"w":f+=7*parseInt(k[1],10);break;case"o":e+=parseInt(k[1],10),f=Math.min(f,c._getDaysInMonth(d,e));break;case"y":d+=parseInt(k[1],10),f=Math.min(f,c._getDaysInMonth(d,e))}k=j.exec(a)}return new Date(d,e,f,g,h,i,0)},f=null==a?b:"string"==typeof a?e(a):"number"==typeof a?d(a):a;return f&&f.setMilliseconds(0),f},_getDaysInMonth:function(a,b){return 32-new Date(a,b,32).getDate()},_normalLabels:function(a){return a},_generateHTML:function(b){var j=this;b._periods=b._hold?b._periods:this._calculatePeriods(b,b._show,b.options.significant,new Date);for(var k=!1,l=0,m=b.options.significant,n=a.extend({},b._show),o=c;i>=o;o++)k|="?"==b._show[o]&&b._periods[o]>0,n[o]="?"!=b._show[o]||k?b._show[o]:null,l+=n[o]?1:0,m-=b._periods[o]>0?1:0;for(var p=[!1,!1,!1,!1,!1,!1,!1],o=i;o>=c;o--)b._show[o]&&(b._periods[o]?p[o]=!0:(p[o]=m>0,m--));var q=b.options.compact?b.options.compactLabels:b.options.labels,r=b.options.whichLabels||this._normalLabels,s=function(a){var c=b.options["compactLabels"+r(b._periods[a])];return n[a]?j._translateDigits(b,b._periods[a])+(c?c[a]:q[a])+" ":""},t=b.options.padZeroes?2:1,u=function(a){var c=b.options["labels"+r(b._periods[a])];return!b.options.significant&&n[a]||b.options.significant&&p[a]?'<span class="'+j._sectionClass+'"><span class="'+j._amountClass+'">'+j._minDigits(b,b._periods[a],t)+'</span><span class="'+j._periodClass+'">'+(c?c[a]:q[a])+"</span></span>":""};return b.options.layout?this._buildLayout(b,n,b.options.layout,b.options.compact,b.options.significant,p):(b.options.compact?'<span class="'+this._rowClass+" "+this._amountClass+(b._hold?" "+this._holdingClass:"")+'">'+s(c)+s(d)+s(e)+s(f)+(n[g]?this._minDigits(b,b._periods[g],2):"")+(n[h]?(n[g]?b.options.timeSeparator:"")+this._minDigits(b,b._periods[h],2):"")+(n[i]?(n[g]||n[h]?b.options.timeSeparator:"")+this._minDigits(b,b._periods[i],2):""):'<span class="'+this._rowClass+" "+this._showClass+(b.options.significant||l)+(b._hold?" "+this._holdingClass:"")+'">'+u(c)+u(d)+u(e)+u(f)+u(g)+u(h)+u(i))+"</span>"+(b.options.description?'<span class="'+this._rowClass+" "+this._descrClass+'">'+b.options.description+"</span>":"")},_buildLayout:function(b,j,k,l,m,n){for(var o=b.options[l?"compactLabels":"labels"],p=b.options.whichLabels||this._normalLabels,q=function(a){return(b.options[(l?"compactLabels":"labels")+p(b._periods[a])]||o)[a]},r=function(a,c){return b.options.digits[Math.floor(a/c)%10]},s={desc:b.options.description,sep:b.options.timeSeparator,yl:q(c),yn:this._minDigits(b,b._periods[c],1),ynn:this._minDigits(b,b._periods[c],2),ynnn:this._minDigits(b,b._periods[c],3),y1:r(b._periods[c],1),y10:r(b._periods[c],10),y100:r(b._periods[c],100),y1000:r(b._periods[c],1e3),ol:q(d),on:this._minDigits(b,b._periods[d],1),onn:this._minDigits(b,b._periods[d],2),onnn:this._minDigits(b,b._periods[d],3),o1:r(b._periods[d],1),o10:r(b._periods[d],10),o100:r(b._periods[d],100),o1000:r(b._periods[d],1e3),wl:q(e),wn:this._minDigits(b,b._periods[e],1),wnn:this._minDigits(b,b._periods[e],2),wnnn:this._minDigits(b,b._periods[e],3),w1:r(b._periods[e],1),w10:r(b._periods[e],10),w100:r(b._periods[e],100),w1000:r(b._periods[e],1e3),dl:q(f),dn:this._minDigits(b,b._periods[f],1),dnn:this._minDigits(b,b._periods[f],2),dnnn:this._minDigits(b,b._periods[f],3),d1:r(b._periods[f],1),d10:r(b._periods[f],10),d100:r(b._periods[f],100),d1000:r(b._periods[f],1e3),hl:q(g),hn:this._minDigits(b,b._periods[g],1),hnn:this._minDigits(b,b._periods[g],2),hnnn:this._minDigits(b,b._periods[g],3),h1:r(b._periods[g],1),h10:r(b._periods[g],10),h100:r(b._periods[g],100),h1000:r(b._periods[g],1e3),ml:q(h),mn:this._minDigits(b,b._periods[h],1),mnn:this._minDigits(b,b._periods[h],2),mnnn:this._minDigits(b,b._periods[h],3),m1:r(b._periods[h],1),m10:r(b._periods[h],10),m100:r(b._periods[h],100),m1000:r(b._periods[h],1e3),sl:q(i),sn:this._minDigits(b,b._periods[i],1),snn:this._minDigits(b,b._periods[i],2),snnn:this._minDigits(b,b._periods[i],3),s1:r(b._periods[i],1),s10:r(b._periods[i],10),s100:r(b._periods[i],100),s1000:r(b._periods[i],1e3)},t=k,u=c;i>=u;u++){var v="yowdhms".charAt(u),w=new RegExp("\\{"+v+"<\\}([\\s\\S]*)\\{"+v+">\\}","g");t=t.replace(w,!m&&j[u]||m&&n[u]?"$1":"")}return a.each(s,function(a,b){var c=new RegExp("\\{"+a+"\\}","g");t=t.replace(c,b)}),t},_minDigits:function(a,b,c){return b=""+b,b.length>=c?this._translateDigits(a,b):(b="0000000000"+b,this._translateDigits(a,b.substr(b.length-c)))},_translateDigits:function(a,b){return(""+b).replace(/[0-9]/g,function(b){return a.options.digits[b]})},_determineShow:function(a){var b=a.options.format,j=[];return j[c]=b.match("y")?"?":b.match("Y")?"!":null,j[d]=b.match("o")?"?":b.match("O")?"!":null,j[e]=b.match("w")?"?":b.match("W")?"!":null,j[f]=b.match("d")?"?":b.match("D")?"!":null,j[g]=b.match("h")?"?":b.match("H")?"!":null,j[h]=b.match("m")?"?":b.match("M")?"!":null,j[i]=b.match("s")?"?":b.match("S")?"!":null,j},_calculatePeriods:function(a,b,j,k){a._now=k,a._now.setMilliseconds(0);var l=new Date(a._now.getTime());a._since?k.getTime()<a._since.getTime()?a._now=k=l:k=a._since:(l.setTime(a._until.getTime()),k.getTime()>a._until.getTime()&&(a._now=k=l));var m=[0,0,0,0,0,0,0];if(b[c]||b[d]){var n=this._getDaysInMonth(k.getFullYear(),k.getMonth()),o=this._getDaysInMonth(l.getFullYear(),l.getMonth()),p=l.getDate()==k.getDate()||l.getDate()>=Math.min(n,o)&&k.getDate()>=Math.min(n,o),q=function(a){return 60*(60*a.getHours()+a.getMinutes())+a.getSeconds()},r=Math.max(0,12*(l.getFullYear()-k.getFullYear())+l.getMonth()-k.getMonth()+(l.getDate()<k.getDate()&&!p||p&&q(l)<q(k)?-1:0));m[c]=b[c]?Math.floor(r/12):0,m[d]=b[d]?r-12*m[c]:0,k=new Date(k.getTime());var s=k.getDate()==n,t=this._getDaysInMonth(k.getFullYear()+m[c],k.getMonth()+m[d]);k.getDate()>t&&k.setDate(t),k.setFullYear(k.getFullYear()+m[c]),k.setMonth(k.getMonth()+m[d]),s&&k.setDate(t)}var u=Math.floor((l.getTime()-k.getTime())/1e3),v=function(a,c){m[a]=b[a]?Math.floor(u/c):0,u-=m[a]*c};if(v(e,604800),v(f,86400),v(g,3600),v(h,60),v(i,1),u>0&&!a._since)for(var w=[1,12,4.3482,7,24,60,60],x=i,y=1,z=i;z>=c;z--)b[z]&&(m[x]>=y&&(m[x]=0,u=1),u>0&&(m[z]++,u=0,x=z,y=1)),y*=w[z];if(j)for(var z=c;i>=z;z++)j&&m[z]?j--:j||(m[z]=0);return m}})}(jQuery);
 
 
 
 
 
assets/js/jquery.plugin.js CHANGED
@@ -74,7 +74,7 @@
74
 
75
  /** Abstract base class for collection plugins v1.0.1.
76
  Written by Keith Wood (kbwood{at}iinet.com.au) December 2013.
77
- Licensed under the MIT (https://github.com/jquery/jquery/blob/master/MIT-LICENSE.txt) license.
78
  @module $.JQPlugin
79
  @abstract */
80
  JQClass.classes.JQPlugin = JQClass.extend({
74
 
75
  /** Abstract base class for collection plugins v1.0.1.
76
  Written by Keith Wood (kbwood{at}iinet.com.au) December 2013.
77
+ Licensed under the MIT (http://keith-wood.name/licence.html) license.
78
  @module $.JQPlugin
79
  @abstract */
80
  JQClass.classes.JQPlugin = JQClass.extend({
assets/js/jquery.plugin.min.js CHANGED
@@ -1,4 +1 @@
1
- /** Abstract base class for collection plugins v1.0.1.
2
- Written by Keith Wood (kbwood{at}iinet.com.au) December 2013.
3
- Licensed under the MIT (https://github.com/jquery/jquery/blob/master/MIT-LICENSE.txt) license. */
4
- (function(){var j=false;window.JQClass=function(){};JQClass.classes={};JQClass.extend=function extender(f){var g=this.prototype;j=true;var h=new this();j=false;for(var i in f){h[i]=typeof f[i]=='function'&&typeof g[i]=='function'?(function(d,e){return function(){var b=this._super;this._super=function(a){return g[d].apply(this,a||[])};var c=e.apply(this,arguments);this._super=b;return c}})(i,f[i]):f[i]}function JQClass(){if(!j&&this._init){this._init.apply(this,arguments)}}JQClass.prototype=h;JQClass.prototype.constructor=JQClass;JQClass.extend=extender;return JQClass}})();(function($){JQClass.classes.JQPlugin=JQClass.extend({name:'plugin',defaultOptions:{},regionalOptions:{},_getters:[],_getMarker:function(){return'is-'+this.name},_init:function(){$.extend(this.defaultOptions,(this.regionalOptions&&this.regionalOptions[''])||{});var c=camelCase(this.name);$[c]=this;$.fn[c]=function(a){var b=Array.prototype.slice.call(arguments,1);if($[c]._isNotChained(a,b)){return $[c][a].apply($[c],[this[0]].concat(b))}return this.each(function(){if(typeof a==='string'){if(a[0]==='_'||!$[c][a]){throw'Unknown method: '+a;}$[c][a].apply($[c],[this].concat(b))}else{$[c]._attach(this,a)}})}},setDefaults:function(a){$.extend(this.defaultOptions,a||{})},_isNotChained:function(a,b){if(a==='option'&&(b.length===0||(b.length===1&&typeof b[0]==='string'))){return true}return $.inArray(a,this._getters)>-1},_attach:function(a,b){a=$(a);if(a.hasClass(this._getMarker())){return}a.addClass(this._getMarker());b=$.extend({},this.defaultOptions,this._getMetadata(a),b||{});var c=$.extend({name:this.name,elem:a,options:b},this._instSettings(a,b));a.data(this.name,c);this._postAttach(a,c);this.option(a,b)},_instSettings:function(a,b){return{}},_postAttach:function(a,b){},_getMetadata:function(d){try{var f=d.data(this.name.toLowerCase())||'';f=f.replace(/'/g,'"');f=f.replace(/([a-zA-Z0-9]+):/g,function(a,b,i){var c=f.substring(0,i).match(/"/g);return(!c||c.length%2===0?'"'+b+'":':b+':')});f=$.parseJSON('{'+f+'}');for(var g in f){var h=f[g];if(typeof h==='string'&&h.match(/^new Date\((.*)\)$/)){f[g]=eval(h)}}return f}catch(e){return{}}},_getInst:function(a){return $(a).data(this.name)||{}},option:function(a,b,c){a=$(a);var d=a.data(this.name);if(!b||(typeof b==='string'&&c==null)){var e=(d||{}).options;return(e&&b?e[b]:e)}if(!a.hasClass(this._getMarker())){return}var e=b||{};if(typeof b==='string'){e={};e[b]=c}this._optionsChanged(a,d,e);$.extend(d.options,e)},_optionsChanged:function(a,b,c){},destroy:function(a){a=$(a);if(!a.hasClass(this._getMarker())){return}this._preDestroy(a,this._getInst(a));a.removeData(this.name).removeClass(this._getMarker())},_preDestroy:function(a,b){}});function camelCase(c){return c.replace(/-([a-z])/g,function(a,b){return b.toUpperCase()})}$.JQPlugin={createPlugin:function(a,b){if(typeof a==='object'){b=a;a='JQPlugin'}a=camelCase(a);var c=camelCase(b.name);JQClass.classes[c]=JQClass.classes[a].extend(b);new JQClass.classes[c]()}}})(jQuery);
1
+ !function(){var a=!1;window.JQClass=function(){},JQClass.classes={},JQClass.extend=function b(c){function d(){!a&&this._init&&this._init.apply(this,arguments)}var e=this.prototype;a=!0;var f=new this;a=!1;for(var g in c)f[g]="function"==typeof c[g]&&"function"==typeof e[g]?function(a,b){return function(){var c=this._super;this._super=function(b){return e[a].apply(this,b||[])};var d=b.apply(this,arguments);return this._super=c,d}}(g,c[g]):c[g];return d.prototype=f,d.prototype.constructor=d,d.extend=b,d}}(),function($){function camelCase(a){return a.replace(/-([a-z])/g,function(a,b){return b.toUpperCase()})}JQClass.classes.JQPlugin=JQClass.extend({name:"plugin",defaultOptions:{},regionalOptions:{},_getters:[],_getMarker:function(){return"is-"+this.name},_init:function(){$.extend(this.defaultOptions,this.regionalOptions&&this.regionalOptions[""]||{});var a=camelCase(this.name);$[a]=this,$.fn[a]=function(b){var c=Array.prototype.slice.call(arguments,1);return $[a]._isNotChained(b,c)?$[a][b].apply($[a],[this[0]].concat(c)):this.each(function(){if("string"==typeof b){if("_"===b[0]||!$[a][b])throw"Unknown method: "+b;$[a][b].apply($[a],[this].concat(c))}else $[a]._attach(this,b)})}},setDefaults:function(a){$.extend(this.defaultOptions,a||{})},_isNotChained:function(a,b){return"option"===a&&(0===b.length||1===b.length&&"string"==typeof b[0])?!0:$.inArray(a,this._getters)>-1},_attach:function(a,b){if(a=$(a),!a.hasClass(this._getMarker())){a.addClass(this._getMarker()),b=$.extend({},this.defaultOptions,this._getMetadata(a),b||{});var c=$.extend({name:this.name,elem:a,options:b},this._instSettings(a,b));a.data(this.name,c),this._postAttach(a,c),this.option(a,b)}},_instSettings:function(a,b){return{}},_postAttach:function(a,b){},_getMetadata:function(elem){try{var data=elem.data(this.name.toLowerCase())||"";data=data.replace(/'/g,'"'),data=data.replace(/([a-zA-Z0-9]+):/g,function(a,b,c){var d=data.substring(0,c).match(/"/g);return d&&d.length%2!==0?b+":":'"'+b+'":'}),data=$.parseJSON("{"+data+"}");for(var name in data){var value=data[name];"string"==typeof value&&value.match(/^new Date\((.*)\)$/)&&(data[name]=eval(value))}return data}catch(e){return{}}},_getInst:function(a){return $(a).data(this.name)||{}},option:function(a,b,c){a=$(a);var d=a.data(this.name);if(!b||"string"==typeof b&&null==c){var e=(d||{}).options;return e&&b?e[b]:e}if(a.hasClass(this._getMarker())){var e=b||{};"string"==typeof b&&(e={},e[b]=c),this._optionsChanged(a,d,e),$.extend(d.options,e)}},_optionsChanged:function(a,b,c){},destroy:function(a){a=$(a),a.hasClass(this._getMarker())&&(this._preDestroy(a,this._getInst(a)),a.removeData(this.name).removeClass(this._getMarker()))},_preDestroy:function(a,b){}}),$.JQPlugin={createPlugin:function(a,b){"object"==typeof a&&(b=a,a="JQPlugin"),a=camelCase(a);var c=camelCase(b.name);JQClass.classes[c]=JQClass.classes[a].extend(b),new JQClass.classes[c]}}}(jQuery);
 
 
 
assets/js/jquery.validate.js CHANGED
@@ -1,24 +1,27 @@
1
- /*!
2
- * jQuery Validation Plugin v1.13.0
3
- *
4
- * http://jqueryvalidation.org/
5
- *
6
- * Copyright (c) 2014 Jörn Zaefferer
7
- * Released under the MIT license
8
- */
9
- (function( factory ) {
10
- if ( typeof define === "function" && define.amd ) {
11
- define( ["jquery"], factory );
12
- } else {
13
- factory( jQuery );
14
- }
15
- }(function( $ ) {
 
 
 
 
16
 
17
- $.extend($.fn, {
18
  // http://jqueryvalidation.org/validate/
19
  validate: function( options ) {
20
 
21
- // if nothing is selected, return nothing; can't chain anyway
22
  if ( !this.length ) {
23
  if ( options && options.debug && window.console ) {
24
  console.warn( "Nothing selected, can't validate, returning nothing." );
@@ -26,7 +29,7 @@ $.extend($.fn, {
26
  return;
27
  }
28
 
29
- // check if a validator for this form was already created
30
  var validator = $.data( this[ 0 ], "validator" );
31
  if ( validator ) {
32
  return validator;
@@ -40,48 +43,55 @@ $.extend($.fn, {
40
 
41
  if ( validator.settings.onsubmit ) {
42
 
43
- this.validateDelegate( ":submit", "click", function( event ) {
44
  if ( validator.settings.submitHandler ) {
45
  validator.submitButton = event.target;
46
  }
47
- // allow suppressing validation by adding a cancel class to the submit button
48
- if ( $( event.target ).hasClass( "cancel" ) ) {
 
49
  validator.cancelSubmit = true;
50
  }
51
 
52
- // allow suppressing validation by adding the html5 formnovalidate attribute to the submit button
53
- if ( $( event.target ).attr( "formnovalidate" ) !== undefined ) {
54
  validator.cancelSubmit = true;
55
  }
56
- });
57
 
58
- // validate the form on submit
59
- this.submit( function( event ) {
60
  if ( validator.settings.debug ) {
61
- // prevent form submit to be able to see console output
 
62
  event.preventDefault();
63
  }
64
  function handle() {
65
- var hidden;
66
  if ( validator.settings.submitHandler ) {
67
  if ( validator.submitButton ) {
68
- // insert a hidden input as a replacement for the missing submit button
 
69
  hidden = $( "<input type='hidden'/>" )
70
  .attr( "name", validator.submitButton.name )
71
  .val( $( validator.submitButton ).val() )
72
  .appendTo( validator.currentForm );
73
  }
74
- validator.settings.submitHandler.call( validator, validator.currentForm, event );
75
  if ( validator.submitButton ) {
76
- // and clean up afterwards; thanks to no-block-scope, hidden can be referenced
 
77
  hidden.remove();
78
  }
 
 
 
79
  return false;
80
  }
81
  return true;
82
  }
83
 
84
- // prevent submit for invalid forms or custom submit handlers
85
  if ( validator.cancelSubmit ) {
86
  validator.cancelSubmit = false;
87
  return handle();
@@ -96,38 +106,41 @@ $.extend($.fn, {
96
  validator.focusInvalid();
97
  return false;
98
  }
99
- });
100
  }
101
 
102
  return validator;
103
  },
 
104
  // http://jqueryvalidation.org/valid/
105
  valid: function() {
106
- var valid, validator;
107
 
108
  if ( $( this[ 0 ] ).is( "form" ) ) {
109
  valid = this.validate().form();
110
  } else {
 
111
  valid = true;
112
  validator = $( this[ 0 ].form ).validate();
113
  this.each( function() {
114
  valid = validator.element( this ) && valid;
115
- });
 
 
 
 
116
  }
117
  return valid;
118
  },
119
- // attributes: space separated list of attributes to retrieve and remove
120
- removeAttrs: function( attributes ) {
121
- var result = {},
122
- $element = this;
123
- $.each( attributes.split( /\s/ ), function( index, value ) {
124
- result[ value ] = $element.attr( value );
125
- $element.removeAttr( value );
126
- });
127
- return result;
128
- },
129
  // http://jqueryvalidation.org/rules/
130
  rules: function( command, argument ) {
 
 
 
 
 
 
131
  var element = this[ 0 ],
132
  settings, staticRules, existingRules, data, param, filtered;
133
 
@@ -138,7 +151,8 @@ $.extend($.fn, {
138
  switch ( command ) {
139
  case "add":
140
  $.extend( existingRules, $.validator.normalizeRule( argument ) );
141
- // remove messages from rules, but allow them to be set separately
 
142
  delete existingRules.messages;
143
  staticRules[ element.name ] = existingRules;
144
  if ( argument.messages ) {
@@ -157,7 +171,7 @@ $.extend($.fn, {
157
  if ( method === "required" ) {
158
  $( element ).removeAttr( "aria-required" );
159
  }
160
- });
161
  return filtered;
162
  }
163
  }
@@ -171,7 +185,7 @@ $.extend($.fn, {
171
  $.validator.staticRules( element )
172
  ), element );
173
 
174
- // make sure required is at front
175
  if ( data.required ) {
176
  param = data.required;
177
  delete data.required;
@@ -179,34 +193,38 @@ $.extend($.fn, {
179
  $( element ).attr( "aria-required", "true" );
180
  }
181
 
182
- // make sure remote is at back
183
  if ( data.remote ) {
184
  param = data.remote;
185
  delete data.remote;
186
- data = $.extend( data, { remote: param });
187
  }
188
 
189
  return data;
190
  }
191
- });
192
 
193
  // Custom selectors
194
  $.extend( $.expr[ ":" ], {
 
195
  // http://jqueryvalidation.org/blank-selector/
196
  blank: function( a ) {
197
  return !$.trim( "" + $( a ).val() );
198
  },
 
199
  // http://jqueryvalidation.org/filled-selector/
200
  filled: function( a ) {
201
- return !!$.trim( "" + $( a ).val() );
 
202
  },
 
203
  // http://jqueryvalidation.org/unchecked-selector/
204
  unchecked: function( a ) {
205
  return !$( a ).prop( "checked" );
206
  }
207
- });
208
 
209
- // constructor for validator
210
  $.validator = function( options, form ) {
211
  this.settings = $.extend( true, {}, $.validator.defaults, options );
212
  this.currentForm = form;
@@ -222,6 +240,9 @@ $.validator.format = function( source, params ) {
222
  return $.validator.format.apply( this, args );
223
  };
224
  }
 
 
 
225
  if ( arguments.length > 2 && params.constructor !== Array ) {
226
  params = $.makeArray( arguments ).slice( 1 );
227
  }
@@ -231,8 +252,8 @@ $.validator.format = function( source, params ) {
231
  $.each( params, function( i, n ) {
232
  source = source.replace( new RegExp( "\\{" + i + "\\}", "g" ), function() {
233
  return n;
234
- });
235
- });
236
  return source;
237
  };
238
 
@@ -243,8 +264,10 @@ $.extend( $.validator, {
243
  groups: {},
244
  rules: {},
245
  errorClass: "error",
 
246
  validClass: "valid",
247
  errorElement: "label",
 
248
  focusInvalid: true,
249
  errorContainer: $( [] ),
250
  errorLabelContainer: $( [] ),
@@ -254,8 +277,8 @@ $.extend( $.validator, {
254
  onfocusin: function( element ) {
255
  this.lastActive = element;
256
 
257
- // hide error label and remove error class on focus if enabled
258
- if ( this.settings.focusCleanup && !this.blockFocusCleanup ) {
259
  if ( this.settings.unhighlight ) {
260
  this.settings.unhighlight.call( this, element, this.settings.errorClass, this.settings.validClass );
261
  }
@@ -268,18 +291,39 @@ $.extend( $.validator, {
268
  }
269
  },
270
  onkeyup: function( element, event ) {
271
- if ( event.which === 9 && this.elementValue( element ) === "" ) {
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
272
  return;
273
- } else if ( element.name in this.submitted || element === this.lastElement ) {
274
  this.element( element );
275
  }
276
  },
277
  onclick: function( element ) {
278
- // click on selects, radiobuttons and checkboxes
 
279
  if ( element.name in this.submitted ) {
280
  this.element( element );
281
 
282
- // or option elements, check parent select in that case
283
  } else if ( element.parentNode.name in this.submitted ) {
284
  this.element( element.parentNode );
285
  }
@@ -314,14 +358,14 @@ $.extend( $.validator, {
314
  dateISO: "Please enter a valid date ( ISO ).",
315
  number: "Please enter a valid number.",
316
  digits: "Please enter only digits.",
317
- creditcard: "Please enter a valid credit card number.",
318
  equalTo: "Please enter the same value again.",
319
  maxlength: $.validator.format( "Please enter no more than {0} characters." ),
320
  minlength: $.validator.format( "Please enter at least {0} characters." ),
321
  rangelength: $.validator.format( "Please enter a value between {0} and {1} characters long." ),
322
  range: $.validator.format( "Please enter a value between {0} and {1}." ),
323
  max: $.validator.format( "Please enter a value less than or equal to {0}." ),
324
- min: $.validator.format( "Please enter a value greater than or equal to {0}." )
 
325
  },
326
 
327
  autoCreateRanges: false,
@@ -347,34 +391,35 @@ $.extend( $.validator, {
347
  }
348
  $.each( value, function( index, name ) {
349
  groups[ name ] = key;
350
- });
351
- });
352
  rules = this.settings.rules;
353
  $.each( rules, function( key, value ) {
354
  rules[ key ] = $.validator.normalizeRule( value );
355
- });
356
 
357
  function delegate( event ) {
358
- var validator = $.data( this[ 0 ].form, "validator" ),
359
  eventType = "on" + event.type.replace( /^validate/, "" ),
360
  settings = validator.settings;
361
- if ( settings[ eventType ] && !this.is( settings.ignore ) ) {
362
- settings[ eventType ].call( validator, this[ 0 ], event );
363
  }
364
  }
 
365
  $( this.currentForm )
366
- .validateDelegate( ":text, [type='password'], [type='file'], select, textarea, " +
367
- "[type='number'], [type='search'] ,[type='tel'], [type='url'], " +
368
- "[type='email'], [type='datetime'], [type='date'], [type='month'], " +
369
- "[type='week'], [type='time'], [type='datetime-local'], " +
370
- "[type='range'], [type='color'], [type='radio'], [type='checkbox']",
371
- "focusin focusout keyup", delegate)
372
  // Support: Chrome, oldIE
373
  // "select" is provided as event.target when clicking a option
374
- .validateDelegate("select, option, [type='radio'], [type='checkbox']", "click", delegate);
375
 
376
  if ( this.settings.invalidHandler ) {
377
- $( this.currentForm ).bind( "invalid-form.validate", this.settings.invalidHandler );
378
  }
379
 
380
  // Add aria-required to any Static/Data/Class required fields before first validation
@@ -386,9 +431,9 @@ $.extend( $.validator, {
386
  form: function() {
387
  this.checkForm();
388
  $.extend( this.submitted, this.errorMap );
389
- this.invalid = $.extend({}, this.errorMap );
390
  if ( !this.valid() ) {
391
- $( this.currentForm ).triggerHandler( "invalid-form", [ this ]);
392
  }
393
  this.showErrors();
394
  return this.valid();
@@ -406,9 +451,9 @@ $.extend( $.validator, {
406
  element: function( element ) {
407
  var cleanElement = this.clean( element ),
408
  checkElement = this.validationTargetFor( cleanElement ),
409
- result = true;
410
-
411
- this.lastElement = checkElement;
412
 
413
  if ( checkElement === undefined ) {
414
  delete this.invalid[ cleanElement.name ];
@@ -416,40 +461,61 @@ $.extend( $.validator, {
416
  this.prepareElement( checkElement );
417
  this.currentElements = $( checkElement );
418
 
419
- result = this.check( checkElement ) !== false;
420
- if ( result ) {
421
- delete this.invalid[ checkElement.name ];
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
422
  } else {
423
  this.invalid[ checkElement.name ] = true;
424
  }
425
- }
426
- // Add aria-invalid status for screen readers
427
- $( element ).attr( "aria-invalid", !result );
428
 
429
- if ( !this.numberOfInvalids() ) {
430
- // Hide error containers on last error
431
- this.toHide = this.toHide.add( this.containers );
 
 
 
 
 
 
432
  }
433
- this.showErrors();
434
  return result;
435
  },
436
 
437
  // http://jqueryvalidation.org/Validator.showErrors/
438
  showErrors: function( errors ) {
439
  if ( errors ) {
440
- // add items to error list and map
 
 
441
  $.extend( this.errorMap, errors );
442
- this.errorList = [];
443
- for ( var name in errors ) {
444
- this.errorList.push({
445
- message: errors[ name ],
446
- element: this.findByName( name )[ 0 ]
447
- });
448
- }
449
- // remove items from success list
450
  this.successList = $.grep( this.successList, function( element ) {
451
  return !( element.name in errors );
452
- });
453
  }
454
  if ( this.settings.showErrors ) {
455
  this.settings.showErrors.call( this, this.errorMap, this.errorList );
@@ -463,14 +529,31 @@ $.extend( $.validator, {
463
  if ( $.fn.resetForm ) {
464
  $( this.currentForm ).resetForm();
465
  }
 
466
  this.submitted = {};
467
- this.lastElement = null;
468
  this.prepareForm();
469
  this.hideErrors();
470
- this.elements()
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
471
  .removeClass( this.settings.errorClass )
472
- .removeData( "previousValue" )
473
- .removeAttr( "aria-invalid" );
474
  },
475
 
476
  numberOfInvalids: function() {
@@ -482,7 +565,9 @@ $.extend( $.validator, {
482
  var count = 0,
483
  i;
484
  for ( i in obj ) {
485
- count++;
 
 
486
  }
487
  return count;
488
  },
@@ -507,13 +592,15 @@ $.extend( $.validator, {
507
  focusInvalid: function() {
508
  if ( this.settings.focusInvalid ) {
509
  try {
510
- $( this.findLastActive() || this.errorList.length && this.errorList[ 0 ].element || [])
511
  .filter( ":visible" )
512
  .focus()
513
- // manually trigger focusin event; without it, focusin handler isn't called, findLastActive won't have anything to find
 
514
  .trigger( "focusin" );
515
  } catch ( e ) {
516
- // ignore IE throwing errors when focusing hidden elements
 
517
  }
518
  }
519
  },
@@ -522,31 +609,37 @@ $.extend( $.validator, {
522
  var lastActive = this.lastActive;
523
  return lastActive && $.grep( this.errorList, function( n ) {
524
  return n.element.name === lastActive.name;
525
- }).length === 1 && lastActive;
526
  },
527
 
528
  elements: function() {
529
  var validator = this,
530
  rulesCache = {};
531
 
532
- // select all valid inputs inside the form (no submit or reset buttons)
533
  return $( this.currentForm )
534
- .find( "input, select, textarea" )
535
- .not( ":submit, :reset, :image, [disabled]" )
536
  .not( this.settings.ignore )
537
  .filter( function() {
538
- if ( !this.name && validator.settings.debug && window.console ) {
 
539
  console.error( "%o has no name assigned", this );
540
  }
541
 
542
- // select only the first element for each name, and only those with rules specified
543
- if ( this.name in rulesCache || !validator.objectLength( $( this ).rules() ) ) {
 
 
 
 
 
544
  return false;
545
  }
546
 
547
- rulesCache[ this.name ] = true;
548
  return true;
549
- });
550
  },
551
 
552
  clean: function( selector ) {
@@ -558,12 +651,16 @@ $.extend( $.validator, {
558
  return $( this.settings.errorElement + "." + errorClass, this.errorContext );
559
  },
560
 
561
- reset: function() {
562
  this.successList = [];
563
  this.errorList = [];
564
  this.errorMap = {};
565
  this.toShow = $( [] );
566
  this.toHide = $( [] );
 
 
 
 
567
  this.currentElements = $( [] );
568
  },
569
 
@@ -578,19 +675,48 @@ $.extend( $.validator, {
578
  },
579
 
580
  elementValue: function( element ) {
581
- var val,
582
- $element = $( element ),
583
- type = element.type;
584
 
585
  if ( type === "radio" || type === "checkbox" ) {
586
- return $( "input[name='" + element.name + "']:checked" ).val();
587
  } else if ( type === "number" && typeof element.validity !== "undefined" ) {
588
- return element.validity.badInput ? false : $element.val();
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
589
  }
590
 
591
- val = $element.val();
592
  if ( typeof val === "string" ) {
593
- return val.replace(/\r/g, "" );
594
  }
595
  return val;
596
  },
@@ -601,18 +727,33 @@ $.extend( $.validator, {
601
  var rules = $( element ).rules(),
602
  rulesCount = $.map( rules, function( n, i ) {
603
  return i;
604
- }).length,
605
  dependencyMismatch = false,
606
  val = this.elementValue( element ),
607
  result, method, rule;
608
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
609
  for ( method in rules ) {
610
  rule = { method: method, parameters: rules[ method ] };
611
  try {
612
-
613
  result = $.validator.methods[ method ].call( this, val, element, rule.parameters );
614
 
615
- // if a method indicates that the field is optional and therefore valid,
616
  // don't mark it as valid when there are no other rules
617
  if ( result === "dependency-mismatch" && rulesCount === 1 ) {
618
  dependencyMismatch = true;
@@ -633,6 +774,10 @@ $.extend( $.validator, {
633
  if ( this.settings.debug && window.console ) {
634
  console.log( "Exception occurred when checking element " + element.id + ", check the '" + rule.method + "' method.", e );
635
  }
 
 
 
 
636
  throw e;
637
  }
638
  }
@@ -645,7 +790,7 @@ $.extend( $.validator, {
645
  return true;
646
  },
647
 
648
- // return the custom message for the given element and validation method
649
  // specified in the element's HTML5 data attribute
650
  // return the generic message if present and no method specific message is present
651
  customDataMessage: function( element, method ) {
@@ -653,15 +798,15 @@ $.extend( $.validator, {
653
  method.substring( 1 ).toLowerCase() ) || $( element ).data( "msg" );
654
  },
655
 
656
- // return the custom message for the given element name and validation method
657
  customMessage: function( name, method ) {
658
  var m = this.settings.messages[ name ];
659
- return m && ( m.constructor === String ? m : m[ method ]);
660
  },
661
 
662
- // return the first defined argument, allowing empty strings
663
  findDefined: function() {
664
- for ( var i = 0; i < arguments.length; i++) {
665
  if ( arguments[ i ] !== undefined ) {
666
  return arguments[ i ];
667
  }
@@ -669,30 +814,34 @@ $.extend( $.validator, {
669
  return undefined;
670
  },
671
 
672
- defaultMessage: function( element, method ) {
673
- return this.findDefined(
674
- this.customMessage( element.name, method ),
675
- this.customDataMessage( element, method ),
676
- // title is never undefined, so handle empty string as undefined
677
- !this.settings.ignoreTitle && element.title || undefined,
678
- $.validator.messages[ method ],
679
- "<strong>Warning: No message defined for " + element.name + "</strong>"
680
- );
681
- },
682
 
683
- formatAndAdd: function( element, rule ) {
684
- var message = this.defaultMessage( element, rule.method ),
 
 
 
685
  theregex = /\$?\{(\d+)\}/g;
686
  if ( typeof message === "function" ) {
687
  message = message.call( this, rule.parameters, element );
688
  } else if ( theregex.test( message ) ) {
689
  message = $.validator.format( message.replace( theregex, "{$1}" ), rule.parameters );
690
  }
691
- this.errorList.push({
 
 
 
 
 
 
 
692
  message: message,
693
  element: element,
694
  method: rule.method
695
- });
696
 
697
  this.errorMap[ element.name ] = message;
698
  this.submitted[ element.name ] = message;
@@ -737,23 +886,27 @@ $.extend( $.validator, {
737
  },
738
 
739
  invalidElements: function() {
740
- return $( this.errorList ).map(function() {
741
  return this.element;
742
- });
743
  },
744
 
745
  showLabel: function( element, message ) {
746
- var place, group, errorID,
747
  error = this.errorsFor( element ),
748
  elementID = this.idOrName( element ),
749
  describedBy = $( element ).attr( "aria-describedby" );
 
750
  if ( error.length ) {
751
- // refresh error/success class
 
752
  error.removeClass( this.settings.validClass ).addClass( this.settings.errorClass );
753
- // replace message on existing label
 
754
  error.html( message );
755
  } else {
756
- // create error element
 
757
  error = $( "<" + this.settings.errorElement + ">" )
758
  .attr( "id", elementID + "-error" )
759
  .addClass( this.settings.errorClass )
@@ -762,7 +915,8 @@ $.extend( $.validator, {
762
  // Maintain reference to the element to be placed into the DOM
763
  place = error;
764
  if ( this.settings.wrapper ) {
765
- // make sure the element is visible, even in IE
 
766
  // actually showing the wrapped element is handled elsewhere
767
  place = error.hide().show().wrap( "<" + this.settings.wrapper + "/>" ).parent();
768
  }
@@ -776,17 +930,20 @@ $.extend( $.validator, {
776
 
777
  // Link error back to the element
778
  if ( error.is( "label" ) ) {
 
779
  // If the error is a label, then associate using 'for'
780
  error.attr( "for", elementID );
781
- } else if ( error.parents( "label[for='" + elementID + "']" ).length === 0 ) {
782
  // If the element is not a child of an associated label, then it's necessary
783
  // to explicitly apply aria-describedby
784
-
785
  errorID = error.attr( "id" );
 
786
  // Respect existing non-error aria-describedby
787
  if ( !describedBy ) {
788
  describedBy = errorID;
789
- } else if ( !describedBy.match( new RegExp( "\b" + errorID + "\b" ) ) ) {
 
790
  // Add to end of list if not already present
791
  describedBy += " " + errorID;
792
  }
@@ -795,12 +952,13 @@ $.extend( $.validator, {
795
  // If this element is grouped, then assign to all elements in the same group
796
  group = this.groups[ element.name ];
797
  if ( group ) {
798
- $.each( this.groups, function( name, testgroup ) {
 
799
  if ( testgroup === group ) {
800
- $( "[name='" + name + "']", this.currentForm )
801
  .attr( "aria-describedby", error.attr( "id" ) );
802
  }
803
- });
804
  }
805
  }
806
  }
@@ -816,28 +974,41 @@ $.extend( $.validator, {
816
  },
817
 
818
  errorsFor: function( element ) {
819
- var name = this.idOrName( element ),
820
  describer = $( element ).attr( "aria-describedby" ),
821
  selector = "label[for='" + name + "'], label[for='" + name + "'] *";
822
- // aria-describedby should directly reference the error element
 
823
  if ( describer ) {
824
- selector = selector + ", #" + describer.replace( /\s+/g, ", #" );
 
825
  }
 
826
  return this
827
  .errors()
828
  .filter( selector );
829
  },
830
 
 
 
 
 
 
 
 
831
  idOrName: function( element ) {
832
  return this.groups[ element.name ] || ( this.checkable( element ) ? element.name : element.id || element.name );
833
  },
834
 
835
  validationTargetFor: function( element ) {
836
- // if radio/checkbox, validate first element in group instead
 
837
  if ( this.checkable( element ) ) {
838
- element = this.findByName( element.name ).not( this.settings.ignore )[ 0 ];
839
  }
840
- return element;
 
 
841
  },
842
 
843
  checkable: function( element ) {
@@ -845,7 +1016,7 @@ $.extend( $.validator, {
845
  },
846
 
847
  findByName: function( name ) {
848
- return $( this.currentForm ).find( "[name='" + name + "']" );
849
  },
850
 
851
  getLength: function( value, element ) {
@@ -861,7 +1032,7 @@ $.extend( $.validator, {
861
  },
862
 
863
  depend: function( param, element ) {
864
- return this.dependTypes[typeof param] ? this.dependTypes[typeof param]( param, element ) : true;
865
  },
866
 
867
  dependTypes: {
@@ -884,32 +1055,47 @@ $.extend( $.validator, {
884
  startRequest: function( element ) {
885
  if ( !this.pending[ element.name ] ) {
886
  this.pendingRequest++;
 
887
  this.pending[ element.name ] = true;
888
  }
889
  },
890
 
891
  stopRequest: function( element, valid ) {
892
  this.pendingRequest--;
893
- // sometimes synchronization fails, make sure pendingRequest is never < 0
 
894
  if ( this.pendingRequest < 0 ) {
895
  this.pendingRequest = 0;
896
  }
897
  delete this.pending[ element.name ];
 
898
  if ( valid && this.pendingRequest === 0 && this.formSubmitted && this.form() ) {
899
  $( this.currentForm ).submit();
900
  this.formSubmitted = false;
901
- } else if (!valid && this.pendingRequest === 0 && this.formSubmitted ) {
902
- $( this.currentForm ).triggerHandler( "invalid-form", [ this ]);
903
  this.formSubmitted = false;
904
  }
905
  },
906
 
907
- previousValue: function( element ) {
908
  return $.data( element, "previousValue" ) || $.data( element, "previousValue", {
909
  old: null,
910
  valid: true,
911
- message: this.defaultMessage( element, "remote" )
912
- });
 
 
 
 
 
 
 
 
 
 
 
 
913
  }
914
 
915
  },
@@ -940,13 +1126,36 @@ $.extend( $.validator, {
940
  if ( classes ) {
941
  $.each( classes.split( " " ), function() {
942
  if ( this in $.validator.classRuleSettings ) {
943
- $.extend( rules, $.validator.classRuleSettings[ this ]);
944
  }
945
- });
946
  }
947
  return rules;
948
  },
949
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
950
  attributeRules: function( element ) {
951
  var rules = {},
952
  $element = $( element ),
@@ -955,36 +1164,26 @@ $.extend( $.validator, {
955
 
956
  for ( method in $.validator.methods ) {
957
 
958
- // support for <input required> in both html5 and older browsers
959
  if ( method === "required" ) {
960
  value = element.getAttribute( method );
 
961
  // Some browsers return an empty string for the required attribute
962
  // and non-HTML5 browsers might have required="" markup
963
  if ( value === "" ) {
964
  value = true;
965
  }
966
- // force non-HTML5 browsers to return bool
 
967
  value = !!value;
968
  } else {
969
  value = $element.attr( method );
970
  }
971
 
972
- // convert the value to a number for number inputs, and for text for backwards compability
973
- // allows type="date" and others to be compared as strings
974
- if ( /min|max/.test( method ) && ( type === null || /number|range|text/.test( type ) ) ) {
975
- value = Number( value );
976
- }
977
-
978
- if ( value || value === 0 ) {
979
- rules[ method ] = value;
980
- } else if ( type === method && type !== "range" ) {
981
- // exception: the jquery validate 'range' method
982
- // does not test for the html5 'range' type
983
- rules[ method ] = true;
984
- }
985
  }
986
 
987
- // maxlength may be returned as -1, 2147483647 ( IE ) and 524288 ( safari ) for text inputs
988
  if ( rules.maxlength && /-1|2147483647|524288/.test( rules.maxlength ) ) {
989
  delete rules.maxlength;
990
  }
@@ -993,13 +1192,14 @@ $.extend( $.validator, {
993
  },
994
 
995
  dataRules: function( element ) {
996
- var method, value,
997
- rules = {}, $element = $( element );
 
 
 
998
  for ( method in $.validator.methods ) {
999
  value = $element.data( "rule" + method.charAt( 0 ).toUpperCase() + method.substring( 1 ).toLowerCase() );
1000
- if ( value !== undefined ) {
1001
- rules[ method ] = value;
1002
- }
1003
  }
1004
  return rules;
1005
  },
@@ -1015,9 +1215,11 @@ $.extend( $.validator, {
1015
  },
1016
 
1017
  normalizeRules: function( rules, element ) {
1018
- // handle dependency check
 
1019
  $.each( rules, function( prop, val ) {
1020
- // ignore rule when param is explicitly false, eg. required:false
 
1021
  if ( val === false ) {
1022
  delete rules[ prop ];
1023
  return;
@@ -1035,42 +1237,44 @@ $.extend( $.validator, {
1035
  if ( keepRule ) {
1036
  rules[ prop ] = val.param !== undefined ? val.param : true;
1037
  } else {
 
1038
  delete rules[ prop ];
1039
  }
1040
  }
1041
- });
1042
 
1043
- // evaluate parameters
1044
  $.each( rules, function( rule, parameter ) {
1045
- rules[ rule ] = $.isFunction( parameter ) ? parameter( element ) : parameter;
1046
- });
1047
 
1048
- // clean number parameters
1049
- $.each([ "minlength", "maxlength" ], function() {
1050
  if ( rules[ this ] ) {
1051
  rules[ this ] = Number( rules[ this ] );
1052
  }
1053
- });
1054
- $.each([ "rangelength", "range" ], function() {
1055
  var parts;
1056
  if ( rules[ this ] ) {
1057
  if ( $.isArray( rules[ this ] ) ) {
1058
- rules[ this ] = [ Number( rules[ this ][ 0 ]), Number( rules[ this ][ 1 ] ) ];
1059
  } else if ( typeof rules[ this ] === "string" ) {
1060
- parts = rules[ this ].replace(/[\[\]]/g, "" ).split( /[\s,]+/ );
1061
- rules[ this ] = [ Number( parts[ 0 ]), Number( parts[ 1 ] ) ];
1062
  }
1063
  }
1064
- });
1065
 
1066
  if ( $.validator.autoCreateRanges ) {
1067
- // auto-create ranges
1068
- if ( rules.min && rules.max ) {
 
1069
  rules.range = [ rules.min, rules.max ];
1070
  delete rules.min;
1071
  delete rules.max;
1072
  }
1073
- if ( rules.minlength && rules.maxlength ) {
1074
  rules.rangelength = [ rules.minlength, rules.maxlength ];
1075
  delete rules.minlength;
1076
  delete rules.maxlength;
@@ -1086,7 +1290,7 @@ $.extend( $.validator, {
1086
  var transformed = {};
1087
  $.each( data.split( /\s/ ), function() {
1088
  transformed[ this ] = true;
1089
- });
1090
  data = transformed;
1091
  }
1092
  return data;
@@ -1101,28 +1305,32 @@ $.extend( $.validator, {
1101
  }
1102
  },
1103
 
 
1104
  methods: {
1105
 
1106
  // http://jqueryvalidation.org/required-method/
1107
  required: function( value, element, param ) {
1108
- // check if dependency is met
 
1109
  if ( !this.depend( param, element ) ) {
1110
  return "dependency-mismatch";
1111
  }
1112
  if ( element.nodeName.toLowerCase() === "select" ) {
1113
- // could be an array for select-multiple or a string, both are fine this way
 
1114
  var val = $( element ).val();
1115
  return val && val.length > 0;
1116
  }
1117
  if ( this.checkable( element ) ) {
1118
  return this.getLength( value, element ) > 0;
1119
  }
1120
- return $.trim( value ).length > 0;
1121
  },
1122
 
1123
  // http://jqueryvalidation.org/email-method/
1124
  email: function( value, element ) {
1125
- // From http://www.whatwg.org/specs/web-apps/current-work/multipage/states-of-the-type-attribute.html#e-mail-state-%28type=email%29
 
1126
  // Retrieved 2014-01-14
1127
  // If you have a problem with this implementation, report a bug against the above spec
1128
  // Or use custom methods to implement your own email validation
@@ -1131,8 +1339,12 @@ $.extend( $.validator, {
1131
 
1132
  // http://jqueryvalidation.org/url-method/
1133
  url: function( value, element ) {
1134
- // contributed by Scott Gonzalez: http://projects.scottsplayground.com/iri/
1135
- return this.optional( element ) || /^(https?|s?ftp):\/\/(((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:)*@)?(((\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5]))|((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?)(:\d*)?)(\/((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)+(\/(([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)*)*)?)?(\?((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|[\uE000-\uF8FF]|\/|\?)*)?(#((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|\/|\?)*)?$/i.test( value );
 
 
 
 
1136
  },
1137
 
1138
  // http://jqueryvalidation.org/date-method/
@@ -1147,7 +1359,7 @@ $.extend( $.validator, {
1147
 
1148
  // http://jqueryvalidation.org/number-method/
1149
  number: function( value, element ) {
1150
- return this.optional( element ) || /^-?(?:\d+|\d{1,3}(?:,\d{3})+)?(?:\.\d+)?$/.test( value );
1151
  },
1152
 
1153
  // http://jqueryvalidation.org/digits-method/
@@ -1155,59 +1367,21 @@ $.extend( $.validator, {
1155
  return this.optional( element ) || /^\d+$/.test( value );
1156
  },
1157
 
1158
- // http://jqueryvalidation.org/creditcard-method/
1159
- // based on http://en.wikipedia.org/wiki/Luhn/
1160
- creditcard: function( value, element ) {
1161
- if ( this.optional( element ) ) {
1162
- return "dependency-mismatch";
1163
- }
1164
- // accept only spaces, digits and dashes
1165
- if ( /[^0-9 \-]+/.test( value ) ) {
1166
- return false;
1167
- }
1168
- var nCheck = 0,
1169
- nDigit = 0,
1170
- bEven = false,
1171
- n, cDigit;
1172
-
1173
- value = value.replace( /\D/g, "" );
1174
-
1175
- // Basing min and max length on
1176
- // http://developer.ean.com/general_info/Valid_Credit_Card_Types
1177
- if ( value.length < 13 || value.length > 19 ) {
1178
- return false;
1179
- }
1180
-
1181
- for ( n = value.length - 1; n >= 0; n--) {
1182
- cDigit = value.charAt( n );
1183
- nDigit = parseInt( cDigit, 10 );
1184
- if ( bEven ) {
1185
- if ( ( nDigit *= 2 ) > 9 ) {
1186
- nDigit -= 9;
1187
- }
1188
- }
1189
- nCheck += nDigit;
1190
- bEven = !bEven;
1191
- }
1192
-
1193
- return ( nCheck % 10 ) === 0;
1194
- },
1195
-
1196
  // http://jqueryvalidation.org/minlength-method/
1197
  minlength: function( value, element, param ) {
1198
- var length = $.isArray( value ) ? value.length : this.getLength( $.trim( value ), element );
1199
  return this.optional( element ) || length >= param;
1200
  },
1201
 
1202
  // http://jqueryvalidation.org/maxlength-method/
1203
  maxlength: function( value, element, param ) {
1204
- var length = $.isArray( value ) ? value.length : this.getLength( $.trim( value ), element );
1205
  return this.optional( element ) || length <= param;
1206
  },
1207
 
1208
  // http://jqueryvalidation.org/rangelength-method/
1209
  rangelength: function( value, element, param ) {
1210
- var length = $.isArray( value ) ? value.length : this.getLength( $.trim( value ), element );
1211
  return this.optional( element ) || ( length >= param[ 0 ] && length <= param[ 1 ] );
1212
  },
1213
 
@@ -1226,47 +1400,64 @@ $.extend( $.validator, {
1226
  return this.optional( element ) || ( value >= param[ 0 ] && value <= param[ 1 ] );
1227
  },
1228
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1229
  // http://jqueryvalidation.org/equalTo-method/
1230
  equalTo: function( value, element, param ) {
1231
- // bind to the blur event of the target in order to revalidate whenever the target field is updated
1232
- // TODO find a way to bind the event just once, avoiding the unbind-rebind overhead
1233
  var target = $( param );
1234
- if ( this.settings.onfocusout ) {
1235
- target.unbind( ".validate-equalTo" ).bind( "blur.validate-equalTo", function() {
1236
  $( element ).valid();
1237
- });
1238
  }
1239
  return value === target.val();
1240
  },
1241
 
1242
  // http://jqueryvalidation.org/remote-method/
1243
- remote: function( value, element, param ) {
1244
  if ( this.optional( element ) ) {
1245
  return "dependency-mismatch";
1246
  }
1247
 
1248
- var previous = this.previousValue( element ),
1249
- validator, data;
 
 
1250
 
1251
- if (!this.settings.messages[ element.name ] ) {
1252
  this.settings.messages[ element.name ] = {};
1253
  }
1254
- previous.originalMessage = this.settings.messages[ element.name ].remote;
1255
- this.settings.messages[ element.name ].remote = previous.message;
1256
 
1257
  param = typeof param === "string" && { url: param } || param;
1258
-
1259
- if ( previous.old === value ) {
1260
  return previous.valid;
1261
  }
1262
 
1263
- previous.old = value;
1264
  validator = this;
1265
  this.startRequest( element );
1266
  data = {};
1267
  data[ element.name ] = value;
1268
  $.ajax( $.extend( true, {
1269
- url: param,
1270
  mode: "abort",
1271
  port: "validate" + element.name,
1272
  dataType: "json",
@@ -1276,18 +1467,19 @@ $.extend( $.validator, {
1276
  var valid = response === true || response === "true",
1277
  errors, message, submitted;
1278
 
1279
- validator.settings.messages[ element.name ].remote = previous.originalMessage;
1280
  if ( valid ) {
1281
  submitted = validator.formSubmitted;
1282
- validator.prepareElement( element );
 
1283
  validator.formSubmitted = submitted;
1284
  validator.successList.push( element );
1285
- delete validator.invalid[ element.name ];
1286
  validator.showErrors();
1287
  } else {
1288
  errors = {};
1289
- message = response || validator.defaultMessage( element, "remote" );
1290
- errors[ element.name ] = previous.message = $.isFunction( message ) ? message( value ) : message;
1291
  validator.invalid[ element.name ] = true;
1292
  validator.showErrors( errors );
1293
  }
@@ -1297,61 +1489,44 @@ $.extend( $.validator, {
1297
  }, param ) );
1298
  return "pending";
1299
  }
1300
-
1301
  }
1302
 
1303
- });
1304
-
1305
- $.format = function deprecated() {
1306
- throw "$.format has been deprecated. Please use $.validator.format instead.";
1307
- };
1308
-
1309
- // ajax mode: abort
1310
  // usage: $.ajax({ mode: "abort"[, port: "uniqueport"]});
1311
  // if mode:"abort" is used, the previous request on that port (port can be undefined) is aborted via XMLHttpRequest.abort()
1312
 
1313
  var pendingRequests = {},
1314
  ajax;
 
1315
  // Use a prefilter if available (1.5+)
1316
  if ( $.ajaxPrefilter ) {
1317
- $.ajaxPrefilter(function( settings, _, xhr ) {
1318
  var port = settings.port;
1319
  if ( settings.mode === "abort" ) {
1320
- if ( pendingRequests[port] ) {
1321
- pendingRequests[port].abort();
1322
  }
1323
- pendingRequests[port] = xhr;
1324
  }
1325
- });
1326
  } else {
 
1327
  // Proxy ajax
1328
  ajax = $.ajax;
1329
  $.ajax = function( settings ) {
1330
  var mode = ( "mode" in settings ? settings : $.ajaxSettings ).mode,
1331
  port = ( "port" in settings ? settings : $.ajaxSettings ).port;
1332
  if ( mode === "abort" ) {
1333
- if ( pendingRequests[port] ) {
1334
- pendingRequests[port].abort();
1335
  }
1336
- pendingRequests[port] = ajax.apply(this, arguments);
1337
- return pendingRequests[port];
1338
  }
1339
- return ajax.apply(this, arguments);
1340
  };
1341
  }
1342
-
1343
- // provides delegate(type: String, delegate: Selector, handler: Callback) plugin for easier event delegation
1344
- // handler is only called when $(event.target).is(delegate), in the scope of the jquery-object for event.target
1345
-
1346
- $.extend($.fn, {
1347
- validateDelegate: function( delegate, type, handler ) {
1348
- return this.bind(type, function( event ) {
1349
- var target = $(event.target);
1350
- if ( target.is(delegate) ) {
1351
- return handler.apply(target, arguments);
1352
- }
1353
- });
1354
- }
1355
- });
1356
-
1357
  }));
1
+ /*!
2
+ * jQuery Validation Plugin v1.15.0
3
+ *
4
+ * http://jqueryvalidation.org/
5
+ *
6
+ * Copyright (c) 2016 Jörn Zaefferer
7
+ * Released under the MIT license
8
+ */
9
+ (function( factory ) {
10
+ if ( typeof define === "function" && define.amd ) {
11
+ define( ["jquery"], factory );
12
+ } else if (typeof module === "object" && module.exports) {
13
+ module.exports = factory( require( "jquery" ) );
14
+ } else {
15
+ factory( jQuery );
16
+ }
17
+ }(function( $ ) {
18
+
19
+ $.extend( $.fn, {
20
 
 
21
  // http://jqueryvalidation.org/validate/
22
  validate: function( options ) {
23
 
24
+ // If nothing is selected, return nothing; can't chain anyway
25
  if ( !this.length ) {
26
  if ( options && options.debug && window.console ) {
27
  console.warn( "Nothing selected, can't validate, returning nothing." );
29
  return;
30
  }
31
 
32
+ // Check if a validator for this form was already created
33
  var validator = $.data( this[ 0 ], "validator" );
34
  if ( validator ) {
35
  return validator;
43
 
44
  if ( validator.settings.onsubmit ) {
45
 
46
+ this.on( "click.validate", ":submit", function( event ) {
47
  if ( validator.settings.submitHandler ) {
48
  validator.submitButton = event.target;
49
  }
50
+
51
+ // Allow suppressing validation by adding a cancel class to the submit button
52
+ if ( $( this ).hasClass( "cancel" ) ) {
53
  validator.cancelSubmit = true;
54
  }
55
 
56
+ // Allow suppressing validation by adding the html5 formnovalidate attribute to the submit button
57
+ if ( $( this ).attr( "formnovalidate" ) !== undefined ) {
58
  validator.cancelSubmit = true;
59
  }
60
+ } );
61
 
62
+ // Validate the form on submit
63
+ this.on( "submit.validate", function( event ) {
64
  if ( validator.settings.debug ) {
65
+
66
+ // Prevent form submit to be able to see console output
67
  event.preventDefault();
68
  }
69
  function handle() {
70
+ var hidden, result;
71
  if ( validator.settings.submitHandler ) {
72
  if ( validator.submitButton ) {
73
+
74
+ // Insert a hidden input as a replacement for the missing submit button
75
  hidden = $( "<input type='hidden'/>" )
76
  .attr( "name", validator.submitButton.name )
77
  .val( $( validator.submitButton ).val() )
78
  .appendTo( validator.currentForm );
79
  }
80
+ result = validator.settings.submitHandler.call( validator, validator.currentForm, event );
81
  if ( validator.submitButton ) {
82
+
83
+ // And clean up afterwards; thanks to no-block-scope, hidden can be referenced
84
  hidden.remove();
85
  }
86
+ if ( result !== undefined ) {
87
+ return result;
88
+ }
89
  return false;
90
  }
91
  return true;
92
  }
93
 
94
+ // Prevent submit for invalid forms or custom submit handlers
95
  if ( validator.cancelSubmit ) {
96
  validator.cancelSubmit = false;
97
  return handle();
106
  validator.focusInvalid();
107
  return false;
108
  }
109
+ } );
110
  }
111
 
112
  return validator;
113
  },
114
+
115
  // http://jqueryvalidation.org/valid/
116
  valid: function() {
117
+ var valid, validator, errorList;
118
 
119
  if ( $( this[ 0 ] ).is( "form" ) ) {
120
  valid = this.validate().form();
121
  } else {
122
+ errorList = [];
123
  valid = true;
124
  validator = $( this[ 0 ].form ).validate();
125
  this.each( function() {
126
  valid = validator.element( this ) && valid;
127
+ if ( !valid ) {
128
+ errorList = errorList.concat( validator.errorList );
129
+ }
130
+ } );
131
+ validator.errorList = errorList;
132
  }
133
  return valid;
134
  },
135
+
 
 
 
 
 
 
 
 
 
136
  // http://jqueryvalidation.org/rules/
137
  rules: function( command, argument ) {
138
+
139
+ // If nothing is selected, return nothing; can't chain anyway
140
+ if ( !this.length ) {
141
+ return;
142
+ }
143
+
144
  var element = this[ 0 ],
145
  settings, staticRules, existingRules, data, param, filtered;
146
 
151
  switch ( command ) {
152
  case "add":
153
  $.extend( existingRules, $.validator.normalizeRule( argument ) );
154
+
155
+ // Remove messages from rules, but allow them to be set separately
156
  delete existingRules.messages;
157
  staticRules[ element.name ] = existingRules;
158
  if ( argument.messages ) {
171
  if ( method === "required" ) {
172
  $( element ).removeAttr( "aria-required" );
173
  }
174
+ } );
175
  return filtered;
176
  }
177
  }
185
  $.validator.staticRules( element )
186
  ), element );
187
 
188
+ // Make sure required is at front
189
  if ( data.required ) {
190
  param = data.required;
191
  delete data.required;
193
  $( element ).attr( "aria-required", "true" );
194
  }
195
 
196
+ // Make sure remote is at back
197
  if ( data.remote ) {
198
  param = data.remote;
199
  delete data.remote;
200
+ data = $.extend( data, { remote: param } );
201
  }
202
 
203
  return data;
204
  }
205
+ } );
206
 
207
  // Custom selectors
208
  $.extend( $.expr[ ":" ], {
209
+
210
  // http://jqueryvalidation.org/blank-selector/
211
  blank: function( a ) {
212
  return !$.trim( "" + $( a ).val() );
213
  },
214
+
215
  // http://jqueryvalidation.org/filled-selector/
216
  filled: function( a ) {
217
+ var val = $( a ).val();
218
+ return val !== null && !!$.trim( "" + val );
219
  },
220
+
221
  // http://jqueryvalidation.org/unchecked-selector/
222
  unchecked: function( a ) {
223
  return !$( a ).prop( "checked" );
224
  }
225
+ } );
226
 
227
+ // Constructor for validator
228
  $.validator = function( options, form ) {
229
  this.settings = $.extend( true, {}, $.validator.defaults, options );
230
  this.currentForm = form;
240
  return $.validator.format.apply( this, args );
241
  };
242
  }
243
+ if ( params === undefined ) {
244
+ return source;
245
+ }
246
  if ( arguments.length > 2 && params.constructor !== Array ) {
247
  params = $.makeArray( arguments ).slice( 1 );
248
  }
252
  $.each( params, function( i, n ) {
253
  source = source.replace( new RegExp( "\\{" + i + "\\}", "g" ), function() {
254
  return n;
255
+ } );
256
+ } );
257
  return source;
258
  };
259
 
264
  groups: {},
265
  rules: {},
266
  errorClass: "error",
267
+ pendingClass: "pending",
268
  validClass: "valid",
269
  errorElement: "label",
270
+ focusCleanup: false,
271
  focusInvalid: true,
272
  errorContainer: $( [] ),
273
  errorLabelContainer: $( [] ),
277
  onfocusin: function( element ) {
278
  this.lastActive = element;
279
 
280
+ // Hide error label and remove error class on focus if enabled
281
+ if ( this.settings.focusCleanup ) {
282
  if ( this.settings.unhighlight ) {
283
  this.settings.unhighlight.call( this, element, this.settings.errorClass, this.settings.validClass );
284
  }
291
  }
292
  },
293
  onkeyup: function( element, event ) {
294
+
295
+ // Avoid revalidate the field when pressing one of the following keys
296
+ // Shift => 16
297
+ // Ctrl => 17
298
+ // Alt => 18
299
+ // Caps lock => 20
300
+ // End => 35
301
+ // Home => 36
302
+ // Left arrow => 37
303
+ // Up arrow => 38
304
+ // Right arrow => 39
305
+ // Down arrow => 40
306
+ // Insert => 45
307
+ // Num lock => 144
308
+ // AltGr key => 225
309
+ var excludedKeys = [
310
+ 16, 17, 18, 20, 35, 36, 37,
311
+ 38, 39, 40, 45, 144, 225
312
+ ];
313
+
314
+ if ( event.which === 9 && this.elementValue( element ) === "" || $.inArray( event.keyCode, excludedKeys ) !== -1 ) {
315
  return;
316
+ } else if ( element.name in this.submitted || element.name in this.invalid ) {
317
  this.element( element );
318
  }
319
  },
320
  onclick: function( element ) {
321
+
322
+ // Click on selects, radiobuttons and checkboxes
323
  if ( element.name in this.submitted ) {
324
  this.element( element );
325
 
326
+ // Or option elements, check parent select in that case
327
  } else if ( element.parentNode.name in this.submitted ) {
328
  this.element( element.parentNode );
329
  }
358
  dateISO: "Please enter a valid date ( ISO ).",
359
  number: "Please enter a valid number.",
360
  digits: "Please enter only digits.",
 
361
  equalTo: "Please enter the same value again.",
362
  maxlength: $.validator.format( "Please enter no more than {0} characters." ),
363
  minlength: $.validator.format( "Please enter at least {0} characters." ),
364
  rangelength: $.validator.format( "Please enter a value between {0} and {1} characters long." ),
365
  range: $.validator.format( "Please enter a value between {0} and {1}." ),
366
  max: $.validator.format( "Please enter a value less than or equal to {0}." ),
367
+ min: $.validator.format( "Please enter a value greater than or equal to {0}." ),
368
+ step: $.validator.format( "Please enter a multiple of {0}." )
369
  },
370
 
371
  autoCreateRanges: false,
391
  }
392
  $.each( value, function( index, name ) {
393
  groups[ name ] = key;
394
+ } );
395
+ } );
396
  rules = this.settings.rules;
397
  $.each( rules, function( key, value ) {
398
  rules[ key ] = $.validator.normalizeRule( value );
399
+ } );
400
 
401
  function delegate( event ) {
402
+ var validator = $.data( this.form, "validator" ),
403
  eventType = "on" + event.type.replace( /^validate/, "" ),
404
  settings = validator.settings;
405
+ if ( settings[ eventType ] && !$( this ).is( settings.ignore ) ) {
406
+ settings[ eventType ].call( validator, this, event );
407
  }
408
  }
409
+
410
  $( this.currentForm )
411
+ .on( "focusin.validate focusout.validate keyup.validate",
412
+ ":text, [type='password'], [type='file'], select, textarea, [type='number'], [type='search'], " +
413
+ "[type='tel'], [type='url'], [type='email'], [type='datetime'], [type='date'], [type='month'], " +
414
+ "[type='week'], [type='time'], [type='datetime-local'], [type='range'], [type='color'], " +
415
+ "[type='radio'], [type='checkbox'], [contenteditable]", delegate )
416
+
417
  // Support: Chrome, oldIE
418
  // "select" is provided as event.target when clicking a option
419
+ .on( "click.validate", "select, option, [type='radio'], [type='checkbox']", delegate );
420
 
421
  if ( this.settings.invalidHandler ) {
422
+ $( this.currentForm ).on( "invalid-form.validate", this.settings.invalidHandler );
423
  }
424
 
425
  // Add aria-required to any Static/Data/Class required fields before first validation
431
  form: function() {
432
  this.checkForm();
433
  $.extend( this.submitted, this.errorMap );
434
+ this.invalid = $.extend( {}, this.errorMap );
435
  if ( !this.valid() ) {
436
+ $( this.currentForm ).triggerHandler( "invalid-form", [ this ] );
437
  }
438
  this.showErrors();
439
  return this.valid();
451
  element: function( element ) {
452
  var cleanElement = this.clean( element ),
453
  checkElement = this.validationTargetFor( cleanElement ),
454
+ v = this,
455
+ result = true,
456
+ rs, group;
457
 
458
  if ( checkElement === undefined ) {
459
  delete this.invalid[ cleanElement.name ];
461
  this.prepareElement( checkElement );
462
  this.currentElements = $( checkElement );
463
 
464
+ // If this element is grouped, then validate all group elements already
465
+ // containing a value
466
+ group = this.groups[ checkElement.name ];
467
+ if ( group ) {
468
+ $.each( this.groups, function( name, testgroup ) {
469
+ if ( testgroup === group && name !== checkElement.name ) {
470
+ cleanElement = v.validationTargetFor( v.clean( v.findByName( name ) ) );
471
+ if ( cleanElement && cleanElement.name in v.invalid ) {
472
+ v.currentElements.push( cleanElement );
473
+ result = result && v.check( cleanElement );
474
+ }
475
+ }
476
+ } );
477
+ }
478
+
479
+ rs = this.check( checkElement ) !== false;
480
+ result = result && rs;
481
+ if ( rs ) {
482
+ this.invalid[ checkElement.name ] = false;
483
  } else {
484
  this.invalid[ checkElement.name ] = true;
485
  }
 
 
 
486
 
487
+ if ( !this.numberOfInvalids() ) {
488
+
489
+ // Hide error containers on last error
490
+ this.toHide = this.toHide.add( this.containers );
491
+ }
492
+ this.showErrors();
493
+
494
+ // Add aria-invalid status for screen readers
495
+ $( element ).attr( "aria-invalid", !rs );
496
  }
497
+
498
  return result;
499
  },
500
 
501
  // http://jqueryvalidation.org/Validator.showErrors/
502
  showErrors: function( errors ) {
503
  if ( errors ) {
504
+ var validator = this;
505
+
506
+ // Add items to error list and map
507
  $.extend( this.errorMap, errors );
508
+ this.errorList = $.map( this.errorMap, function( message, name ) {
509
+ return {
510
+ message: message,
511
+ element: validator.findByName( name )[ 0 ]
512
+ };
513
+ } );
514
+
515
+ // Remove items from success list
516
  this.successList = $.grep( this.successList, function( element ) {
517
  return !( element.name in errors );
518
+ } );
519
  }
520
  if ( this.settings.showErrors ) {
521
  this.settings.showErrors.call( this, this.errorMap, this.errorList );
529
  if ( $.fn.resetForm ) {
530
  $( this.currentForm ).resetForm();
531
  }
532
+ this.invalid = {};
533
  this.submitted = {};
 
534
  this.prepareForm();
535
  this.hideErrors();
536
+ var elements = this.elements()
537
+ .removeData( "previousValue" )
538
+ .removeAttr( "aria-invalid" );
539
+
540
+ this.resetElements( elements );
541
+ },
542
+
543
+ resetElements: function( elements ) {
544
+ var i;
545
+
546
+ if ( this.settings.unhighlight ) {
547
+ for ( i = 0; elements[ i ]; i++ ) {
548
+ this.settings.unhighlight.call( this, elements[ i ],
549
+ this.settings.errorClass, "" );
550
+ this.findByName( elements[ i ].name ).removeClass( this.settings.validClass );
551
+ }
552
+ } else {
553
+ elements
554
  .removeClass( this.settings.errorClass )
555
+ .removeClass( this.settings.validClass );
556
+ }
557
  },
558
 
559
  numberOfInvalids: function() {
565
  var count = 0,
566
  i;
567
  for ( i in obj ) {
568
+ if ( obj[ i ] ) {
569
+ count++;
570
+ }
571
  }
572
  return count;
573
  },
592
  focusInvalid: function() {
593
  if ( this.settings.focusInvalid ) {
594
  try {
595
+ $( this.findLastActive() || this.errorList.length && this.errorList[ 0 ].element || [] )
596
  .filter( ":visible" )
597
  .focus()
598
+
599
+ // Manually trigger focusin event; without it, focusin handler isn't called, findLastActive won't have anything to find
600
  .trigger( "focusin" );
601
  } catch ( e ) {
602
+
603
+ // Ignore IE throwing errors when focusing hidden elements
604
  }
605
  }
606
  },
609
  var lastActive = this.lastActive;
610
  return lastActive && $.grep( this.errorList, function( n ) {
611
  return n.element.name === lastActive.name;
612
+ } ).length === 1 && lastActive;
613
  },
614
 
615
  elements: function() {
616
  var validator = this,
617
  rulesCache = {};
618
 
619
+ // Select all valid inputs inside the form (no submit or reset buttons)
620
  return $( this.currentForm )
621
+ .find( "input, select, textarea, [contenteditable]" )
622
+ .not( ":submit, :reset, :image, :disabled" )
623
  .not( this.settings.ignore )
624
  .filter( function() {
625
+ var name = this.name || $( this ).attr( "name" ); // For contenteditable
626
+ if ( !name && validator.settings.debug && window.console ) {
627
  console.error( "%o has no name assigned", this );
628
  }
629
 
630
+ // Set form expando on contenteditable
631
+ if ( this.hasAttribute( "contenteditable" ) ) {
632
+ this.form = $( this ).closest( "form" )[ 0 ];
633
+ }
634
+
635
+ // Select only the first element for each name, and only those with rules specified
636
+ if ( name in rulesCache || !validator.objectLength( $( this ).rules() ) ) {
637
  return false;
638
  }
639
 
640
+ rulesCache[ name ] = true;
641
  return true;
642
+ } );
643
  },
644
 
645
  clean: function( selector ) {
651
  return $( this.settings.errorElement + "." + errorClass, this.errorContext );
652
  },
653
 
654
+ resetInternals: function() {
655
  this.successList = [];
656
  this.errorList = [];
657
  this.errorMap = {};
658
  this.toShow = $( [] );
659
  this.toHide = $( [] );
660
+ },
661
+
662
+ reset: function() {
663
+ this.resetInternals();
664
  this.currentElements = $( [] );
665
  },
666
 
675
  },
676
 
677
  elementValue: function( element ) {
678
+ var $element = $( element ),
679
+ type = element.type,
680
+ val, idx;
681
 
682
  if ( type === "radio" || type === "checkbox" ) {
683
+ return this.findByName( element.name ).filter( ":checked" ).val();
684
  } else if ( type === "number" && typeof element.validity !== "undefined" ) {
685
+ return element.validity.badInput ? "NaN" : $element.val();
686
+ }
687
+
688
+ if ( element.hasAttribute( "contenteditable" ) ) {
689
+ val = $element.text();
690
+ } else {
691
+ val = $element.val();
692
+ }
693
+
694
+ if ( type === "file" ) {
695
+
696
+ // Modern browser (chrome & safari)
697
+ if ( val.substr( 0, 12 ) === "C:\\fakepath\\" ) {
698
+ return val.substr( 12 );
699
+ }
700
+
701
+ // Legacy browsers
702
+ // Unix-based path
703
+ idx = val.lastIndexOf( "/" );
704
+ if ( idx >= 0 ) {
705
+ return val.substr( idx + 1 );
706
+ }
707
+
708
+ // Windows-based path
709
+ idx = val.lastIndexOf( "\\" );
710
+ if ( idx >= 0 ) {
711
+ return val.substr( idx + 1 );
712
+ }
713
+
714
+ // Just the file name
715
+ return val;
716
  }
717
 
 
718
  if ( typeof val === "string" ) {
719
+ return val.replace( /\r/g, "" );
720
  }
721
  return val;
722
  },
727
  var rules = $( element ).rules(),
728
  rulesCount = $.map( rules, function( n, i ) {
729
  return i;
730
+ } ).length,
731
  dependencyMismatch = false,
732
  val = this.elementValue( element ),
733
  result, method, rule;
734
 
735
+ // If a normalizer is defined for this element, then
736
+ // call it to retreive the changed value instead
737
+ // of using the real one.
738
+ // Note that `this` in the normalizer is `element`.
739
+ if ( typeof rules.normalizer === "function" ) {
740
+ val = rules.normalizer.call( element, val );
741
+
742
+ if ( typeof val !== "string" ) {
743
+ throw new TypeError( "The normalizer should return a string value." );
744
+ }
745
+
746
+ // Delete the normalizer from rules to avoid treating
747
+ // it as a pre-defined method.
748
+ delete rules.normalizer;
749
+ }
750
+
751
  for ( method in rules ) {
752
  rule = { method: method, parameters: rules[ method ] };
753
  try {
 
754
  result = $.validator.methods[ method ].call( this, val, element, rule.parameters );
755
 
756
+ // If a method indicates that the field is optional and therefore valid,
757
  // don't mark it as valid when there are no other rules
758
  if ( result === "dependency-mismatch" && rulesCount === 1 ) {
759
  dependencyMismatch = true;
774
  if ( this.settings.debug && window.console ) {
775
  console.log( "Exception occurred when checking element " + element.id + ", check the '" + rule.method + "' method.", e );
776
  }
777
+ if ( e instanceof TypeError ) {
778
+ e.message += ". Exception occurred when checking element " + element.id + ", check the '" + rule.method + "' method.";
779
+ }
780
+
781
  throw e;
782
  }
783
  }
790
  return true;
791
  },
792
 
793
+ // Return the custom message for the given element and validation method
794
  // specified in the element's HTML5 data attribute
795
  // return the generic message if present and no method specific message is present
796
  customDataMessage: function( element, method ) {
798
  method.substring( 1 ).toLowerCase() ) || $( element ).data( "msg" );
799
  },
800
 
801
+ // Return the custom message for the given element name and validation method
802
  customMessage: function( name, method ) {
803
  var m = this.settings.messages[ name ];
804
+ return m && ( m.constructor === String ? m : m[ method ] );
805
  },
806
 
807
+ // Return the first defined argument, allowing empty strings
808
  findDefined: function() {
809
+ for ( var i = 0; i < arguments.length; i++ ) {
810
  if ( arguments[ i ] !== undefined ) {
811
  return arguments[ i ];
812
  }
814
  return undefined;
815
  },
816
 
817
+ defaultMessage: function( element, rule ) {
818
+ var message = this.findDefined(
819
+ this.customMessage( element.name, rule.method ),
820
+ this.customDataMessage( element, rule.method ),
 
 
 
 
 
 
821
 
822
+ // 'title' is never undefined, so handle empty string as undefined
823
+ !this.settings.ignoreTitle && element.title || undefined,
824
+ $.validator.messages[ rule.method ],
825
+ "<strong>Warning: No message defined for " + element.name + "</strong>"
826
+ ),
827
  theregex = /\$?\{(\d+)\}/g;
828
  if ( typeof message === "function" ) {
829
  message = message.call( this, rule.parameters, element );
830
  } else if ( theregex.test( message ) ) {
831
  message = $.validator.format( message.replace( theregex, "{$1}" ), rule.parameters );
832
  }
833
+
834
+ return message;
835
+ },
836
+
837
+ formatAndAdd: function( element, rule ) {
838
+ var message = this.defaultMessage( element, rule );
839
+
840
+ this.errorList.push( {
841
  message: message,
842
  element: element,
843
  method: rule.method
844
+ } );
845
 
846
  this.errorMap[ element.name ] = message;
847
  this.submitted[ element.name ] = message;
886
  },
887
 
888
  invalidElements: function() {
889
+ return $( this.errorList ).map( function() {
890
  return this.element;
891
+ } );
892
  },
893
 
894
  showLabel: function( element, message ) {
895
+ var place, group, errorID, v,
896
  error = this.errorsFor( element ),
897
  elementID = this.idOrName( element ),
898
  describedBy = $( element ).attr( "aria-describedby" );
899
+
900
  if ( error.length ) {
901
+
902
+ // Refresh error/success class
903
  error.removeClass( this.settings.validClass ).addClass( this.settings.errorClass );
904
+
905
+ // Replace message on existing label
906
  error.html( message );
907
  } else {
908
+
909
+ // Create error element
910
  error = $( "<" + this.settings.errorElement + ">" )
911
  .attr( "id", elementID + "-error" )
912
  .addClass( this.settings.errorClass )
915
  // Maintain reference to the element to be placed into the DOM
916
  place = error;
917
  if ( this.settings.wrapper ) {
918
+
919
+ // Make sure the element is visible, even in IE
920
  // actually showing the wrapped element is handled elsewhere
921
  place = error.hide().show().wrap( "<" + this.settings.wrapper + "/>" ).parent();
922
  }
930
 
931
  // Link error back to the element
932
  if ( error.is( "label" ) ) {
933
+
934
  // If the error is a label, then associate using 'for'
935
  error.attr( "for", elementID );
936
+
937
  // If the element is not a child of an associated label, then it's necessary
938
  // to explicitly apply aria-describedby
939
+ } else if ( error.parents( "label[for='" + this.escapeCssMeta( elementID ) + "']" ).length === 0 ) {
940
  errorID = error.attr( "id" );
941
+
942
  // Respect existing non-error aria-describedby
943
  if ( !describedBy ) {
944
  describedBy = errorID;
945
+ } else if ( !describedBy.match( new RegExp( "\\b" + this.escapeCssMeta( errorID ) + "\\b" ) ) ) {
946
+
947
  // Add to end of list if not already present
948
  describedBy += " " + errorID;
949
  }
952
  // If this element is grouped, then assign to all elements in the same group
953
  group = this.groups[ element.name ];
954
  if ( group ) {
955
+ v = this;
956
+ $.each( v.groups, function( name, testgroup ) {
957
  if ( testgroup === group ) {
958
+ $( "[name='" + v.escapeCssMeta( name ) + "']", v.currentForm )
959
  .attr( "aria-describedby", error.attr( "id" ) );
960
  }
961
+ } );
962
  }
963
  }
964
  }
974
  },
975
 
976
  errorsFor: function( element ) {
977
+ var name = this.escapeCssMeta( this.idOrName( element ) ),
978
  describer = $( element ).attr( "aria-describedby" ),
979
  selector = "label[for='" + name + "'], label[for='" + name + "'] *";
980
+
981
+ // 'aria-describedby' should directly reference the error element
982
  if ( describer ) {
983
+ selector = selector + ", #" + this.escapeCssMeta( describer )
984
+ .replace( /\s+/g, ", #" );
985
  }
986
+
987
  return this
988
  .errors()
989
  .filter( selector );
990
  },
991
 
992
+ // See https://api.jquery.com/category/selectors/, for CSS
993
+ // meta-characters that should be escaped in order to be used with JQuery
994
+ // as a literal part of a name/id or any selector.
995
+ escapeCssMeta: function( string ) {
996
+ return string.replace( /([\\!"#$%&'()*+,./:;<=>?@\[\]^`{|}~])/g, "\\$1" );
997
+ },
998
+
999
  idOrName: function( element ) {
1000
  return this.groups[ element.name ] || ( this.checkable( element ) ? element.name : element.id || element.name );
1001
  },
1002
 
1003
  validationTargetFor: function( element ) {
1004
+
1005
+ // If radio/checkbox, validate first element in group instead
1006
  if ( this.checkable( element ) ) {
1007
+ element = this.findByName( element.name );
1008
  }
1009
+
1010
+ // Always apply ignore filter
1011
+ return $( element ).not( this.settings.ignore )[ 0 ];
1012
  },
1013
 
1014
  checkable: function( element ) {
1016
  },
1017
 
1018
  findByName: function( name ) {
1019
+ return $( this.currentForm ).find( "[name='" + this.escapeCssMeta( name ) + "']" );
1020
  },
1021
 
1022
  getLength: function( value, element ) {
1032
  },
1033
 
1034
  depend: function( param, element ) {
1035
+ return this.dependTypes[ typeof param ] ? this.dependTypes[ typeof param ]( param, element ) : true;
1036
  },
1037
 
1038
  dependTypes: {
1055
  startRequest: function( element ) {
1056
  if ( !this.pending[ element.name ] ) {
1057
  this.pendingRequest++;
1058
+ $( element ).addClass( this.settings.pendingClass );
1059
  this.pending[ element.name ] = true;
1060
  }
1061
  },
1062
 
1063
  stopRequest: function( element, valid ) {
1064
  this.pendingRequest--;
1065
+
1066
+ // Sometimes synchronization fails, make sure pendingRequest is never < 0
1067
  if ( this.pendingRequest < 0 ) {
1068
  this.pendingRequest = 0;
1069
  }
1070
  delete this.pending[ element.name ];
1071
+ $( element ).removeClass( this.settings.pendingClass );
1072
  if ( valid && this.pendingRequest === 0 && this.formSubmitted && this.form() ) {
1073
  $( this.currentForm ).submit();
1074
  this.formSubmitted = false;
1075
+ } else if ( !valid && this.pendingRequest === 0 && this.formSubmitted ) {
1076
+ $( this.currentForm ).triggerHandler( "invalid-form", [ this ] );
1077
  this.formSubmitted = false;
1078
  }
1079
  },
1080
 
1081
+ previousValue: function( element, method ) {
1082
  return $.data( element, "previousValue" ) || $.data( element, "previousValue", {
1083
  old: null,
1084
  valid: true,
1085
+ message: this.defaultMessage( element, { method: method } )
1086
+ } );
1087
+ },
1088
+
1089
+ // Cleans up all forms and elements, removes validator-specific events
1090
+ destroy: function() {
1091
+ this.resetForm();
1092
+
1093
+ $( this.currentForm )
1094
+ .off( ".validate" )
1095
+ .removeData( "validator" )
1096
+ .find( ".validate-equalTo-blur" )
1097
+ .off( ".validate-equalTo" )
1098
+ .removeClass( "validate-equalTo-blur" );
1099
  }
1100
 
1101
  },
1126
  if ( classes ) {
1127
  $.each( classes.split( " " ), function() {
1128
  if ( this in $.validator.classRuleSettings ) {
1129
+ $.extend( rules, $.validator.classRuleSettings[ this ] );
1130
  }
1131
+ } );
1132
  }
1133
  return rules;
1134
  },
1135
 
1136
+ normalizeAttributeRule: function( rules, type, method, value ) {
1137
+
1138
+ // Convert the value to a number for number inputs, and for text for backwards compability
1139
+ // allows type="date" and others to be compared as strings
1140
+ if ( /min|max|step/.test( method ) && ( type === null || /number|range|text/.test( type ) ) ) {
1141
+ value = Number( value );
1142
+
1143
+ // Support Opera Mini, which returns NaN for undefined minlength
1144
+ if ( isNaN( value ) ) {
1145
+ value = undefined;
1146
+ }
1147
+ }
1148
+
1149
+ if ( value || value === 0 ) {
1150
+ rules[ method ] = value;
1151
+ } else if ( type === method && type !== "range" ) {
1152
+
1153
+ // Exception: the jquery validate 'range' method
1154
+ // does not test for the html5 'range' type
1155
+ rules[ method ] = true;
1156
+ }
1157
+ },
1158
+
1159
  attributeRules: function( element ) {
1160
  var rules = {},
1161
  $element = $( element ),
1164
 
1165
  for ( method in $.validator.methods ) {
1166
 
1167
+ // Support for <input required> in both html5 and older browsers
1168
  if ( method === "required" ) {
1169
  value = element.getAttribute( method );
1170
+
1171
  // Some browsers return an empty string for the required attribute
1172
  // and non-HTML5 browsers might have required="" markup
1173
  if ( value === "" ) {
1174
  value = true;
1175
  }
1176
+
1177
+ // Force non-HTML5 browsers to return bool
1178
  value = !!value;
1179
  } else {
1180
  value = $element.attr( method );
1181
  }
1182
 
1183
+ this.normalizeAttributeRule( rules, type, method, value );
 
 
 
 
 
 
 
 
 
 
 
 
1184
  }
1185
 
1186
+ // 'maxlength' may be returned as -1, 2147483647 ( IE ) and 524288 ( safari ) for text inputs
1187
  if ( rules.maxlength && /-1|2147483647|524288/.test( rules.maxlength ) ) {
1188
  delete rules.maxlength;
1189
  }
1192
  },
1193
 
1194
  dataRules: function( element ) {
1195
+ var rules = {},
1196
+ $element = $( element ),
1197
+ type = element.getAttribute( "type" ),
1198
+ method, value;
1199
+
1200
  for ( method in $.validator.methods ) {
1201
  value = $element.data( "rule" + method.charAt( 0 ).toUpperCase() + method.substring( 1 ).toLowerCase() );
1202
+ this.normalizeAttributeRule( rules, type, method, value );
 
 
1203
  }
1204
  return rules;
1205
  },
1215
  },
1216
 
1217
  normalizeRules: function( rules, element ) {
1218
+
1219
+ // Handle dependency check
1220
  $.each( rules, function( prop, val ) {
1221
+
1222
+ // Ignore rule when param is explicitly false, eg. required:false
1223
  if ( val === false ) {
1224
  delete rules[ prop ];
1225
  return;
1237
  if ( keepRule ) {
1238
  rules[ prop ] = val.param !== undefined ? val.param : true;
1239
  } else {
1240
+ $.data( element.form, "validator" ).resetElements( $( element ) );
1241
  delete rules[ prop ];
1242
  }
1243
  }
1244
+ } );
1245
 
1246
+ // Evaluate parameters
1247
  $.each( rules, function( rule, parameter ) {
1248
+ rules[ rule ] = $.isFunction( parameter ) && rule !== "normalizer" ? parameter( element ) : parameter;
1249
+ } );
1250
 
1251
+ // Clean number parameters
1252
+ $.each( [ "minlength", "maxlength" ], function() {
1253
  if ( rules[ this ] ) {
1254
  rules[ this ] = Number( rules[ this ] );
1255
  }
1256
+ } );
1257
+ $.each( [ "rangelength", "range" ], function() {
1258
  var parts;
1259
  if ( rules[ this ] ) {
1260
  if ( $.isArray( rules[ this ] ) ) {
1261
+ rules[ this ] = [ Number( rules[ this ][ 0 ] ), Number( rules[ this ][ 1 ] ) ];
1262
  } else if ( typeof rules[ this ] === "string" ) {
1263
+ parts = rules[ this ].replace( /[\[\]]/g, "" ).split( /[\s,]+/ );
1264
+ rules[ this ] = [ Number( parts[ 0 ] ), Number( parts[ 1 ] ) ];
1265
  }
1266
  }
1267
+ } );
1268
 
1269
  if ( $.validator.autoCreateRanges ) {
1270
+
1271
+ // Auto-create ranges
1272
+ if ( rules.min != null && rules.max != null ) {
1273
  rules.range = [ rules.min, rules.max ];
1274
  delete rules.min;
1275
  delete rules.max;
1276
  }
1277
+ if ( rules.minlength != null && rules.maxlength != null ) {
1278
  rules.rangelength = [ rules.minlength, rules.maxlength ];
1279
  delete rules.minlength;
1280
  delete rules.maxlength;
1290
  var transformed = {};
1291
  $.each( data.split( /\s/ ), function() {
1292
  transformed[ this ] = true;
1293
+ } );
1294
  data = transformed;
1295
  }
1296
  return data;
1305
  }
1306
  },
1307
 
1308
+ // http://jqueryvalidation.org/jQuery.validator.methods/
1309
  methods: {
1310
 
1311
  // http://jqueryvalidation.org/required-method/
1312
  required: function( value, element, param ) {
1313
+
1314
+ // Check if dependency is met
1315
  if ( !this.depend( param, element ) ) {
1316
  return "dependency-mismatch";
1317
  }
1318
  if ( element.nodeName.toLowerCase() === "select" ) {
1319
+
1320
+ // Could be an array for select-multiple or a string, both are fine this way
1321
  var val = $( element ).val();
1322
  return val && val.length > 0;
1323
  }
1324
  if ( this.checkable( element ) ) {
1325
  return this.getLength( value, element ) > 0;
1326
  }
1327
+ return value.length > 0;
1328
  },
1329
 
1330
  // http://jqueryvalidation.org/email-method/
1331
  email: function( value, element ) {
1332
+
1333
+ // From https://html.spec.whatwg.org/multipage/forms.html#valid-e-mail-address
1334
  // Retrieved 2014-01-14
1335
  // If you have a problem with this implementation, report a bug against the above spec
1336
  // Or use custom methods to implement your own email validation
1339
 
1340
  // http://jqueryvalidation.org/url-method/
1341
  url: function( value, element ) {
1342
+
1343
+ // Copyright (c) 2010-2013 Diego Perini, MIT licensed
1344
+ // https://gist.github.com/dperini/729294
1345
+ // see also https://mathiasbynens.be/demo/url-regex
1346
+ // modified to allow protocol-relative URLs
1347
+ return this.optional( element ) || /^(?:(?:(?:https?|ftp):)?\/\/)(?:\S+(?::\S*)?@)?(?:(?!(?:10|127)(?:\.\d{1,3}){3})(?!(?:169\.254|192\.168)(?:\.\d{1,3}){2})(?!172\.(?:1[6-9]|2\d|3[0-1])(?:\.\d{1,3}){2})(?:[1-9]\d?|1\d\d|2[01]\d|22[0-3])(?:\.(?:1?\d{1,2}|2[0-4]\d|25[0-5])){2}(?:\.(?:[1-9]\d?|1\d\d|2[0-4]\d|25[0-4]))|(?:(?:[a-z\u00a1-\uffff0-9]-*)*[a-z\u00a1-\uffff0-9]+)(?:\.(?:[a-z\u00a1-\uffff0-9]-*)*[a-z\u00a1-\uffff0-9]+)*(?:\.(?:[a-z\u00a1-\uffff]{2,})).?)(?::\d{2,5})?(?:[/?#]\S*)?$/i.test( value );
1348
  },
1349
 
1350
  // http://jqueryvalidation.org/date-method/
1359
 
1360
  // http://jqueryvalidation.org/number-method/
1361
  number: function( value, element ) {
1362
+ return this.optional( element ) || /^(?:-?\d+|-?\d{1,3}(?:,\d{3})+)?(?:\.\d+)?$/.test( value );
1363
  },
1364
 
1365
  // http://jqueryvalidation.org/digits-method/
1367
  return this.optional( element ) || /^\d+$/.test( value );
1368
  },
1369
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1370
  // http://jqueryvalidation.org/minlength-method/
1371
  minlength: function( value, element, param ) {
1372
+ var length = $.isArray( value ) ? value.length : this.getLength( value, element );
1373
  return this.optional( element ) || length >= param;
1374
  },
1375
 
1376
  // http://jqueryvalidation.org/maxlength-method/
1377
  maxlength: function( value, element, param ) {
1378
+ var length = $.isArray( value ) ? value.length : this.getLength( value, element );
1379
  return this.optional( element ) || length <= param;
1380
  },
1381
 
1382
  // http://jqueryvalidation.org/rangelength-method/
1383
  rangelength: function( value, element, param ) {
1384
+ var length = $.isArray( value ) ? value.length : this.getLength( value, element );
1385
  return this.optional( element ) || ( length >= param[ 0 ] && length <= param[ 1 ] );
1386
  },
1387
 
1400
  return this.optional( element ) || ( value >= param[ 0 ] && value <= param[ 1 ] );
1401
  },
1402
 
1403
+ // http://jqueryvalidation.org/step-method/
1404
+ step: function( value, element, param ) {
1405
+ var type = $( element ).attr( "type" ),
1406
+ errorMessage = "Step attribute on input type " + type + " is not supported.",
1407
+ supportedTypes = [ "text", "number", "range" ],
1408
+ re = new RegExp( "\\b" + type + "\\b" ),
1409
+ notSupported = type && !re.test( supportedTypes.join() );
1410
+
1411
+ // Works only for text, number and range input types
1412
+ // TODO find a way to support input types date, datetime, datetime-local, month, time and week
1413
+ if ( notSupported ) {
1414
+ throw new Error( errorMessage );
1415
+ }
1416
+ return this.optional( element ) || ( value % param === 0 );
1417
+ },
1418
+
1419
  // http://jqueryvalidation.org/equalTo-method/
1420
  equalTo: function( value, element, param ) {
1421
+
1422
+ // Bind to the blur event of the target in order to revalidate whenever the target field is updated
1423
  var target = $( param );
1424
+ if ( this.settings.onfocusout && target.not( ".validate-equalTo-blur" ).length ) {
1425
+ target.addClass( "validate-equalTo-blur" ).on( "blur.validate-equalTo", function() {
1426
  $( element ).valid();
1427
+ } );
1428
  }
1429
  return value === target.val();
1430
  },
1431
 
1432
  // http://jqueryvalidation.org/remote-method/
1433
+ remote: function( value, element, param, method ) {
1434
  if ( this.optional( element ) ) {
1435
  return "dependency-mismatch";
1436
  }
1437
 
1438
+ method = typeof method === "string" && method || "remote";
1439
+
1440
+ var previous = this.previousValue( element, method ),
1441
+ validator, data, optionDataString;
1442
 
1443
+ if ( !this.settings.messages[ element.name ] ) {
1444
  this.settings.messages[ element.name ] = {};
1445
  }
1446
+ previous.originalMessage = previous.originalMessage || this.settings.messages[ element.name ][ method ];
1447
+ this.settings.messages[ element.name ][ method ] = previous.message;
1448
 
1449
  param = typeof param === "string" && { url: param } || param;
1450
+ optionDataString = $.param( $.extend( { data: value }, param.data ) );
1451
+ if ( previous.old === optionDataString ) {
1452
  return previous.valid;
1453
  }
1454
 
1455
+ previous.old = optionDataString;
1456
  validator = this;
1457
  this.startRequest( element );
1458
  data = {};
1459
  data[ element.name ] = value;
1460
  $.ajax( $.extend( true, {
 
1461
  mode: "abort",
1462
  port: "validate" + element.name,
1463
  dataType: "json",
1467
  var valid = response === true || response === "true",
1468
  errors, message, submitted;
1469
 
1470
+ validator.settings.messages[ element.name ][ method ] = previous.originalMessage;
1471
  if ( valid ) {
1472
  submitted = validator.formSubmitted;
1473
+ validator.resetInternals();
1474
+ validator.toHide = validator.errorsFor( element );
1475
  validator.formSubmitted = submitted;
1476
  validator.successList.push( element );
1477
+ validator.invalid[ element.name ] = false;
1478
  validator.showErrors();
1479
  } else {
1480
  errors = {};
1481
+ message = response || validator.defaultMessage( element, { method: method, parameters: value } );
1482
+ errors[ element.name ] = previous.message = message;
1483
  validator.invalid[ element.name ] = true;
1484
  validator.showErrors( errors );
1485
  }
1489
  }, param ) );
1490
  return "pending";
1491
  }
 
1492
  }
1493
 
1494
+ } );
1495
+
1496
+ // Ajax mode: abort
 
 
 
 
1497
  // usage: $.ajax({ mode: "abort"[, port: "uniqueport"]});
1498
  // if mode:"abort" is used, the previous request on that port (port can be undefined) is aborted via XMLHttpRequest.abort()
1499
 
1500
  var pendingRequests = {},
1501
  ajax;
1502
+
1503
  // Use a prefilter if available (1.5+)
1504
  if ( $.ajaxPrefilter ) {
1505
+ $.ajaxPrefilter( function( settings, _, xhr ) {
1506
  var port = settings.port;
1507
  if ( settings.mode === "abort" ) {
1508
+ if ( pendingRequests[ port ] ) {
1509
+ pendingRequests[ port ].abort();
1510
  }
1511
+ pendingRequests[ port ] = xhr;
1512
  }
1513
+ } );
1514
  } else {
1515
+
1516
  // Proxy ajax
1517
  ajax = $.ajax;
1518
  $.ajax = function( settings ) {
1519
  var mode = ( "mode" in settings ? settings : $.ajaxSettings ).mode,
1520
  port = ( "port" in settings ? settings : $.ajaxSettings ).port;
1521
  if ( mode === "abort" ) {
1522
+ if ( pendingRequests[ port ] ) {
1523
+ pendingRequests[ port ].abort();
1524
  }
1525
+ pendingRequests[ port ] = ajax.apply( this, arguments );
1526
+ return pendingRequests[ port ];
1527
  }
1528
+ return ajax.apply( this, arguments );
1529
  };
1530
  }
1531
+
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1532
  }));
assets/js/jquery.validate.min.js CHANGED
@@ -1,4 +1 @@
1
- /*! jQuery Validation Plugin - v1.13.0 - 7/1/2014
2
- * http://jqueryvalidation.org/
3
- * Copyright (c) 2014 Jörn Zaefferer; Licensed MIT */
4
- !function(a){"function"==typeof define&&define.amd?define(["jquery"],a):a(jQuery)}(function(a){a.extend(a.fn,{validate:function(b){if(!this.length)return void(b&&b.debug&&window.console&&console.warn("Nothing selected, can't validate, returning nothing."));var c=a.data(this[0],"validator");return c?c:(this.attr("novalidate","novalidate"),c=new a.validator(b,this[0]),a.data(this[0],"validator",c),c.settings.onsubmit&&(this.validateDelegate(":submit","click",function(b){c.settings.submitHandler&&(c.submitButton=b.target),a(b.target).hasClass("cancel")&&(c.cancelSubmit=!0),void 0!==a(b.target).attr("formnovalidate")&&(c.cancelSubmit=!0)}),this.submit(function(b){function d(){var d;return c.settings.submitHandler?(c.submitButton&&(d=a("<input type='hidden'/>").attr("name",c.submitButton.name).val(a(c.submitButton).val()).appendTo(c.currentForm)),c.settings.submitHandler.call(c,c.currentForm,b),c.submitButton&&d.remove(),!1):!0}return c.settings.debug&&b.preventDefault(),c.cancelSubmit?(c.cancelSubmit=!1,d()):c.form()?c.pendingRequest?(c.formSubmitted=!0,!1):d():(c.focusInvalid(),!1)})),c)},valid:function(){var b,c;return a(this[0]).is("form")?b=this.validate().form():(b=!0,c=a(this[0].form).validate(),this.each(function(){b=c.element(this)&&b})),b},removeAttrs:function(b){var c={},d=this;return a.each(b.split(/\s/),function(a,b){c[b]=d.attr(b),d.removeAttr(b)}),c},rules:function(b,c){var d,e,f,g,h,i,j=this[0];if(b)switch(d=a.data(j.form,"validator").settings,e=d.rules,f=a.validator.staticRules(j),b){case"add":a.extend(f,a.validator.normalizeRule(c)),delete f.messages,e[j.name]=f,c.messages&&(d.messages[j.name]=a.extend(d.messages[j.name],c.messages));break;case"remove":return c?(i={},a.each(c.split(/\s/),function(b,c){i[c]=f[c],delete f[c],"required"===c&&a(j).removeAttr("aria-required")}),i):(delete e[j.name],f)}return g=a.validator.normalizeRules(a.extend({},a.validator.classRules(j),a.validator.attributeRules(j),a.validator.dataRules(j),a.validator.staticRules(j)),j),g.required&&(h=g.required,delete g.required,g=a.extend({required:h},g),a(j).attr("aria-required","true")),g.remote&&(h=g.remote,delete g.remote,g=a.extend(g,{remote:h})),g}}),a.extend(a.expr[":"],{blank:function(b){return!a.trim(""+a(b).val())},filled:function(b){return!!a.trim(""+a(b).val())},unchecked:function(b){return!a(b).prop("checked")}}),a.validator=function(b,c){this.settings=a.extend(!0,{},a.validator.defaults,b),this.currentForm=c,this.init()},a.validator.format=function(b,c){return 1===arguments.length?function(){var c=a.makeArray(arguments);return c.unshift(b),a.validator.format.apply(this,c)}:(arguments.length>2&&c.constructor!==Array&&(c=a.makeArray(arguments).slice(1)),c.constructor!==Array&&(c=[c]),a.each(c,function(a,c){b=b.replace(new RegExp("\\{"+a+"\\}","g"),function(){return c})}),b)},a.extend(a.validator,{defaults:{messages:{},groups:{},rules:{},errorClass:"error",validClass:"valid",errorElement:"label",focusInvalid:!0,errorContainer:a([]),errorLabelContainer:a([]),onsubmit:!0,ignore:":hidden",ignoreTitle:!1,onfocusin:function(a){this.lastActive=a,this.settings.focusCleanup&&!this.blockFocusCleanup&&(this.settings.unhighlight&&this.settings.unhighlight.call(this,a,this.settings.errorClass,this.settings.validClass),this.hideThese(this.errorsFor(a)))},onfocusout:function(a){this.checkable(a)||!(a.name in this.submitted)&&this.optional(a)||this.element(a)},onkeyup:function(a,b){(9!==b.which||""!==this.elementValue(a))&&(a.name in this.submitted||a===this.lastElement)&&this.element(a)},onclick:function(a){a.name in this.submitted?this.element(a):a.parentNode.name in this.submitted&&this.element(a.parentNode)},highlight:function(b,c,d){"radio"===b.type?this.findByName(b.name).addClass(c).removeClass(d):a(b).addClass(c).removeClass(d)},unhighlight:function(b,c,d){"radio"===b.type?this.findByName(b.name).removeClass(c).addClass(d):a(b).removeClass(c).addClass(d)}},setDefaults:function(b){a.extend(a.validator.defaults,b)},messages:{required:"This field is required.",remote:"Please fix this field.",email:"Please enter a valid email address.",url:"Please enter a valid URL.",date:"Please enter a valid date.",dateISO:"Please enter a valid date ( ISO ).",number:"Please enter a valid number.",digits:"Please enter only digits.",creditcard:"Please enter a valid credit card number.",equalTo:"Please enter the same value again.",maxlength:a.validator.format("Please enter no more than {0} characters."),minlength:a.validator.format("Please enter at least {0} characters."),rangelength:a.validator.format("Please enter a value between {0} and {1} characters long."),range:a.validator.format("Please enter a value between {0} and {1}."),max:a.validator.format("Please enter a value less than or equal to {0}."),min:a.validator.format("Please enter a value greater than or equal to {0}.")},autoCreateRanges:!1,prototype:{init:function(){function b(b){var c=a.data(this[0].form,"validator"),d="on"+b.type.replace(/^validate/,""),e=c.settings;e[d]&&!this.is(e.ignore)&&e[d].call(c,this[0],b)}this.labelContainer=a(this.settings.errorLabelContainer),this.errorContext=this.labelContainer.length&&this.labelContainer||a(this.currentForm),this.containers=a(this.settings.errorContainer).add(this.settings.errorLabelContainer),this.submitted={},this.valueCache={},this.pendingRequest=0,this.pending={},this.invalid={},this.reset();var c,d=this.groups={};a.each(this.settings.groups,function(b,c){"string"==typeof c&&(c=c.split(/\s/)),a.each(c,function(a,c){d[c]=b})}),c=this.settings.rules,a.each(c,function(b,d){c[b]=a.validator.normalizeRule(d)}),a(this.currentForm).validateDelegate(":text, [type='password'], [type='file'], select, textarea, [type='number'], [type='search'] ,[type='tel'], [type='url'], [type='email'], [type='datetime'], [type='date'], [type='month'], [type='week'], [type='time'], [type='datetime-local'], [type='range'], [type='color'], [type='radio'], [type='checkbox']","focusin focusout keyup",b).validateDelegate("select, option, [type='radio'], [type='checkbox']","click",b),this.settings.invalidHandler&&a(this.currentForm).bind("invalid-form.validate",this.settings.invalidHandler),a(this.currentForm).find("[required], [data-rule-required], .required").attr("aria-required","true")},form:function(){return this.checkForm(),a.extend(this.submitted,this.errorMap),this.invalid=a.extend({},this.errorMap),this.valid()||a(this.currentForm).triggerHandler("invalid-form",[this]),this.showErrors(),this.valid()},checkForm:function(){this.prepareForm();for(var a=0,b=this.currentElements=this.elements();b[a];a++)this.check(b[a]);return this.valid()},element:function(b){var c=this.clean(b),d=this.validationTargetFor(c),e=!0;return this.lastElement=d,void 0===d?delete this.invalid[c.name]:(this.prepareElement(d),this.currentElements=a(d),e=this.check(d)!==!1,e?delete this.invalid[d.name]:this.invalid[d.name]=!0),a(b).attr("aria-invalid",!e),this.numberOfInvalids()||(this.toHide=this.toHide.add(this.containers)),this.showErrors(),e},showErrors:function(b){if(b){a.extend(this.errorMap,b),this.errorList=[];for(var c in b)this.errorList.push({message:b[c],element:this.findByName(c)[0]});this.successList=a.grep(this.successList,function(a){return!(a.name in b)})}this.settings.showErrors?this.settings.showErrors.call(this,this.errorMap,this.errorList):this.defaultShowErrors()},resetForm:function(){a.fn.resetForm&&a(this.currentForm).resetForm(),this.submitted={},this.lastElement=null,this.prepareForm(),this.hideErrors(),this.elements().removeClass(this.settings.errorClass).removeData("previousValue").removeAttr("aria-invalid")},numberOfInvalids:function(){return this.objectLength(this.invalid)},objectLength:function(a){var b,c=0;for(b in a)c++;return c},hideErrors:function(){this.hideThese(this.toHide)},hideThese:function(a){a.not(this.containers).text(""),this.addWrapper(a).hide()},valid:function(){return 0===this.size()},size:function(){return this.errorList.length},focusInvalid:function(){if(this.settings.focusInvalid)try{a(this.findLastActive()||this.errorList.length&&this.errorList[0].element||[]).filter(":visible").focus().trigger("focusin")}catch(b){}},findLastActive:function(){var b=this.lastActive;return b&&1===a.grep(this.errorList,function(a){return a.element.name===b.name}).length&&b},elements:function(){var b=this,c={};return a(this.currentForm).find("input, select, textarea").not(":submit, :reset, :image, [disabled]").not(this.settings.ignore).filter(function(){return!this.name&&b.settings.debug&&window.console&&console.error("%o has no name assigned",this),this.name in c||!b.objectLength(a(this).rules())?!1:(c[this.name]=!0,!0)})},clean:function(b){return a(b)[0]},errors:function(){var b=this.settings.errorClass.split(" ").join(".");return a(this.settings.errorElement+"."+b,this.errorContext)},reset:function(){this.successList=[],this.errorList=[],this.errorMap={},this.toShow=a([]),this.toHide=a([]),this.currentElements=a([])},prepareForm:function(){this.reset(),this.toHide=this.errors().add(this.containers)},prepareElement:function(a){this.reset(),this.toHide=this.errorsFor(a)},elementValue:function(b){var c,d=a(b),e=b.type;return"radio"===e||"checkbox"===e?a("input[name='"+b.name+"']:checked").val():"number"===e&&"undefined"!=typeof b.validity?b.validity.badInput?!1:d.val():(c=d.val(),"string"==typeof c?c.replace(/\r/g,""):c)},check:function(b){b=this.validationTargetFor(this.clean(b));var c,d,e,f=a(b).rules(),g=a.map(f,function(a,b){return b}).length,h=!1,i=this.elementValue(b);for(d in f){e={method:d,parameters:f[d]};try{if(c=a.validator.methods[d].call(this,i,b,e.parameters),"dependency-mismatch"===c&&1===g){h=!0;continue}if(h=!1,"pending"===c)return void(this.toHide=this.toHide.not(this.errorsFor(b)));if(!c)return this.formatAndAdd(b,e),!1}catch(j){throw this.settings.debug&&window.console&&console.log("Exception occurred when checking element "+b.id+", check the '"+e.method+"' method.",j),j}}if(!h)return this.objectLength(f)&&this.successList.push(b),!0},customDataMessage:function(b,c){return a(b).data("msg"+c.charAt(0).toUpperCase()+c.substring(1).toLowerCase())||a(b).data("msg")},customMessage:function(a,b){var c=this.settings.messages[a];return c&&(c.constructor===String?c:c[b])},findDefined:function(){for(var a=0;a<arguments.length;a++)if(void 0!==arguments[a])return arguments[a];return void 0},defaultMessage:function(b,c){return this.findDefined(this.customMessage(b.name,c),this.customDataMessage(b,c),!this.settings.ignoreTitle&&b.title||void 0,a.validator.messages[c],"<strong>Warning: No message defined for "+b.name+"</strong>")},formatAndAdd:function(b,c){var d=this.defaultMessage(b,c.method),e=/\$?\{(\d+)\}/g;"function"==typeof d?d=d.call(this,c.parameters,b):e.test(d)&&(d=a.validator.format(d.replace(e,"{$1}"),c.parameters)),this.errorList.push({message:d,element:b,method:c.method}),this.errorMap[b.name]=d,this.submitted[b.name]=d},addWrapper:function(a){return this.settings.wrapper&&(a=a.add(a.parent(this.settings.wrapper))),a},defaultShowErrors:function(){var a,b,c;for(a=0;this.errorList[a];a++)c=this.errorList[a],this.settings.highlight&&this.settings.highlight.call(this,c.element,this.settings.errorClass,this.settings.validClass),this.showLabel(c.element,c.message);if(this.errorList.length&&(this.toShow=this.toShow.add(this.containers)),this.settings.success)for(a=0;this.successList[a];a++)this.showLabel(this.successList[a]);if(this.settings.unhighlight)for(a=0,b=this.validElements();b[a];a++)this.settings.unhighlight.call(this,b[a],this.settings.errorClass,this.settings.validClass);this.toHide=this.toHide.not(this.toShow),this.hideErrors(),this.addWrapper(this.toShow).show()},validElements:function(){return this.currentElements.not(this.invalidElements())},invalidElements:function(){return a(this.errorList).map(function(){return this.element})},showLabel:function(b,c){var d,e,f,g=this.errorsFor(b),h=this.idOrName(b),i=a(b).attr("aria-describedby");g.length?(g.removeClass(this.settings.validClass).addClass(this.settings.errorClass),g.html(c)):(g=a("<"+this.settings.errorElement+">").attr("id",h+"-error").addClass(this.settings.errorClass).html(c||""),d=g,this.settings.wrapper&&(d=g.hide().show().wrap("<"+this.settings.wrapper+"/>").parent()),this.labelContainer.length?this.labelContainer.append(d):this.settings.errorPlacement?this.settings.errorPlacement(d,a(b)):d.insertAfter(b),g.is("label")?g.attr("for",h):0===g.parents("label[for='"+h+"']").length&&(f=g.attr("id"),i?i.match(new RegExp("\b"+f+"\b"))||(i+=" "+f):i=f,a(b).attr("aria-describedby",i),e=this.groups[b.name],e&&a.each(this.groups,function(b,c){c===e&&a("[name='"+b+"']",this.currentForm).attr("aria-describedby",g.attr("id"))}))),!c&&this.settings.success&&(g.text(""),"string"==typeof this.settings.success?g.addClass(this.settings.success):this.settings.success(g,b)),this.toShow=this.toShow.add(g)},errorsFor:function(b){var c=this.idOrName(b),d=a(b).attr("aria-describedby"),e="label[for='"+c+"'], label[for='"+c+"'] *";return d&&(e=e+", #"+d.replace(/\s+/g,", #")),this.errors().filter(e)},idOrName:function(a){return this.groups[a.name]||(this.checkable(a)?a.name:a.id||a.name)},validationTargetFor:function(a){return this.checkable(a)&&(a=this.findByName(a.name).not(this.settings.ignore)[0]),a},checkable:function(a){return/radio|checkbox/i.test(a.type)},findByName:function(b){return a(this.currentForm).find("[name='"+b+"']")},getLength:function(b,c){switch(c.nodeName.toLowerCase()){case"select":return a("option:selected",c).length;case"input":if(this.checkable(c))return this.findByName(c.name).filter(":checked").length}return b.length},depend:function(a,b){return this.dependTypes[typeof a]?this.dependTypes[typeof a](a,b):!0},dependTypes:{"boolean":function(a){return a},string:function(b,c){return!!a(b,c.form).length},"function":function(a,b){return a(b)}},optional:function(b){var c=this.elementValue(b);return!a.validator.methods.required.call(this,c,b)&&"dependency-mismatch"},startRequest:function(a){this.pending[a.name]||(this.pendingRequest++,this.pending[a.name]=!0)},stopRequest:function(b,c){this.pendingRequest--,this.pendingRequest<0&&(this.pendingRequest=0),delete this.pending[b.name],c&&0===this.pendingRequest&&this.formSubmitted&&this.form()?(a(this.currentForm).submit(),this.formSubmitted=!1):!c&&0===this.pendingRequest&&this.formSubmitted&&(a(this.currentForm).triggerHandler("invalid-form",[this]),this.formSubmitted=!1)},previousValue:function(b){return a.data(b,"previousValue")||a.data(b,"previousValue",{old:null,valid:!0,message:this.defaultMessage(b,"remote")})}},classRuleSettings:{required:{required:!0},email:{email:!0},url:{url:!0},date:{date:!0},dateISO:{dateISO:!0},number:{number:!0},digits:{digits:!0},creditcard:{creditcard:!0}},addClassRules:function(b,c){b.constructor===String?this.classRuleSettings[b]=c:a.extend(this.classRuleSettings,b)},classRules:function(b){var c={},d=a(b).attr("class");return d&&a.each(d.split(" "),function(){this in a.validator.classRuleSettings&&a.extend(c,a.validator.classRuleSettings[this])}),c},attributeRules:function(b){var c,d,e={},f=a(b),g=b.getAttribute("type");for(c in a.validator.methods)"required"===c?(d=b.getAttribute(c),""===d&&(d=!0),d=!!d):d=f.attr(c),/min|max/.test(c)&&(null===g||/number|range|text/.test(g))&&(d=Number(d)),d||0===d?e[c]=d:g===c&&"range"!==g&&(e[c]=!0);return e.maxlength&&/-1|2147483647|524288/.test(e.maxlength)&&delete e.maxlength,e},dataRules:function(b){var c,d,e={},f=a(b);for(c in a.validator.methods)d=f.data("rule"+c.charAt(0).toUpperCase()+c.substring(1).toLowerCase()),void 0!==d&&(e[c]=d);return e},staticRules:function(b){var c={},d=a.data(b.form,"validator");return d.settings.rules&&(c=a.validator.normalizeRule(d.settings.rules[b.name])||{}),c},normalizeRules:function(b,c){return a.each(b,function(d,e){if(e===!1)return void delete b[d];if(e.param||e.depends){var f=!0;switch(typeof e.depends){case"string":f=!!a(e.depends,c.form).length;break;case"function":f=e.depends.call(c,c)}f?b[d]=void 0!==e.param?e.param:!0:delete b[d]}}),a.each(b,function(d,e){b[d]=a.isFunction(e)?e(c):e}),a.each(["minlength","maxlength"],function(){b[this]&&(b[this]=Number(b[this]))}),a.each(["rangelength","range"],function(){var c;b[this]&&(a.isArray(b[this])?b[this]=[Number(b[this][0]),Number(b[this][1])]:"string"==typeof b[this]&&(c=b[this].replace(/[\[\]]/g,"").split(/[\s,]+/),b[this]=[Number(c[0]),Number(c[1])]))}),a.validator.autoCreateRanges&&(b.min&&b.max&&(b.range=[b.min,b.max],delete b.min,delete b.max),b.minlength&&b.maxlength&&(b.rangelength=[b.minlength,b.maxlength],delete b.minlength,delete b.maxlength)),b},normalizeRule:function(b){if("string"==typeof b){var c={};a.each(b.split(/\s/),function(){c[this]=!0}),b=c}return b},addMethod:function(b,c,d){a.validator.methods[b]=c,a.validator.messages[b]=void 0!==d?d:a.validator.messages[b],c.length<3&&a.validator.addClassRules(b,a.validator.normalizeRule(b))},methods:{required:function(b,c,d){if(!this.depend(d,c))return"dependency-mismatch";if("select"===c.nodeName.toLowerCase()){var e=a(c).val();return e&&e.length>0}return this.checkable(c)?this.getLength(b,c)>0:a.trim(b).length>0},email:function(a,b){return this.optional(b)||/^[a-zA-Z0-9.!#$%&'*+\/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/.test(a)},url:function(a,b){return this.optional(b)||/^(https?|s?ftp):\/\/(((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:)*@)?(((\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5]))|((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?)(:\d*)?)(\/((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)+(\/(([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)*)*)?)?(\?((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|[\uE000-\uF8FF]|\/|\?)*)?(#((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|\/|\?)*)?$/i.test(a)},date:function(a,b){return this.optional(b)||!/Invalid|NaN/.test(new Date(a).toString())},dateISO:function(a,b){return this.optional(b)||/^\d{4}[\/\-](0?[1-9]|1[012])[\/\-](0?[1-9]|[12][0-9]|3[01])$/.test(a)},number:function(a,b){return this.optional(b)||/^-?(?:\d+|\d{1,3}(?:,\d{3})+)?(?:\.\d+)?$/.test(a)},digits:function(a,b){return this.optional(b)||/^\d+$/.test(a)},creditcard:function(a,b){if(this.optional(b))return"dependency-mismatch";if(/[^0-9 \-]+/.test(a))return!1;var c,d,e=0,f=0,g=!1;if(a=a.replace(/\D/g,""),a.length<13||a.length>19)return!1;for(c=a.length-1;c>=0;c--)d=a.charAt(c),f=parseInt(d,10),g&&(f*=2)>9&&(f-=9),e+=f,g=!g;return e%10===0},minlength:function(b,c,d){var e=a.isArray(b)?b.length:this.getLength(a.trim(b),c);return this.optional(c)||e>=d},maxlength:function(b,c,d){var e=a.isArray(b)?b.length:this.getLength(a.trim(b),c);return this.optional(c)||d>=e},rangelength:function(b,c,d){var e=a.isArray(b)?b.length:this.getLength(a.trim(b),c);return this.optional(c)||e>=d[0]&&e<=d[1]},min:function(a,b,c){return this.optional(b)||a>=c},max:function(a,b,c){return this.optional(b)||c>=a},range:function(a,b,c){return this.optional(b)||a>=c[0]&&a<=c[1]},equalTo:function(b,c,d){var e=a(d);return this.settings.onfocusout&&e.unbind(".validate-equalTo").bind("blur.validate-equalTo",function(){a(c).valid()}),b===e.val()},remote:function(b,c,d){if(this.optional(c))return"dependency-mismatch";var e,f,g=this.previousValue(c);return this.settings.messages[c.name]||(this.settings.messages[c.name]={}),g.originalMessage=this.settings.messages[c.name].remote,this.settings.messages[c.name].remote=g.message,d="string"==typeof d&&{url:d}||d,g.old===b?g.valid:(g.old=b,e=this,this.startRequest(c),f={},f[c.name]=b,a.ajax(a.extend(!0,{url:d,mode:"abort",port:"validate"+c.name,dataType:"json",data:f,context:e.currentForm,success:function(d){var f,h,i,j=d===!0||"true"===d;e.settings.messages[c.name].remote=g.originalMessage,j?(i=e.formSubmitted,e.prepareElement(c),e.formSubmitted=i,e.successList.push(c),delete e.invalid[c.name],e.showErrors()):(f={},h=d||e.defaultMessage(c,"remote"),f[c.name]=g.message=a.isFunction(h)?h(b):h,e.invalid[c.name]=!0,e.showErrors(f)),g.valid=j,e.stopRequest(c,j)}},d)),"pending")}}}),a.format=function(){throw"$.format has been deprecated. Please use $.validator.format instead."};var b,c={};a.ajaxPrefilter?a.ajaxPrefilter(function(a,b,d){var e=a.port;"abort"===a.mode&&(c[e]&&c[e].abort(),c[e]=d)}):(b=a.ajax,a.ajax=function(d){var e=("mode"in d?d:a.ajaxSettings).mode,f=("port"in d?d:a.ajaxSettings).port;return"abort"===e?(c[f]&&c[f].abort(),c[f]=b.apply(this,arguments),c[f]):b.apply(this,arguments)}),a.extend(a.fn,{validateDelegate:function(b,c,d){return this.bind(c,function(c){var e=a(c.target);return e.is(b)?d.apply(e,arguments):void 0})}})});
1
+ !function(a){"function"==typeof define&&define.amd?define(["jquery"],a):"object"==typeof module&&module.exports?module.exports=a(require("jquery")):a(jQuery)}(function(a){a.extend(a.fn,{validate:function(b){if(!this.length)return void(b&&b.debug&&window.console&&console.warn("Nothing selected, can't validate, returning nothing."));var c=a.data(this[0],"validator");return c?c:(this.attr("novalidate","novalidate"),c=new a.validator(b,this[0]),a.data(this[0],"validator",c),c.settings.onsubmit&&(this.on("click.validate",":submit",function(b){c.settings.submitHandler&&(c.submitButton=b.target),a(this).hasClass("cancel")&&(c.cancelSubmit=!0),void 0!==a(this).attr("formnovalidate")&&(c.cancelSubmit=!0)}),this.on("submit.validate",function(b){function d(){var d,e;return c.settings.submitHandler?(c.submitButton&&(d=a("<input type='hidden'/>").attr("name",c.submitButton.name).val(a(c.submitButton).val()).appendTo(c.currentForm)),e=c.settings.submitHandler.call(c,c.currentForm,b),c.submitButton&&d.remove(),void 0!==e?e:!1):!0}return c.settings.debug&&b.preventDefault(),c.cancelSubmit?(c.cancelSubmit=!1,d()):c.form()?c.pendingRequest?(c.formSubmitted=!0,!1):d():(c.focusInvalid(),!1)})),c)},valid:function(){var b,c,d;return a(this[0]).is("form")?b=this.validate().form():(d=[],b=!0,c=a(this[0].form).validate(),this.each(function(){b=c.element(this)&&b,b||(d=d.concat(c.errorList))}),c.errorList=d),b},rules:function(b,c){if(this.length){var d,e,f,g,h,i,j=this[0];if(b)switch(d=a.data(j.form,"validator").settings,e=d.rules,f=a.validator.staticRules(j),b){case"add":a.extend(f,a.validator.normalizeRule(c)),delete f.messages,e[j.name]=f,c.messages&&(d.messages[j.name]=a.extend(d.messages[j.name],c.messages));break;case"remove":return c?(i={},a.each(c.split(/\s/),function(b,c){i[c]=f[c],delete f[c],"required"===c&&a(j).removeAttr("aria-required")}),i):(delete e[j.name],f)}return g=a.validator.normalizeRules(a.extend({},a.validator.classRules(j),a.validator.attributeRules(j),a.validator.dataRules(j),a.validator.staticRules(j)),j),g.required&&(h=g.required,delete g.required,g=a.extend({required:h},g),a(j).attr("aria-required","true")),g.remote&&(h=g.remote,delete g.remote,g=a.extend(g,{remote:h})),g}}}),a.extend(a.expr[":"],{blank:function(b){return!a.trim(""+a(b).val())},filled:function(b){var c=a(b).val();return null!==c&&!!a.trim(""+c)},unchecked:function(b){return!a(b).prop("checked")}}),a.validator=function(b,c){this.settings=a.extend(!0,{},a.validator.defaults,b),this.currentForm=c,this.init()},a.validator.format=function(b,c){return 1===arguments.length?function(){var c=a.makeArray(arguments);return c.unshift(b),a.validator.format.apply(this,c)}:void 0===c?b:(arguments.length>2&&c.constructor!==Array&&(c=a.makeArray(arguments).slice(1)),c.constructor!==Array&&(c=[c]),a.each(c,function(a,c){b=b.replace(new RegExp("\\{"+a+"\\}","g"),function(){return c})}),b)},a.extend(a.validator,{defaults:{messages:{},groups:{},rules:{},errorClass:"error",pendingClass:"pending",validClass:"valid",errorElement:"label",focusCleanup:!1,focusInvalid:!0,errorContainer:a([]),errorLabelContainer:a([]),onsubmit:!0,ignore:":hidden",ignoreTitle:!1,onfocusin:function(a){this.lastActive=a,this.settings.focusCleanup&&(this.settings.unhighlight&&this.settings.unhighlight.call(this,a,this.settings.errorClass,this.settings.validClass),this.hideThese(this.errorsFor(a)))},onfocusout:function(a){this.checkable(a)||!(a.name in this.submitted)&&this.optional(a)||this.element(a)},onkeyup:function(b,c){var d=[16,17,18,20,35,36,37,38,39,40,45,144,225];9===c.which&&""===this.elementValue(b)||-1!==a.inArray(c.keyCode,d)||(b.name in this.submitted||b.name in this.invalid)&&this.element(b)},onclick:function(a){a.name in this.submitted?this.element(a):a.parentNode.name in this.submitted&&this.element(a.parentNode)},highlight:function(b,c,d){"radio"===b.type?this.findByName(b.name).addClass(c).removeClass(d):a(b).addClass(c).removeClass(d)},unhighlight:function(b,c,d){"radio"===b.type?this.findByName(b.name).removeClass(c).addClass(d):a(b).removeClass(c).addClass(d)}},setDefaults:function(b){a.extend(a.validator.defaults,b)},messages:{required:"This field is required.",remote:"Please fix this field.",email:"Please enter a valid email address.",url:"Please enter a valid URL.",date:"Please enter a valid date.",dateISO:"Please enter a valid date ( ISO ).",number:"Please enter a valid number.",digits:"Please enter only digits.",equalTo:"Please enter the same value again.",maxlength:a.validator.format("Please enter no more than {0} characters."),minlength:a.validator.format("Please enter at least {0} characters."),rangelength:a.validator.format("Please enter a value between {0} and {1} characters long."),range:a.validator.format("Please enter a value between {0} and {1}."),max:a.validator.format("Please enter a value less than or equal to {0}."),min:a.validator.format("Please enter a value greater than or equal to {0}."),step:a.validator.format("Please enter a multiple of {0}.")},autoCreateRanges:!1,prototype:{init:function(){function b(b){var c=a.data(this.form,"validator"),d="on"+b.type.replace(/^validate/,""),e=c.settings;e[d]&&!a(this).is(e.ignore)&&e[d].call(c,this,b)}this.labelContainer=a(this.settings.errorLabelContainer),this.errorContext=this.labelContainer.length&&this.labelContainer||a(this.currentForm),this.containers=a(this.settings.errorContainer).add(this.settings.errorLabelContainer),this.submitted={},this.valueCache={},this.pendingRequest=0,this.pending={},this.invalid={},this.reset();var c,d=this.groups={};a.each(this.settings.groups,function(b,c){"string"==typeof c&&(c=c.split(/\s/)),a.each(c,function(a,c){d[c]=b})}),c=this.settings.rules,a.each(c,function(b,d){c[b]=a.validator.normalizeRule(d)}),a(this.currentForm).on("focusin.validate focusout.validate keyup.validate",":text, [type='password'], [type='file'], select, textarea, [type='number'], [type='search'], [type='tel'], [type='url'], [type='email'], [type='datetime'], [type='date'], [type='month'], [type='week'], [type='time'], [type='datetime-local'], [type='range'], [type='color'], [type='radio'], [type='checkbox'], [contenteditable]",b).on("click.validate","select, option, [type='radio'], [type='checkbox']",b),this.settings.invalidHandler&&a(this.currentForm).on("invalid-form.validate",this.settings.invalidHandler),a(this.currentForm).find("[required], [data-rule-required], .required").attr("aria-required","true")},form:function(){return this.checkForm(),a.extend(this.submitted,this.errorMap),this.invalid=a.extend({},this.errorMap),this.valid()||a(this.currentForm).triggerHandler("invalid-form",[this]),this.showErrors(),this.valid()},checkForm:function(){this.prepareForm();for(var a=0,b=this.currentElements=this.elements();b[a];a++)this.check(b[a]);return this.valid()},element:function(b){var c,d,e=this.clean(b),f=this.validationTargetFor(e),g=this,h=!0;return void 0===f?delete this.invalid[e.name]:(this.prepareElement(f),this.currentElements=a(f),d=this.groups[f.name],d&&a.each(this.groups,function(a,b){b===d&&a!==f.name&&(e=g.validationTargetFor(g.clean(g.findByName(a))),e&&e.name in g.invalid&&(g.currentElements.push(e),h=h&&g.check(e)))}),c=this.check(f)!==!1,h=h&&c,c?this.invalid[f.name]=!1:this.invalid[f.name]=!0,this.numberOfInvalids()||(this.toHide=this.toHide.add(this.containers)),this.showErrors(),a(b).attr("aria-invalid",!c)),h},showErrors:function(b){if(b){var c=this;a.extend(this.errorMap,b),this.errorList=a.map(this.errorMap,function(a,b){return{message:a,element:c.findByName(b)[0]}}),this.successList=a.grep(this.successList,function(a){return!(a.name in b)})}this.settings.showErrors?this.settings.showErrors.call(this,this.errorMap,this.errorList):this.defaultShowErrors()},resetForm:function(){a.fn.resetForm&&a(this.currentForm).resetForm(),this.invalid={},this.submitted={},this.prepareForm(),this.hideErrors();var b=this.elements().removeData("previousValue").removeAttr("aria-invalid");this.resetElements(b)},resetElements:function(a){var b;if(this.settings.unhighlight)for(b=0;a[b];b++)this.settings.unhighlight.call(this,a[b],this.settings.errorClass,""),this.findByName(a[b].name).removeClass(this.settings.validClass);else a.removeClass(this.settings.errorClass).removeClass(this.settings.validClass)},numberOfInvalids:function(){return this.objectLength(this.invalid)},objectLength:function(a){var b,c=0;for(b in a)a[b]&&c++;return c},hideErrors:function(){this.hideThese(this.toHide)},hideThese:function(a){a.not(this.containers).text(""),this.addWrapper(a).hide()},valid:function(){return 0===this.size()},size:function(){return this.errorList.length},focusInvalid:function(){if(this.settings.focusInvalid)try{a(this.findLastActive()||this.errorList.length&&this.errorList[0].element||[]).filter(":visible").focus().trigger("focusin")}catch(b){}},findLastActive:function(){var b=this.lastActive;return b&&1===a.grep(this.errorList,function(a){return a.element.name===b.name}).length&&b},elements:function(){var b=this,c={};return a(this.currentForm).find("input, select, textarea, [contenteditable]").not(":submit, :reset, :image, :disabled").not(this.settings.ignore).filter(function(){var d=this.name||a(this).attr("name");return!d&&b.settings.debug&&window.console&&console.error("%o has no name assigned",this),this.hasAttribute("contenteditable")&&(this.form=a(this).closest("form")[0]),d in c||!b.objectLength(a(this).rules())?!1:(c[d]=!0,!0)})},clean:function(b){return a(b)[0]},errors:function(){var b=this.settings.errorClass.split(" ").join(".");return a(this.settings.errorElement+"."+b,this.errorContext)},resetInternals:function(){this.successList=[],this.errorList=[],this.errorMap={},this.toShow=a([]),this.toHide=a([])},reset:function(){this.resetInternals(),this.currentElements=a([])},prepareForm:function(){this.reset(),this.toHide=this.errors().add(this.containers)},prepareElement:function(a){this.reset(),this.toHide=this.errorsFor(a)},elementValue:function(b){var c,d,e=a(b),f=b.type;return"radio"===f||"checkbox"===f?this.findByName(b.name).filter(":checked").val():"number"===f&&"undefined"!=typeof b.validity?b.validity.badInput?"NaN":e.val():(c=b.hasAttribute("contenteditable")?e.text():e.val(),"file"===f?"C:\\fakepath\\"===c.substr(0,12)?c.substr(12):(d=c.lastIndexOf("/"),d>=0?c.substr(d+1):(d=c.lastIndexOf("\\"),d>=0?c.substr(d+1):c)):"string"==typeof c?c.replace(/\r/g,""):c)},check:function(b){b=this.validationTargetFor(this.clean(b));var c,d,e,f=a(b).rules(),g=a.map(f,function(a,b){return b}).length,h=!1,i=this.elementValue(b);if("function"==typeof f.normalizer){if(i=f.normalizer.call(b,i),"string"!=typeof i)throw new TypeError("The normalizer should return a string value.");delete f.normalizer}for(d in f){e={method:d,parameters:f[d]};try{if(c=a.validator.methods[d].call(this,i,b,e.parameters),"dependency-mismatch"===c&&1===g){h=!0;continue}if(h=!1,"pending"===c)return void(this.toHide=this.toHide.not(this.errorsFor(b)));if(!c)return this.formatAndAdd(b,e),!1}catch(j){throw this.settings.debug&&window.console&&console.log("Exception occurred when checking element "+b.id+", check the '"+e.method+"' method.",j),j instanceof TypeError&&(j.message+=". Exception occurred when checking element "+b.id+", check the '"+e.method+"' method."),j}}if(!h)return this.objectLength(f)&&this.successList.push(b),!0},customDataMessage:function(b,c){return a(b).data("msg"+c.charAt(0).toUpperCase()+c.substring(1).toLowerCase())||a(b).data("msg")},customMessage:function(a,b){var c=this.settings.messages[a];return c&&(c.constructor===String?c:c[b])},findDefined:function(){for(var a=0;a<arguments.length;a++)if(void 0!==arguments[a])return arguments[a]},defaultMessage:function(b,c){var d=this.findDefined(this.customMessage(b.name,c.method),this.customDataMessage(b,c.method),!this.settings.ignoreTitle&&b.title||void 0,a.validator.messages[c.method],"<strong>Warning: No message defined for "+b.name+"</strong>"),e=/\$?\{(\d+)\}/g;return"function"==typeof d?d=d.call(this,c.parameters,b):e.test(d)&&(d=a.validator.format(d.replace(e,"{$1}"),c.parameters)),d},formatAndAdd:function(a,b){var c=this.defaultMessage(a,b);this.errorList.push({message:c,element:a,method:b.method}),this.errorMap[a.name]=c,this.submitted[a.name]=c},addWrapper:function(a){return this.settings.wrapper&&(a=a.add(a.parent(this.settings.wrapper))),a},defaultShowErrors:function(){var a,b,c;for(a=0;this.errorList[a];a++)c=this.errorList[a],this.settings.highlight&&this.settings.highlight.call(this,c.element,this.settings.errorClass,this.settings.validClass),this.showLabel(c.element,c.message);if(this.errorList.length&&(this.toShow=this.toShow.add(this.containers)),this.settings.success)for(a=0;this.successList[a];a++)this.showLabel(this.successList[a]);if(this.settings.unhighlight)for(a=0,b=this.validElements();b[a];a++)this.settings.unhighlight.call(this,b[a],this.settings.errorClass,this.settings.validClass);this.toHide=this.toHide.not(this.toShow),this.hideErrors(),this.addWrapper(this.toShow).show()},validElements:function(){return this.currentElements.not(this.invalidElements())},invalidElements:function(){return a(this.errorList).map(function(){return this.element})},showLabel:function(b,c){var d,e,f,g,h=this.errorsFor(b),i=this.idOrName(b),j=a(b).attr("aria-describedby");h.length?(h.removeClass(this.settings.validClass).addClass(this.settings.errorClass),h.html(c)):(h=a("<"+this.settings.errorElement+">").attr("id",i+"-error").addClass(this.settings.errorClass).html(c||""),d=h,this.settings.wrapper&&(d=h.hide().show().wrap("<"+this.settings.wrapper+"/>").parent()),this.labelContainer.length?this.labelContainer.append(d):this.settings.errorPlacement?this.settings.errorPlacement(d,a(b)):d.insertAfter(b),h.is("label")?h.attr("for",i):0===h.parents("label[for='"+this.escapeCssMeta(i)+"']").length&&(f=h.attr("id"),j?j.match(new RegExp("\\b"+this.escapeCssMeta(f)+"\\b"))||(j+=" "+f):j=f,a(b).attr("aria-describedby",j),e=this.groups[b.name],e&&(g=this,a.each(g.groups,function(b,c){c===e&&a("[name='"+g.escapeCssMeta(b)+"']",g.currentForm).attr("aria-describedby",h.attr("id"))})))),!c&&this.settings.success&&(h.text(""),"string"==typeof this.settings.success?h.addClass(this.settings.success):this.settings.success(h,b)),this.toShow=this.toShow.add(h)},errorsFor:function(b){var c=this.escapeCssMeta(this.idOrName(b)),d=a(b).attr("aria-describedby"),e="label[for='"+c+"'], label[for='"+c+"'] *";return d&&(e=e+", #"+this.escapeCssMeta(d).replace(/\s+/g,", #")),this.errors().filter(e)},escapeCssMeta:function(a){return a.replace(/([\\!"#$%&'()*+,.\/:;<=>?@\[\]^`{|}~])/g,"\\$1")},idOrName:function(a){return this.groups[a.name]||(this.checkable(a)?a.name:a.id||a.name)},validationTargetFor:function(b){return this.checkable(b)&&(b=this.findByName(b.name)),a(b).not(this.settings.ignore)[0]},checkable:function(a){return/radio|checkbox/i.test(a.type)},findByName:function(b){return a(this.currentForm).find("[name='"+this.escapeCssMeta(b)+"']")},getLength:function(b,c){switch(c.nodeName.toLowerCase()){case"select":return a("option:selected",c).length;case"input":if(this.checkable(c))return this.findByName(c.name).filter(":checked").length}return b.length},depend:function(a,b){return this.dependTypes[typeof a]?this.dependTypes[typeof a](a,b):!0},dependTypes:{"boolean":function(a){return a},string:function(b,c){return!!a(b,c.form).length},"function":function(a,b){return a(b)}},optional:function(b){var c=this.elementValue(b);return!a.validator.methods.required.call(this,c,b)&&"dependency-mismatch"},startRequest:function(b){this.pending[b.name]||(this.pendingRequest++,a(b).addClass(this.settings.pendingClass),this.pending[b.name]=!0)},stopRequest:function(b,c){this.pendingRequest--,this.pendingRequest<0&&(this.pendingRequest=0),delete this.pending[b.name],a(b).removeClass(this.settings.pendingClass),c&&0===this.pendingRequest&&this.formSubmitted&&this.form()?(a(this.currentForm).submit(),this.formSubmitted=!1):!c&&0===this.pendingRequest&&this.formSubmitted&&(a(this.currentForm).triggerHandler("invalid-form",[this]),this.formSubmitted=!1)},previousValue:function(b,c){return a.data(b,"previousValue")||a.data(b,"previousValue",{old:null,valid:!0,message:this.defaultMessage(b,{method:c})})},destroy:function(){this.resetForm(),a(this.currentForm).off(".validate").removeData("validator").find(".validate-equalTo-blur").off(".validate-equalTo").removeClass("validate-equalTo-blur")}},classRuleSettings:{required:{required:!0},email:{email:!0},url:{url:!0},date:{date:!0},dateISO:{dateISO:!0},number:{number:!0},digits:{digits:!0},creditcard:{creditcard:!0}},addClassRules:function(b,c){b.constructor===String?this.classRuleSettings[b]=c:a.extend(this.classRuleSettings,b)},classRules:function(b){var c={},d=a(b).attr("class");return d&&a.each(d.split(" "),function(){this in a.validator.classRuleSettings&&a.extend(c,a.validator.classRuleSettings[this])}),c},normalizeAttributeRule:function(a,b,c,d){/min|max|step/.test(c)&&(null===b||/number|range|text/.test(b))&&(d=Number(d),isNaN(d)&&(d=void 0)),d||0===d?a[c]=d:b===c&&"range"!==b&&(a[c]=!0)},attributeRules:function(b){var c,d,e={},f=a(b),g=b.getAttribute("type");for(c in a.validator.methods)"required"===c?(d=b.getAttribute(c),""===d&&(d=!0),d=!!d):d=f.attr(c),this.normalizeAttributeRule(e,g,c,d);return e.maxlength&&/-1|2147483647|524288/.test(e.maxlength)&&delete e.maxlength,e},dataRules:function(b){var c,d,e={},f=a(b),g=b.getAttribute("type");for(c in a.validator.methods)d=f.data("rule"+c.charAt(0).toUpperCase()+c.substring(1).toLowerCase()),this.normalizeAttributeRule(e,g,c,d);return e},staticRules:function(b){var c={},d=a.data(b.form,"validator");return d.settings.rules&&(c=a.validator.normalizeRule(d.settings.rules[b.name])||{}),c},normalizeRules:function(b,c){return a.each(b,function(d,e){if(e===!1)return void delete b[d];if(e.param||e.depends){var f=!0;switch(typeof e.depends){case"string":f=!!a(e.depends,c.form).length;break;case"function":f=e.depends.call(c,c)}f?b[d]=void 0!==e.param?e.param:!0:(a.data(c.form,"validator").resetElements(a(c)),delete b[d])}}),a.each(b,function(d,e){b[d]=a.isFunction(e)&&"normalizer"!==d?e(c):e}),a.each(["minlength","maxlength"],function(){b[this]&&(b[this]=Number(b[this]))}),a.each(["rangelength","range"],function(){var c;b[this]&&(a.isArray(b[this])?b[this]=[Number(b[this][0]),Number(b[this][1])]:"string"==typeof b[this]&&(c=b[this].replace(/[\[\]]/g,"").split(/[\s,]+/),b[this]=[Number(c[0]),Number(c[1])]))}),a.validator.autoCreateRanges&&(null!=b.min&&null!=b.max&&(b.range=[b.min,b.max],delete b.min,delete b.max),null!=b.minlength&&null!=b.maxlength&&(b.rangelength=[b.minlength,b.maxlength],delete b.minlength,delete b.maxlength)),b},normalizeRule:function(b){if("string"==typeof b){var c={};a.each(b.split(/\s/),function(){c[this]=!0}),b=c}return b},addMethod:function(b,c,d){a.validator.methods[b]=c,a.validator.messages[b]=void 0!==d?d:a.validator.messages[b],c.length<3&&a.validator.addClassRules(b,a.validator.normalizeRule(b))},methods:{required:function(b,c,d){if(!this.depend(d,c))return"dependency-mismatch";if("select"===c.nodeName.toLowerCase()){var e=a(c).val();return e&&e.length>0}return this.checkable(c)?this.getLength(b,c)>0:b.length>0},email:function(a,b){return this.optional(b)||/^[a-zA-Z0-9.!#$%&'*+\/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/.test(a)},url:function(a,b){return this.optional(b)||/^(?:(?:(?:https?|ftp):)?\/\/)(?:\S+(?::\S*)?@)?(?:(?!(?:10|127)(?:\.\d{1,3}){3})(?!(?:169\.254|192\.168)(?:\.\d{1,3}){2})(?!172\.(?:1[6-9]|2\d|3[0-1])(?:\.\d{1,3}){2})(?:[1-9]\d?|1\d\d|2[01]\d|22[0-3])(?:\.(?:1?\d{1,2}|2[0-4]\d|25[0-5])){2}(?:\.(?:[1-9]\d?|1\d\d|2[0-4]\d|25[0-4]))|(?:(?:[a-z\u00a1-\uffff0-9]-*)*[a-z\u00a1-\uffff0-9]+)(?:\.(?:[a-z\u00a1-\uffff0-9]-*)*[a-z\u00a1-\uffff0-9]+)*(?:\.(?:[a-z\u00a1-\uffff]{2,})).?)(?::\d{2,5})?(?:[\/?#]\S*)?$/i.test(a)},date:function(a,b){return this.optional(b)||!/Invalid|NaN/.test(new Date(a).toString())},dateISO:function(a,b){return this.optional(b)||/^\d{4}[\/\-](0?[1-9]|1[012])[\/\-](0?[1-9]|[12][0-9]|3[01])$/.test(a)},number:function(a,b){return this.optional(b)||/^(?:-?\d+|-?\d{1,3}(?:,\d{3})+)?(?:\.\d+)?$/.test(a)},digits:function(a,b){return this.optional(b)||/^\d+$/.test(a)},minlength:function(b,c,d){var e=a.isArray(b)?b.length:this.getLength(b,c);return this.optional(c)||e>=d},maxlength:function(b,c,d){var e=a.isArray(b)?b.length:this.getLength(b,c);return this.optional(c)||d>=e},rangelength:function(b,c,d){var e=a.isArray(b)?b.length:this.getLength(b,c);return this.optional(c)||e>=d[0]&&e<=d[1]},min:function(a,b,c){return this.optional(b)||a>=c},max:function(a,b,c){return this.optional(b)||c>=a},range:function(a,b,c){return this.optional(b)||a>=c[0]&&a<=c[1]},step:function(b,c,d){var e=a(c).attr("type"),f="Step attribute on input type "+e+" is not supported.",g=["text","number","range"],h=new RegExp("\\b"+e+"\\b"),i=e&&!h.test(g.join());if(i)throw new Error(f);return this.optional(c)||b%d===0},equalTo:function(b,c,d){var e=a(d);return this.settings.onfocusout&&e.not(".validate-equalTo-blur").length&&e.addClass("validate-equalTo-blur").on("blur.validate-equalTo",function(){a(c).valid()}),b===e.val()},remote:function(b,c,d,e){if(this.optional(c))return"dependency-mismatch";e="string"==typeof e&&e||"remote";var f,g,h,i=this.previousValue(c,e);return this.settings.messages[c.name]||(this.settings.messages[c.name]={}),i.originalMessage=i.originalMessage||this.settings.messages[c.name][e],this.settings.messages[c.name][e]=i.message,d="string"==typeof d&&{url:d}||d,h=a.param(a.extend({data:b},d.data)),i.old===h?i.valid:(i.old=h,f=this,this.startRequest(c),g={},g[c.name]=b,a.ajax(a.extend(!0,{mode:"abort",port:"validate"+c.name,dataType:"json",data:g,context:f.currentForm,success:function(a){var d,g,h,j=a===!0||"true"===a;f.settings.messages[c.name][e]=i.originalMessage,j?(h=f.formSubmitted,f.resetInternals(),f.toHide=f.errorsFor(c),f.formSubmitted=h,f.successList.push(c),f.invalid[c.name]=!1,f.showErrors()):(d={},g=a||f.defaultMessage(c,{method:e,parameters:b}),d[c.name]=i.message=g,f.invalid[c.name]=!0,f.showErrors(d)),i.valid=j,f.stopRequest(c,j)}},d)),"pending")}}});var b,c={};a.ajaxPrefilter?a.ajaxPrefilter(function(a,b,d){var e=a.port;"abort"===a.mode&&(c[e]&&c[e].abort(),c[e]=d)}):(b=a.ajax,a.ajax=function(d){var e=("mode"in d?d:a.ajaxSettings).mode,f=("port"in d?d:a.ajaxSettings).port;return"abort"===e?(c[f]&&c[f].abort(),c[f]=b.apply(this,arguments),c[f]):b.apply(this,arguments)})});
 
 
 
assets/js/scripts-admin-global.js ADDED
@@ -0,0 +1,20 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ jQuery(function($) {
2
+ /**
3
+ * DISMISS NOTICES
4
+ *
5
+ * @since 2.0.4
6
+ */
7
+ $('.wpmm_notices').on('click', '.notice-dismiss', function() {
8
+ var notice_key = $(this).parent().data('key');
9
+
10
+ $.post(ajaxurl, {
11
+ action: 'wpmm_dismiss_notices',
12
+ notice_key: notice_key
13
+ }, function(response) {
14
+ if (!response.success) {
15
+ // alert(response.data);
16
+ return false;
17
+ }
18
+ }, 'json');
19
+ });
20
+ });
assets/js/scripts-admin-global.min.js ADDED
@@ -0,0 +1 @@
 
1
+ jQuery(function(a){a(".wpmm_notices").on("click",".notice-dismiss",function(){var b=a(this).parent().data("key");a.post(ajaxurl,{action:"wpmm_dismiss_notices",notice_key:b},function(a){return a.success?void 0:!1},"json")})});
assets/js/scripts-admin.js CHANGED
@@ -3,7 +3,7 @@ jQuery(function($) {
3
  * TABS
4
  */
5
  var hash = window.location.hash;
6
- if (hash != '') {
7
  $('.nav-tab-wrapper').children().removeClass('nav-tab-active');
8
  $('.nav-tab-wrapper a[href="' + hash + '"]').addClass('nav-tab-active');
9
 
@@ -28,6 +28,12 @@ jQuery(function($) {
28
  */
29
  $('.color_picker_trigger').wpColorPicker();
30
 
 
 
 
 
 
 
31
  /**
32
  * BACKGROUND UPLOADER
33
  */
@@ -54,7 +60,7 @@ jQuery(function($) {
54
  image_custom_uploader.on('select', function() {
55
  attachment = image_custom_uploader.state().get('selection').first().toJSON();
56
  var url = '';
57
- url = attachment['url'];
58
  $('.upload_image_url').val(url);
59
  });
60
 
@@ -68,12 +74,13 @@ jQuery(function($) {
68
  show_bg_type = function(selected_val) {
69
  $('.design_bg_types').hide();
70
  $('#show_' + selected_val).show();
71
- }
 
72
  show_bg_type($('#design_bg_type').val());
73
 
74
  $('#design_bg_type').change(function() {
75
  var selected_val = $(this).val();
76
-
77
  show_bg_type(selected_val);
78
  });
79
 
@@ -92,19 +99,41 @@ jQuery(function($) {
92
  $('<iframe />').attr('src', wpmm_vars.ajax_url + '?action=wpmm_subscribers_export').appendTo('body').hide();
93
  });
94
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
95
  /**
96
  * RESET SETTINGS
97
  */
98
  $('.reset_settings').click(function() {
99
  var tab = $(this).data('tab');
100
 
101
- $.ajax({
102
- type: "POST",
103
- url: wpmm_vars.ajax_url,
104
- data: {action: "wpmm_reset_settings", tab: tab}
105
- }).done(function(msg) {
106
- window.location.href = wpmm_vars.plugin_url;
107
- });
 
 
 
 
108
  });
109
 
110
  /**
3
  * TABS
4
  */
5
  var hash = window.location.hash;
6
+ if (hash !== '') {
7
  $('.nav-tab-wrapper').children().removeClass('nav-tab-active');
8
  $('.nav-tab-wrapper a[href="' + hash + '"]').addClass('nav-tab-active');
9
 
28
  */
29
  $('.color_picker_trigger').wpColorPicker();
30
 
31
+ /**
32
+ * CHOSEN.JS MULTISELECT
33
+ * @used for "Backend role" and "Frontend role" -> General tab
34
+ */
35
+ $('.chosen-select').chosen({disable_search_threshold: 10});
36
+
37
  /**
38
  * BACKGROUND UPLOADER
39
  */
60
  image_custom_uploader.on('select', function() {
61
  attachment = image_custom_uploader.state().get('selection').first().toJSON();
62
  var url = '';
63
+ url = attachment.url;
64
  $('.upload_image_url').val(url);
65
  });
66
 
74
  show_bg_type = function(selected_val) {
75
  $('.design_bg_types').hide();
76
  $('#show_' + selected_val).show();
77
+ };
78
+
79
  show_bg_type($('#design_bg_type').val());
80
 
81
  $('#design_bg_type').change(function() {
82
  var selected_val = $(this).val();
83
+
84
  show_bg_type(selected_val);
85
  });
86
 
99
  $('<iframe />').attr('src', wpmm_vars.ajax_url + '?action=wpmm_subscribers_export').appendTo('body').hide();
100
  });
101
 
102
+ /**
103
+ * SUBSCRIBERS EMPTY LIST
104
+ *
105
+ * @since 2.0.4
106
+ */
107
+ $('#subscribers-empty-list').click(function() {
108
+ $.post(wpmm_vars.ajax_url, {
109
+ action: 'wpmm_subscribers_empty_list'
110
+ }, function(response) {
111
+ if (!response.success) {
112
+ alert(response.data);
113
+ return false;
114
+ }
115
+
116
+ $('#subscribers_wrap').html(response.data);
117
+ }, 'json');
118
+ });
119
+
120
  /**
121
  * RESET SETTINGS
122
  */
123
  $('.reset_settings').click(function() {
124
  var tab = $(this).data('tab');
125
 
126
+ $.post(wpmm_vars.ajax_url, {
127
+ action: 'wpmm_reset_settings',
128
+ tab: tab
129
+ }, function(response) {
130
+ if (!response.success) {
131
+ alert(response.data);
132
+ return false;
133
+ }
134
+
135
+ window.location.reload(true);
136
+ }, 'json');
137
  });
138
 
139
  /**
assets/js/scripts-admin.min.js ADDED
@@ -0,0 +1 @@
 
1
+ jQuery(function(a){var b=window.location.hash;""!==b&&(a(".nav-tab-wrapper").children().removeClass("nav-tab-active"),a('.nav-tab-wrapper a[href="'+b+'"]').addClass("nav-tab-active"),a(".tabs-content").children().addClass("hidden"),a(".tabs-content div"+b.replace("#","#tab-")).removeClass("hidden")),a(".nav-tab-wrapper a").click(function(){var b=a(this).attr("href").replace("#","#tab-");a(this).parent().children().removeClass("nav-tab-active"),a(this).addClass("nav-tab-active"),a(".tabs-content").children().addClass("hidden"),a(".tabs-content div"+b).removeClass("hidden")}),a(".color_picker_trigger").wpColorPicker(),a(".chosen-select").chosen({disable_search_threshold:10});var c;a("#upload_image_trigger").click(function(b){return b.preventDefault(),c?void c.open():(c=wp.media.frames.file_frame=wp.media({title:"Upload Background",button:{text:"Choose Background"},multiple:!1}),c.on("select",function(){attachment=c.state().get("selection").first().toJSON();var b="";b=attachment.url,a(".upload_image_url").val(b)}),void c.open())}),show_bg_type=function(b){a(".design_bg_types").hide(),a("#show_"+b).show()},show_bg_type(a("#design_bg_type").val()),a("#design_bg_type").change(function(){var b=a(this).val();show_bg_type(b)}),a("ul.bg_list li").click(function(){a(this).parent().children().removeClass("active"),a(this).addClass("active")}),a("#subscribers-export").click(function(){a("<iframe />").attr("src",wpmm_vars.ajax_url+"?action=wpmm_subscribers_export").appendTo("body").hide()}),a("#subscribers-empty-list").click(function(){a.post(wpmm_vars.ajax_url,{action:"wpmm_subscribers_empty_list"},function(b){return b.success?void a("#subscribers_wrap").html(b.data):(alert(b.data),!1)},"json")}),a(".reset_settings").click(function(){var b=a(this).data("tab");a.post(wpmm_vars.ajax_url,{action:"wpmm_reset_settings",tab:b},function(a){return a.success?void window.location.reload(!0):(alert(a.data),!1)},"json")}),a(".countdown_start").datetimepicker({timeFormat:"HH:mm:ss",dateFormat:"dd-mm-yy"})});
assets/js/scripts.js CHANGED
@@ -1,91 +1,102 @@
1
- jQuery(function($) {
2
- /**
3
- * COUNTDOWN
4
- */
5
- if ($('.countdown').length > 0) {
6
- var countDate = new Date($('.countdown').data('start'));
7
- countDate = new Date($('.countdown').data('end'));
8
- $('.countdown').countdown({
9
- until: countDate,
10
- compact: true,
11
- layout: '<span class="day">{dn}</span> <span class="separator">:</span> <span class="hour">{hnn}</span> <span class="separator">:</span> <span class="minutes">{mnn}</span> <span class="separator">:</span> <span class="seconds">{snn}</span>'
12
- });
13
- }
14
-
15
- /**
16
- * SOCIAL LINKS
17
- */
18
- if ($('.social').length > 0) {
19
- var link_target = $('.social').data('target');
20
-
21
- if (link_target == 1) {
22
- $('.social a').attr('target', '_blank');
23
- }
24
- }
25
-
26
- /**
27
- * SUBSCRIBE FORM
28
- */
29
- if ($('.subscribe_form').length > 0) {
30
- // validate form
31
- $('.subscribe_form').validate({
32
- submitHandler: function(form) {
33
- $.post(wpmm_vars.ajax_url, {
34
- action: 'wpmm_add_subscriber',
35
- email: $('.email_input', $('.subscribe_form')).val()
36
- }, function(data) {
37
- $('.subscribe_wrapper').html(data.response);
38
- }, 'json');
39
-
40
- return false;
41
- }
42
- });
43
- }
44
-
45
- /**
46
- * CONTACT FORM
47
- */
48
- if ($('.contact').length > 0) {
49
- // show form
50
- $('.contact_us').click(function() {
51
- var open_contact = $(this).data('open'),
52
- close_contact = $(this).data('close');
53
-
54
- $('.contact').fadeIn(200);
55
- $('.' + open_contact).addClass(close_contact);
56
- });
57
-
58
- // validate form
59
- $('.contact_form').validate({
60
- submitHandler: function(form) {
61
- $.post(wpmm_vars.ajax_url, {
62
- action: 'wpmm_send_contact',
63
- name: $('.name_input', $('.contact_form')).val(),
64
- email: $('.email_input', $('.contact_form')).val(),
65
- content: $('.content_textarea', $('.contact_form')).val()
66
- }, function(data) {
67
- $('.contact .form').append('<div class="response">' + data.response + '</div>');
68
- $('.contact .form .contact_form').hide();
69
- setTimeout(function() {
70
- $('.contact').hide();
71
- $('.contact .form .response').remove();
72
- $('.contact .form .contact_form').trigger('reset');
73
- $('.contact .form .contact_form').show();
74
- }, 2000);
75
- }, 'json');
76
-
77
- return false;
78
- }
79
- });
80
-
81
- // hide form
82
- $('body').on('click', '.contact', function(e) {
83
- if ($(e.target).hasClass('contact')) {
84
- var close_contact = $('.contact_us').data('close');
85
- $('.form', $(this)).removeClass(close_contact);
86
-
87
- $(this).hide();
88
- }
89
- });
90
- }
 
 
 
 
 
 
 
 
 
 
 
91
  });
1
+ jQuery(function($) {
2
+ /**
3
+ * COUNTDOWN
4
+ */
5
+ if ($('.countdown').length > 0) {
6
+ var countDate = new Date($('.countdown').data('start'));
7
+ countDate = new Date($('.countdown').data('end'));
8
+ $('.countdown').countdown({
9
+ until: countDate,
10
+ compact: true,
11
+ layout: '<span class="day">{dn}</span> <span class="separator">:</span> <span class="hour">{hnn}</span> <span class="separator">:</span> <span class="minutes">{mnn}</span> <span class="separator">:</span> <span class="seconds">{snn}</span>'
12
+ });
13
+ }
14
+
15
+ /**
16
+ * SOCIAL LINKS
17
+ */
18
+ if ($('.social').length > 0) {
19
+ var link_target = $('.social').data('target');
20
+
21
+ if (link_target == 1) {
22
+ $('.social a').attr('target', '_blank');
23
+ }
24
+ }
25
+
26
+ /**
27
+ * SUBSCRIBE FORM
28
+ */
29
+ if ($('.subscribe_form').length > 0) {
30
+ // validate form
31
+ $('.subscribe_form').validate({
32
+ submitHandler: function(form) {
33
+ $.post(wpmm_vars.ajax_url, {
34
+ action: 'wpmm_add_subscriber',
35
+ email: $('.email_input', $('.subscribe_form')).val()
36
+ }, function(response) {
37
+ if (!response.success) {
38
+ alert(response.data);
39
+ return false;
40
+ }
41
+
42
+ $('.subscribe_wrapper').html(response.data);
43
+ }, 'json');
44
+
45
+ return false;
46
+ }
47
+ });
48
+ }
49
+
50
+ /**
51
+ * CONTACT FORM
52
+ */
53
+ if ($('.contact').length > 0) {
54
+ // show form
55
+ $('.contact_us').click(function() {
56
+ var open_contact = $(this).data('open'),
57
+ close_contact = $(this).data('close');
58
+
59
+ $('.contact').fadeIn(200);
60
+ $('.' + open_contact).addClass(close_contact);
61
+ });
62
+
63
+ // validate form
64
+ $('.contact_form').validate({
65
+ submitHandler: function(form) {
66
+ $.post(wpmm_vars.ajax_url, {
67
+ action: 'wpmm_send_contact',
68
+ name: $('.name_input', $('.contact_form')).val(),
69
+ email: $('.email_input', $('.contact_form')).val(),
70
+ content: $('.content_textarea', $('.contact_form')).val()
71
+ }, function(response) {
72
+ if (!response.success) {
73
+ alert(response.data);
74
+ return false;
75
+ }
76
+
77
+ $('.contact .form').append('<div class="response">' + response.data + '</div>');
78
+ $('.contact .form .contact_form').hide();
79
+
80
+ setTimeout(function() {
81
+ $('.contact').hide();
82
+ $('.contact .form .response').remove();
83
+ $('.contact .form .contact_form').trigger('reset');
84
+ $('.contact .form .contact_form').show();
85
+ }, 2000);
86
+ }, 'json');
87
+
88
+ return false;
89
+ }
90
+ });
91
+
92
+ // hide form
93
+ $('body').on('click', '.contact', function(e) {
94
+ if ($(e.target).hasClass('contact')) {
95
+ var close_contact = $('.contact_us').data('close');
96
+ $('.form', $(this)).removeClass(close_contact);
97
+
98
+ $(this).hide();
99
+ }
100
+ });
101
+ }
102
  });
assets/js/scripts.min.js ADDED
@@ -0,0 +1 @@
 
1
+ jQuery(function(a){if(a(".countdown").length>0){var b=new Date(a(".countdown").data("start"));b=new Date(a(".countdown").data("end")),a(".countdown").countdown({until:b,compact:!0,layout:'<span class="day">{dn}</span> <span class="separator">:</span> <span class="hour">{hnn}</span> <span class="separator">:</span> <span class="minutes">{mnn}</span> <span class="separator">:</span> <span class="seconds">{snn}</span>'})}if(a(".social").length>0){var c=a(".social").data("target");1==c&&a(".social a").attr("target","_blank")}a(".subscribe_form").length>0&&a(".subscribe_form").validate({submitHandler:function(b){return a.post(wpmm_vars.ajax_url,{action:"wpmm_add_subscriber",email:a(".email_input",a(".subscribe_form")).val()},function(b){return b.success?void a(".subscribe_wrapper").html(b.data):(alert(b.data),!1)},"json"),!1}}),a(".contact").length>0&&(a(".contact_us").click(function(){var b=a(this).data("open"),c=a(this).data("close");a(".contact").fadeIn(200),a("."+b).addClass(c)}),a(".contact_form").validate({submitHandler:function(b){return a.post(wpmm_vars.ajax_url,{action:"wpmm_send_contact",name:a(".name_input",a(".contact_form")).val(),email:a(".email_input",a(".contact_form")).val(),content:a(".content_textarea",a(".contact_form")).val()},function(b){return b.success?(a(".contact .form").append('<div class="response">'+b.data+"</div>"),a(".contact .form .contact_form").hide(),void setTimeout(function(){a(".contact").hide(),a(".contact .form .response").remove(),a(".contact .form .contact_form").trigger("reset"),a(".contact .form .contact_form").show()},2e3)):(alert(b.data),!1)},"json"),!1}}),a("body").on("click",".contact",function(b){if(a(b.target).hasClass("contact")){var c=a(".contact_us").data("close");a(".form",a(this)).removeClass(c),a(this).hide()}}))});
includes/classes/index.php CHANGED
@@ -1,2 +1,2 @@
1
- <?php
2
- // Silence is golden.
1
+ <?php
2
+ // Silence is golden.
includes/classes/wp-maintenance-mode-admin.php CHANGED
@@ -1,406 +1,522 @@
1
- <?php
2
-
3
- if (!class_exists('WP_Maintenance_Mode_Admin')) {
4
-
5
- class WP_Maintenance_Mode_Admin {
6
-
7
- protected static $instance = null;
8
- protected $plugin_slug;
9
- protected $plugin_settings;
10
- protected $plugin_default_settings;
11
- protected $plugin_basename;
12
- protected $plugin_screen_hook_suffix = null;
13
-
14
- private function __construct() {
15
- $plugin = WP_Maintenance_Mode::get_instance();
16
- $this->plugin_slug = $plugin->get_plugin_slug();
17
- $this->plugin_settings = $plugin->get_plugin_settings();
18
- $this->plugin_default_settings = $plugin->default_settings();
19
- $this->plugin_basename = plugin_basename(WPMM_PATH . $this->plugin_slug . '.php');
20
-
21
- // Load admin style sheet and JavaScript.
22
- add_action('admin_enqueue_scripts', array($this, 'enqueue_admin_styles'));
23
- add_action('admin_enqueue_scripts', array($this, 'enqueue_admin_scripts'));
24
-
25
- // Add the options page and menu item.
26
- add_action('admin_menu', array($this, 'add_plugin_menu'));
27
-
28
- // Add an action link pointing to the options page
29
- if (is_multisite() && is_plugin_active_for_network($this->plugin_basename)) {
30
- // settings link will point to admin_url of the main blog, not to network_admin_url
31
- add_filter('network_admin_plugin_action_links_' . $this->plugin_basename, array($this, 'add_settings_link'));
32
- } else {
33
- add_filter('plugin_action_links_' . $this->plugin_basename, array($this, 'add_settings_link'));
34
- }
35
-
36
- // Add admin notices
37
- add_action('admin_notices', array($this, 'add_notices'));
38
-
39
- // Add ajax methods
40
- add_action('wp_ajax_wpmm_subscribers_export', array($this, 'subscribers_export'));
41
- add_action('wp_ajax_wpmm_reset_settings', array($this, 'reset_settings'));
42
- }
43
-
44
- public static function get_instance() {
45
- if (null == self::$instance) {
46
- self::$instance = new self;
47
- }
48
-
49
- return self::$instance;
50
- }
51
-
52
- /**
53
- * Load CSS files
54
- *
55
- * @since 2.0.0
56
- * @global object $wp_scripts
57
- * @return type
58
- */
59
- public function enqueue_admin_styles() {
60
- global $wp_scripts;
61
-
62
- if (!isset($this->plugin_screen_hook_suffix)) {
63
- return;
64
- }
65
-
66
- $screen = get_current_screen();
67
- if ($this->plugin_screen_hook_suffix == $screen->id) {
68
- $ui = $wp_scripts->query('jquery-ui-core');
69
-
70
- wp_enqueue_style($this->plugin_slug . '-admin-jquery-ui-styles', '//ajax.googleapis.com/ajax/libs/jqueryui/' . (!empty($ui->ver) ? $ui->ver : '1.10.4') . '/themes/smoothness/jquery-ui.min.css', array(), WP_Maintenance_Mode::VERSION);
71
- wp_enqueue_style($this->plugin_slug . '-admin-styles', WPMM_CSS_URL . 'style-admin.css', array('wp-color-picker'), WP_Maintenance_Mode::VERSION);
72
- }
73
- }
74
-
75
- /**
76
- * Load JS files and their dependencies
77
- *
78
- * @since 2.0.0
79
- * @return
80
- */
81
- public function enqueue_admin_scripts() {
82
- if (!isset($this->plugin_screen_hook_suffix)) {
83
- return;
84
- }
85
-
86
- $screen = get_current_screen();
87
- if ($this->plugin_screen_hook_suffix == $screen->id) {
88
- wp_enqueue_media();
89
- wp_enqueue_script($this->plugin_slug . '-admin-timepicker-addon-script', WPMM_JS_URL . 'jquery-ui-timepicker-addon.js', array('jquery', 'jquery-ui-datepicker'), WP_Maintenance_Mode::VERSION);
90
- wp_enqueue_script($this->plugin_slug . '-admin-script', WPMM_JS_URL . 'scripts-admin.js', array('jquery', 'wp-color-picker'), WP_Maintenance_Mode::VERSION);
91
- wp_localize_script($this->plugin_slug . '-admin-script', 'wpmm_vars', array(
92
- 'ajax_url' => admin_url('admin-ajax.php'),
93
- 'plugin_url' => admin_url('options-general.php?page=' . $this->plugin_slug)
94
- ));
95
- }
96
- }
97
-
98
- /**
99
- * Export subscribers list in CSV format
100
- *
101
- * @since 2.0.0
102
- * @global object $wpdb
103
- */
104
- public function subscribers_export() {
105
- global $wpdb;
106
-
107
- $results = $wpdb->get_results("SELECT email, insert_date FROM {$wpdb->prefix}wpmm_subscribers ORDER BY id_subscriber DESC", ARRAY_A);
108
- if (!empty($results)) {
109
- $filename = 'subscribers-list-' . date('Y-m-d') . '.csv';
110
-
111
- header('Content-Type: text/csv');
112
- header('Content-Disposition: attachment;filename=' . $filename);
113
-
114
- $fp = fopen('php://output', 'w');
115
-
116
- fputcsv($fp, array('email', 'insert_date'));
117
- foreach ($results as $item) {
118
- fputcsv($fp, $item);
119
- }
120
-
121
- fclose($fp);
122
- }
123
- }
124
-
125
- /**
126
- * Reset settings
127
- *
128
- * @since 2.0.0
129
- */
130
- public function reset_settings() {
131
- if (empty($_REQUEST['tab'])) {
132
- return false;
133
- }
134
- $tab = $_REQUEST['tab'];
135
-
136
- if (empty($this->plugin_default_settings[$tab])) {
137
- return false;
138
- }
139
-
140
- // OPTIONS UPDATE
141
- $this->plugin_settings[$tab] = $this->plugin_default_settings[$tab];
142
- update_option('wpmm_settings', $this->plugin_settings);
143
-
144
- wp_send_json(array('success' => 1));
145
- }
146
-
147
- /**
148
- * Add plugin in Settings menu
149
- *
150
- * @since 2.0.0
151
- */
152
- public function add_plugin_menu() {
153
- $this->plugin_screen_hook_suffix = add_options_page(
154
- __('WP Maintenance Mode', $this->plugin_slug), __('WP Maintenance Mode', $this->plugin_slug), 'manage_options', $this->plugin_slug, array($this, 'display_plugin_settings')
155
- );
156
- }
157
-
158
- /**
159
- * Settings page
160
- *
161
- * @since 2.0.0
162
- * @global object $wp_roles
163
- */
164
- public function display_plugin_settings() {
165
- global $wp_roles;
166
-
167
- // save settings
168
- $this->save_plugin_settings();
169
-
170
- // show settings
171
- include_once(WPMM_VIEWS_PATH . 'settings.php');
172
- }
173
-
174
- /**
175
- * Save settings
176
- *
177
- * @since 2.0.0
178
- */
179
- public function save_plugin_settings() {
180
- if (!empty($_POST) && !empty($_POST['tab'])) {
181
- if (!wp_verify_nonce($_POST['_wpnonce'], 'tab-' . $_POST['tab'])) {
182
- die('Security check!');
183
- }
184
-
185
- // DO SOME SANITIZATIONS
186
- $tab = $_POST['tab'];
187
- switch ($tab) {
188
- case 'general':
189
- $_POST['options']['general']['status'] = (int) $_POST['options']['general']['status'];
190
- if (!empty($_POST['options']['general']['status']) && $_POST['options']['general']['status'] == 1) {
191
- $_POST['options']['general']['status_date'] = date('Y-m-d H:i:s');
192
- }
193
- $_POST['options']['general']['bypass_bots'] = (int) $_POST['options']['general']['bypass_bots'];
194
- $_POST['options']['general']['backend_role'] = sanitize_text_field($_POST['options']['general']['backend_role']);
195
- $_POST['options']['general']['frontend_role'] = sanitize_text_field($_POST['options']['general']['frontend_role']);
196
- $_POST['options']['general']['meta_robots'] = (int) $_POST['options']['general']['meta_robots'];
197
- $_POST['options']['general']['redirection'] = esc_url($_POST['options']['general']['redirection']);
198
- if (!empty($_POST['options']['general']['exclude'])) {
199
- $exclude_array = explode("\n", $_POST['options']['general']['exclude']);
200
- $_POST['options']['general']['exclude'] = array_map('trim', $exclude_array);
201
- } else {
202
- $_POST['options']['general']['exclude'] = array();
203
- }
204
- $_POST['options']['general']['notice'] = (int) $_POST['options']['general']['notice'];
205
- $_POST['options']['general']['admin_link'] = (int) $_POST['options']['general']['admin_link'];
206
-
207
- // delete cache when is already activated, when is activated and when is deactivated
208
- if (
209
- isset($this->plugin_settings['general']['status']) && isset($_POST['options']['general']['status']) &&
210
- (
211
- ($this->plugin_settings['general']['status'] == 1 && in_array($_POST['options']['general']['status'], array(0, 1))) ||
212
- ($this->plugin_settings['general']['status'] == 0 && $_POST['options']['general']['status'] == 1)
213
- )
214
- ) {
215
- $this->delete_cache();
216
- }
217
- break;
218
- case 'design':
219
- $custom_css = array();
220
-
221
- // CONTENT & CUSTOM CSS
222
- $_POST['options']['design']['title'] = sanitize_text_field($_POST['options']['design']['title']);
223
- $_POST['options']['design']['heading'] = sanitize_text_field($_POST['options']['design']['heading']);
224
- if (!empty($_POST['options']['design']['heading_color'])) {
225
- $_POST['options']['design']['heading_color'] = sanitize_text_field($_POST['options']['design']['heading_color']);
226
- $custom_css['heading_color'] = '.wrap h1 { color: ' . $_POST['options']['design']['heading_color'] . '; }';
227
- }
228
- add_filter('safe_style_css', array($this, 'add_safe_style_css')); // add before we save
229
- $_POST['options']['design']['text'] = wp_kses_post($_POST['options']['design']['text']);
230
- remove_filter('safe_style_css', array($this, 'add_safe_style_css')); // remove after we save
231
-
232
- if (!empty($_POST['options']['design']['text_color'])) {
233
- $_POST['options']['design']['text_color'] = sanitize_text_field($_POST['options']['design']['text_color']);
234
- $custom_css['text_color'] = '.wrap h2 { color: ' . $_POST['options']['design']['text_color'] . '; }';
235
- }
236
-
237
- // BACKGROUND & CUSTOM CSS
238
- if (!empty($_POST['options']['design']['bg_type'])) {
239
- $_POST['options']['design']['bg_type'] = sanitize_text_field($_POST['options']['design']['bg_type']);
240
-
241
- if ($_POST['options']['design']['bg_type'] == 'color' && !empty($_POST['options']['design']['bg_color'])) {
242
- $_POST['options']['design']['bg_color'] = sanitize_text_field($_POST['options']['design']['bg_color']);
243
- $custom_css['bg_color'] = 'body { background-color: ' . $_POST['options']['design']['bg_color'] . '; }';
244
- }
245
-
246
- if ($_POST['options']['design']['bg_type'] == 'custom' && !empty($_POST['options']['design']['bg_custom'])) {
247
- $_POST['options']['design']['bg_custom'] = esc_url($_POST['options']['design']['bg_custom']);
248
- $custom_css['bg_url'] = '.background { background: url(' . $_POST['options']['design']['bg_custom'] . ') no-repeat center top fixed; background-size: cover; }';
249
- }
250
-
251
- if ($_POST['options']['design']['bg_type'] == 'predefined' && !empty($_POST['options']['design']['bg_predefined'])) {
252
- $_POST['options']['design']['bg_predefined'] = sanitize_text_field($_POST['options']['design']['bg_predefined']);
253
- $custom_css['bg_url'] = '.background { background: url(' . esc_url(WPMM_URL . 'assets/images/backgrounds/' . $_POST['options']['design']['bg_predefined']) . ') no-repeat center top fixed; background-size: cover; }';
254
- }
255
- }
256
-
257
- $_POST['options']['design']['custom_css'] = $custom_css;
258
-
259
- // delete cache when is activated
260
- if (!empty($this->plugin_settings['general']['status']) && $this->plugin_settings['general']['status'] == 1) {
261
- $this->delete_cache();
262
- }
263
- break;
264
- case 'modules':
265
- $custom_css = array();
266
-
267
- // COUNTDOWN & CUSTOM CSS
268
- $_POST['options']['modules']['countdown_status'] = (int) $_POST['options']['modules']['countdown_status'];
269
- $_POST['options']['modules']['countdown_start'] = sanitize_text_field($_POST['options']['modules']['countdown_start']);
270
- $_POST['options']['modules']['countdown_details'] = array_map('trim', $_POST['options']['modules']['countdown_details']);
271
- $_POST['options']['modules']['countdown_details']['days'] = isset($_POST['options']['modules']['countdown_details']['days']) && is_numeric($_POST['options']['modules']['countdown_details']['days']) ? $_POST['options']['modules']['countdown_details']['days'] : 0;
272
- $_POST['options']['modules']['countdown_details']['hours'] = isset($_POST['options']['modules']['countdown_details']['hours']) && is_numeric($_POST['options']['modules']['countdown_details']['hours']) ? $_POST['options']['modules']['countdown_details']['hours'] : 1;
273
- $_POST['options']['modules']['countdown_details']['minutes'] = isset($_POST['options']['modules']['countdown_details']['minutes']) && is_numeric($_POST['options']['modules']['countdown_details']['minutes']) ? $_POST['options']['modules']['countdown_details']['minutes'] : 0;
274
- if (!empty($_POST['options']['modules']['countdown_color'])) {
275
- $_POST['options']['modules']['countdown_color'] = sanitize_text_field($_POST['options']['modules']['countdown_color']);
276
- $custom_css['countdown_color'] = '.wrap .countdown span { color: ' . $_POST['options']['modules']['countdown_color'] . '; }';
277
- }
278
-
279
- // SUBSCRIBE & CUSTOM CSS
280
- $_POST['options']['modules']['subscribe_status'] = (int) $_POST['options']['modules']['subscribe_status'];
281
- $_POST['options']['modules']['subscribe_text'] = sanitize_text_field($_POST['options']['modules']['subscribe_text']);
282
- if (!empty($_POST['options']['modules']['subscribe_text_color'])) {
283
- $_POST['options']['modules']['subscribe_text_color'] = sanitize_text_field($_POST['options']['modules']['subscribe_text_color']);
284
- $custom_css['subscribe_text_color'] = '.wrap h3, .wrap .subscribe_wrapper { color: ' . $_POST['options']['modules']['subscribe_text_color'] . '; }';
285
- }
286
-
287
- // SOCIAL NETWORKS
288
- $_POST['options']['modules']['social_status'] = (int) $_POST['options']['modules']['social_status'];
289
- $_POST['options']['modules']['social_target'] = (int) $_POST['options']['modules']['social_target'];
290
- $_POST['options']['modules']['social_github'] = sanitize_text_field($_POST['options']['modules']['social_github']);
291
- $_POST['options']['modules']['social_dribbble'] = sanitize_text_field($_POST['options']['modules']['social_dribbble']);
292
- $_POST['options']['modules']['social_twitter'] = sanitize_text_field($_POST['options']['modules']['social_twitter']);
293
- $_POST['options']['modules']['social_facebook'] = sanitize_text_field($_POST['options']['modules']['social_facebook']);
294
- $_POST['options']['modules']['social_pinterest'] = sanitize_text_field($_POST['options']['modules']['social_pinterest']);
295
- $_POST['options']['modules']['social_google+'] = sanitize_text_field($_POST['options']['modules']['social_google+']);
296
- $_POST['options']['modules']['social_linkedin'] = sanitize_text_field($_POST['options']['modules']['social_linkedin']);
297
-
298
- // CONTACT
299
- $_POST['options']['modules']['contact_status'] = (int) $_POST['options']['modules']['contact_status'];
300
- $_POST['options']['modules']['contact_email'] = sanitize_text_field($_POST['options']['modules']['contact_email']);
301
- $_POST['options']['modules']['contact_effects'] = sanitize_text_field($_POST['options']['modules']['contact_effects']);
302
-
303
- // GOOGLE ANALYTICS
304
- $_POST['options']['modules']['ga_status'] = (int) $_POST['options']['modules']['ga_status'];
305
- $_POST['options']['modules']['ga_code'] = wp_kses(trim($_POST['options']['modules']['ga_code']), array('script' => array()));
306
-
307
- $_POST['options']['modules']['custom_css'] = $custom_css;
308
-
309
- // delete cache when is activated
310
- if (!empty($this->plugin_settings['general']['status']) && $this->plugin_settings['general']['status'] == 1) {
311
- $this->delete_cache();
312
- }
313
- break;
314
- }
315
-
316
- $this->plugin_settings[$tab] = $_POST['options'][$tab];
317
- update_option('wpmm_settings', $this->plugin_settings);
318
- }
319
- }
320
-
321
- /**
322
- * Add new safe inline style css (use by wp_kses_attr in wp_kses_post)
323
- * - bug discovered by cokemorgan: https://github.com/Designmodocom/WP-Maintenance-Mode/issues/56
324
- *
325
- * @since 2.0.3
326
- * @param array $properties
327
- * @return array
328
- */
329
- public function add_safe_style_css($properties) {
330
- $new_properties = array(
331
- 'min-height',
332
- 'max-height',
333
- 'min-width',
334
- 'max-width'
335
- );
336
-
337
- return array_merge($new_properties, $properties);
338
- }
339
-
340
- /**
341
- * Delete cache if any cache plugin (wp_cache or w3tc) is activated
342
- *
343
- * @since 2.0.1
344
- */
345
- public function delete_cache() {
346
- // Super Cache Plugin
347
- if (function_exists('wp_cache_clear_cache')) {
348
- wp_cache_clear_cache(is_multisite() && is_plugin_active_for_network($this->plugin_basename) ? get_current_blog_id() : '');
349
- }
350
-
351
- // W3 Total Cache Plugin
352
- if (function_exists('w3tc_pgcache_flush')) {
353
- w3tc_pgcache_flush();
354
- }
355
- }
356
-
357
- /**
358
- * Add settings link
359
- *
360
- * @since 2.0.0
361
- * @param array $links
362
- * @return array
363
- */
364
- public function add_settings_link($links) {
365
- return array_merge(
366
- array(
367
- 'wpmm_settings' => '<a href="' . admin_url('options-general.php?page=' . $this->plugin_slug) . '">' . __('Settings', $this->plugin_slug) . '</a>'
368
- ), $links
369
- );
370
- }
371
-
372
- /**
373
- * Add notices - will be displayed on dashboard
374
- *
375
- * @since 2.0.0
376
- */
377
- public function add_notices() {
378
- $screen = get_current_screen();
379
- $notices = array();
380
-
381
- if ($this->plugin_screen_hook_suffix != $screen->id) {
382
- // notice if plugin is activated
383
- if ($this->plugin_settings['general']['status'] == 1 && $this->plugin_settings['general']['notice'] == 1) {
384
- $notices[] = array(
385
- 'class' => 'error',
386
- 'msg' => sprintf(__('The Maintenance Mode is <strong>active</strong>. Please don\'t forget to <a href="%s">deactivate</a> as soon as you are done.', $this->plugin_slug), admin_url('options-general.php?page=' . $this->plugin_slug))
387
- );
388
- }
389
-
390
- // show notice if plugin has a notice saved
391
- $wpmm_notice = get_option('wpmm_notice');
392
- if (!empty($wpmm_notice) && is_array($wpmm_notice)) {
393
- $notices[] = $wpmm_notice;
394
- }
395
-
396
- // template
397
- include_once(WPMM_VIEWS_PATH . 'notice.php');
398
- } else {
399
- // delete wpmm_notice
400
- delete_option('wpmm_notice');
401
- }
402
- }
403
-
404
- }
405
-
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
406
  }
1
+ <?php
2
+
3
+ if (!class_exists('WP_Maintenance_Mode_Admin')) {
4
+
5
+ class WP_Maintenance_Mode_Admin {
6
+
7
+ protected static $instance = null;
8
+ protected $plugin_slug;
9
+ protected $plugin_settings;
10
+ protected $plugin_default_settings;
11
+ protected $plugin_basename;
12
+ protected $plugin_screen_hook_suffix = null;
13
+
14
+ private $dismissed_notices_key = 'wpmm_dismissed_notices';
15
+
16
+ private function __construct() {
17
+ $plugin = WP_Maintenance_Mode::get_instance();
18
+ $this->plugin_slug = $plugin->get_plugin_slug();
19
+ $this->plugin_settings = $plugin->get_plugin_settings();
20
+ $this->plugin_default_settings = $plugin->default_settings();
21
+ $this->plugin_basename = plugin_basename(WPMM_PATH . $this->plugin_slug . '.php');
22
+
23
+ // Load admin style sheet and JavaScript.
24
+ add_action('admin_enqueue_scripts', array($this, 'enqueue_admin_styles'));
25
+ add_action('admin_enqueue_scripts', array($this, 'enqueue_admin_scripts'));
26
+
27
+ // Add the options page and menu item.
28
+ add_action('admin_menu', array($this, 'add_plugin_menu'));
29
+
30
+ // Add an action link pointing to the options page
31
+ if (is_multisite() && is_plugin_active_for_network($this->plugin_basename)) {
32
+ // settings link will point to admin_url of the main blog, not to network_admin_url
33
+ add_filter('network_admin_plugin_action_links_' . $this->plugin_basename, array($this, 'add_settings_link'));
34
+ } else {
35
+ add_filter('plugin_action_links_' . $this->plugin_basename, array($this, 'add_settings_link'));
36
+ }
37
+
38
+ // Add admin notices
39
+ add_action('admin_notices', array($this, 'add_notices'));
40
+
41
+ // Add ajax methods
42
+ add_action('wp_ajax_wpmm_subscribers_export', array($this, 'subscribers_export'));
43
+ add_action('wp_ajax_wpmm_subscribers_empty_list', array($this, 'subscribers_empty_list'));
44
+ add_action('wp_ajax_wpmm_dismiss_notices', array($this, 'dismiss_notices'));
45
+ add_action('wp_ajax_wpmm_reset_settings', array($this, 'reset_settings'));
46
+ }
47
+
48
+ public static function get_instance() {
49
+ if (null == self::$instance) {
50
+ self::$instance = new self;
51
+ }
52
+
53
+ return self::$instance;
54
+ }
55
+
56
+ /**
57
+ * Load CSS files
58
+ *
59
+ * @since 2.0.0
60
+ * @global object $wp_scripts
61
+ * @return type
62
+ */
63
+ public function enqueue_admin_styles() {
64
+ global $wp_scripts;
65
+
66
+ if (!isset($this->plugin_screen_hook_suffix)) {
67
+ return;
68
+ }
69
+
70
+ $screen = get_current_screen();
71
+ if ($this->plugin_screen_hook_suffix == $screen->id) {
72
+ $ui = $wp_scripts->query('jquery-ui-core');
73
+
74
+ wp_enqueue_style($this->plugin_slug . '-admin-jquery-ui-styles', '//ajax.googleapis.com/ajax/libs/jqueryui/' . (!empty($ui->ver) ? $ui->ver : '1.11.4') . '/themes/smoothness/jquery-ui' . WPMM_ASSETS_SUFFIX . '.css', array(), WP_Maintenance_Mode::VERSION);
75
+ wp_enqueue_style($this->plugin_slug . '-admin-chosen', WPMM_CSS_URL . 'chosen' . WPMM_ASSETS_SUFFIX . '.css', array(), WP_Maintenance_Mode::VERSION);
76
+ wp_enqueue_style($this->plugin_slug . '-admin-timepicker-addon-script', WPMM_CSS_URL . 'jquery-ui-timepicker-addon' . WPMM_ASSETS_SUFFIX . '.css', array(), WP_Maintenance_Mode::VERSION);
77
+ wp_enqueue_style($this->plugin_slug . '-admin-styles', WPMM_CSS_URL . 'style-admin' . WPMM_ASSETS_SUFFIX . '.css', array('wp-color-picker'), WP_Maintenance_Mode::VERSION);
78
+ }
79
+ }
80
+
81
+ /**
82
+ * Load JS files and their dependencies
83
+ *
84
+ * @since 2.0.0
85
+ * @return
86
+ */
87
+ public function enqueue_admin_scripts() {
88
+ if (!isset($this->plugin_screen_hook_suffix)) {
89
+ return;
90
+ }
91
+
92
+ $screen = get_current_screen();
93
+ if ($this->plugin_screen_hook_suffix == $screen->id) {
94
+ wp_enqueue_media();
95
+ wp_enqueue_script($this->plugin_slug . '-admin-timepicker-addon-script', WPMM_JS_URL . 'jquery-ui-timepicker-addon' . WPMM_ASSETS_SUFFIX . '.js', array('jquery', 'jquery-ui-datepicker'), WP_Maintenance_Mode::VERSION);
96
+ wp_enqueue_script($this->plugin_slug . '-admin-script', WPMM_JS_URL . 'scripts-admin' . WPMM_ASSETS_SUFFIX . '.js', array('jquery', 'wp-color-picker'), WP_Maintenance_Mode::VERSION);
97
+ wp_enqueue_script($this->plugin_slug . '-admin-chosen', WPMM_JS_URL . 'chosen.jquery' . WPMM_ASSETS_SUFFIX . '.js', array(), WP_Maintenance_Mode::VERSION);
98
+ wp_localize_script($this->plugin_slug . '-admin-script', 'wpmm_vars', array(
99
+ 'ajax_url' => admin_url('admin-ajax.php'),
100
+ 'plugin_url' => admin_url('options-general.php?page=' . $this->plugin_slug)
101
+ ));
102
+ }
103
+
104
+ // For global actions like dismiss notices
105
+ wp_enqueue_script($this->plugin_slug . '-admin-global', WPMM_JS_URL . 'scripts-admin-global' . WPMM_ASSETS_SUFFIX . '.js', array('jquery'), WP_Maintenance_Mode::VERSION);
106
+ }
107
+
108
+ /**
109
+ * Export subscribers list in CSV format (refactor @ 2.0.4)
110
+ *
111
+ * @since 2.0.0
112
+ * @global object $wpdb
113
+ * @throws Exception
114
+ */
115
+ public function subscribers_export() {
116
+ global $wpdb;
117
+
118
+ try {
119
+ // check capabilities
120
+ if (!current_user_can('manage_options')) {
121
+ throw new Exception(__('You do not have access to this resource.', $this->plugin_slug));
122
+ }
123
+
124
+ // get subscribers and export
125
+ $results = $wpdb->get_results("SELECT email, insert_date FROM {$wpdb->prefix}wpmm_subscribers ORDER BY id_subscriber DESC", ARRAY_A);
126
+ if (!empty($results)) {
127
+ $filename = 'subscribers-list-' . date('Y-m-d') . '.csv';
128
+
129
+ header('Content-Type: text/csv');
130
+ header('Content-Disposition: attachment;filename=' . $filename);
131
+
132
+ $fp = fopen('php://output', 'w');
133
+
134
+ fputcsv($fp, array('email', 'insert_date'));
135
+ foreach ($results as $item) {
136
+ fputcsv($fp, $item);
137
+ }
138
+
139
+ fclose($fp);
140
+ }
141
+ } catch (Exception $ex) {
142
+ wp_send_json_error($ex->getMessage());
143
+ }
144
+ }
145
+
146
+ /**
147
+ * Empty subscribers list
148
+ *
149
+ * @since 2.0.4
150
+ * @global object $wpdb
151
+ * @throws Exception
152
+ */
153
+ public function subscribers_empty_list() {
154
+ global $wpdb;
155
+
156
+ try {
157
+ // check capabilities
158
+ if (!current_user_can('manage_options')) {
159
+ throw new Exception(__('You do not have access to this resource.', $this->plugin_slug));
160
+ }
161
+
162
+ // delete all subscribers
163
+ $wpdb->query("DELETE FROM {$wpdb->prefix}wpmm_subscribers");
164
+
165
+ wp_send_json_success(sprintf(__('You have %d subscriber(s)', $this->plugin_slug), 0));
166
+ } catch (Exception $ex) {
167
+ wp_send_json_error($ex->getMessage());
168
+ }
169
+ }
170
+
171
+ /**
172
+ * Reset settings (refactor @ 2.0.4)
173
+ *
174
+ * @since 2.0.0
175
+ * @throws Exception
176
+ */
177
+ public function reset_settings() {
178
+ try {
179
+ // check capabilities
180
+ if (!current_user_can('manage_options')) {
181
+ throw new Exception(__('You do not have access to this resource.', $this->plugin_slug));
182
+ }
183
+
184
+ // check tab existence
185
+ if (empty($_REQUEST['tab'])) {
186
+ throw new Exception(__('The tab slug must not be empty.', $this->plugin_slug));
187
+ }
188
+
189
+ $tab = $_REQUEST['tab'];
190
+ if (empty($this->plugin_default_settings[$tab])) {
191
+ throw new Exception(__('The tab slug must exist.', $this->plugin_slug));
192
+ }
193
+
194
+ // update options using the default values
195
+ $this->plugin_settings[$tab] = $this->plugin_default_settings[$tab];
196
+ update_option('wpmm_settings', $this->plugin_settings);
197
+
198
+ wp_send_json_success();
199
+ } catch (Exception $ex) {
200
+ wp_send_json_error($ex->getMessage());
201
+ }
202
+ }
203
+
204
+ /**
205
+ * Add plugin in Settings menu
206
+ *
207
+ * @since 2.0.0
208
+ */
209
+ public function add_plugin_menu() {
210
+ $this->plugin_screen_hook_suffix = add_options_page(
211
+ __('WP Maintenance Mode', $this->plugin_slug), __('WP Maintenance Mode', $this->plugin_slug), 'manage_options', $this->plugin_slug, array($this, 'display_plugin_settings')
212
+ );
213
+ }
214
+
215
+ /**
216
+ * Settings page
217
+ *
218
+ * @since 2.0.0
219
+ * @global object $wp_roles
220
+ */
221
+ public function display_plugin_settings() {
222
+ global $wp_roles;
223
+
224
+ // save settings
225
+ $this->save_plugin_settings();
226
+
227
+ // show settings
228
+ include_once(WPMM_VIEWS_PATH . 'settings.php');
229
+ }
230
+
231
+ /**
232
+ * Save settings
233
+ *
234
+ * @since 2.0.0
235
+ */
236
+ public function save_plugin_settings() {
237
+ if (!empty($_POST) && !empty($_POST['tab'])) {
238
+ if (!wp_verify_nonce($_POST['_wpnonce'], 'tab-' . $_POST['tab'])) {
239
+ die('Security check!');
240
+ }
241
+
242
+ // DO SOME SANITIZATIONS
243
+ $tab = $_POST['tab'];
244
+ switch ($tab) {
245
+ case 'general':
246
+ $_POST['options']['general']['status'] = (int) $_POST['options']['general']['status'];
247
+ if (!empty($_POST['options']['general']['status']) && $_POST['options']['general']['status'] == 1) {
248
+ $_POST['options']['general']['status_date'] = date('Y-m-d H:i:s');
249
+ }
250
+ $_POST['options']['general']['bypass_bots'] = (int) $_POST['options']['general']['bypass_bots'];
251
+ $_POST['options']['general']['backend_role'] = !empty($_POST['options']['general']['backend_role']) ? $_POST['options']['general']['backend_role'] : array();
252
+ $_POST['options']['general']['frontend_role'] = !empty($_POST['options']['general']['frontend_role']) ? $_POST['options']['general']['frontend_role'] : array();
253
+ $_POST['options']['general']['meta_robots'] = (int) $_POST['options']['general']['meta_robots'];
254
+ $_POST['options']['general']['redirection'] = esc_url($_POST['options']['general']['redirection']);
255
+ if (!empty($_POST['options']['general']['exclude'])) {
256
+ $exclude_array = explode("\n", $_POST['options']['general']['exclude']);
257
+ // we need to be sure that empty lines will not be saved
258
+ $_POST['options']['general']['exclude'] = array_filter(array_map('trim', $exclude_array));
259
+ } else {
260
+ $_POST['options']['general']['exclude'] = array();
261
+ }
262
+ $_POST['options']['general']['notice'] = (int) $_POST['options']['general']['notice'];
263
+ $_POST['options']['general']['admin_link'] = (int) $_POST['options']['general']['admin_link'];
264
+
265
+ // delete cache when is already activated, when is activated and when is deactivated
266
+ if (
267
+ isset($this->plugin_settings['general']['status']) && isset($_POST['options']['general']['status']) &&
268
+ (
269
+ ($this->plugin_settings['general']['status'] == 1 && in_array($_POST['options']['general']['status'], array(0, 1))) ||
270
+ ($this->plugin_settings['general']['status'] == 0 && $_POST['options']['general']['status'] == 1)
271
+ )
272
+ ) {
273
+ $this->delete_cache();
274
+ }
275
+ break;
276
+ case 'design':
277
+ $custom_css = array();
278
+
279
+ // CONTENT & CUSTOM CSS
280
+ $_POST['options']['design']['title'] = sanitize_text_field($_POST['options']['design']['title']);
281
+ $_POST['options']['design']['heading'] = sanitize_text_field($_POST['options']['design']['heading']);
282
+ if (!empty($_POST['options']['design']['heading_color'])) {
283
+ $_POST['options']['design']['heading_color'] = sanitize_text_field($_POST['options']['design']['heading_color']);
284
+ $custom_css['heading_color'] = '.wrap h1 { color: ' . $_POST['options']['design']['heading_color'] . '; }';
285
+ }
286
+ add_filter('safe_style_css', array($this, 'add_safe_style_css')); // add before we save
287
+ $_POST['options']['design']['text'] = wp_kses_post($_POST['options']['design']['text']);
288
+ remove_filter('safe_style_css', array($this, 'add_safe_style_css')); // remove after we save
289
+
290
+ if (!empty($_POST['options']['design']['text_color'])) {
291
+ $_POST['options']['design']['text_color'] = sanitize_text_field($_POST['options']['design']['text_color']);
292
+ $custom_css['text_color'] = '.wrap h2 { color: ' . $_POST['options']['design']['text_color'] . '; }';
293
+ }
294
+
295
+ // BACKGROUND & CUSTOM CSS
296
+ if (!empty($_POST['options']['design']['bg_type'])) {
297
+ $_POST['options']['design']['bg_type'] = sanitize_text_field($_POST['options']['design']['bg_type']);
298
+
299
+ if ($_POST['options']['design']['bg_type'] == 'color' && !empty($_POST['options']['design']['bg_color'])) {
300
+ $_POST['options']['design']['bg_color'] = sanitize_text_field($_POST['options']['design']['bg_color']);
301
+ $custom_css['bg_color'] = 'body { background-color: ' . $_POST['options']['design']['bg_color'] . '; }';
302
+ }
303
+
304
+ if ($_POST['options']['design']['bg_type'] == 'custom' && !empty($_POST['options']['design']['bg_custom'])) {
305
+ $_POST['options']['design']['bg_custom'] = esc_url($_POST['options']['design']['bg_custom']);
306
+ $custom_css['bg_url'] = '.background { background: url(' . $_POST['options']['design']['bg_custom'] . ') no-repeat center top fixed; background-size: cover; }';
307
+ }
308
+
309
+ if ($_POST['options']['design']['bg_type'] == 'predefined' && !empty($_POST['options']['design']['bg_predefined'])) {
310
+ $_POST['options']['design']['bg_predefined'] = sanitize_text_field($_POST['options']['design']['bg_predefined']);
311
+ $custom_css['bg_url'] = '.background { background: url(' . esc_url(WPMM_URL . 'assets/images/backgrounds/' . $_POST['options']['design']['bg_predefined']) . ') no-repeat center top fixed; background-size: cover; }';
312
+ }
313
+ }
314
+
315
+ $_POST['options']['design']['custom_css'] = $custom_css;
316
+
317
+ // delete cache when is activated
318
+ if (!empty($this->plugin_settings['general']['status']) && $this->plugin_settings['general']['status'] == 1) {
319
+ $this->delete_cache();
320
+ }
321
+ break;
322
+ case 'modules':
323
+ $custom_css = array();
324
+
325
+ // COUNTDOWN & CUSTOM CSS
326
+ $_POST['options']['modules']['countdown_status'] = (int) $_POST['options']['modules']['countdown_status'];
327
+ $_POST['options']['modules']['countdown_start'] = sanitize_text_field($_POST['options']['modules']['countdown_start']);
328
+ $_POST['options']['modules']['countdown_details'] = array_map('trim', $_POST['options']['modules']['countdown_details']);
329
+ $_POST['options']['modules']['countdown_details']['days'] = isset($_POST['options']['modules']['countdown_details']['days']) && is_numeric($_POST['options']['modules']['countdown_details']['days']) ? $_POST['options']['modules']['countdown_details']['days'] : 0;
330
+ $_POST['options']['modules']['countdown_details']['hours'] = isset($_POST['options']['modules']['countdown_details']['hours']) && is_numeric($_POST['options']['modules']['countdown_details']['hours']) ? $_POST['options']['modules']['countdown_details']['hours'] : 1;
331
+ $_POST['options']['modules']['countdown_details']['minutes'] = isset($_POST['options']['modules']['countdown_details']['minutes']) && is_numeric($_POST['options']['modules']['countdown_details']['minutes']) ? $_POST['options']['modules']['countdown_details']['minutes'] : 0;
332
+ if (!empty($_POST['options']['modules']['countdown_color'])) {
333
+ $_POST['options']['modules']['countdown_color'] = sanitize_text_field($_POST['options']['modules']['countdown_color']);
334
+ $custom_css['countdown_color'] = '.wrap .countdown span { color: ' . $_POST['options']['modules']['countdown_color'] . '; }';
335
+ }
336
+
337
+ // SUBSCRIBE & CUSTOM CSS
338
+ $_POST['options']['modules']['subscribe_status'] = (int) $_POST['options']['modules']['subscribe_status'];
339
+ $_POST['options']['modules']['subscribe_text'] = sanitize_text_field($_POST['options']['modules']['subscribe_text']);
340
+ if (!empty($_POST['options']['modules']['subscribe_text_color'])) {
341
+ $_POST['options']['modules']['subscribe_text_color'] = sanitize_text_field($_POST['options']['modules']['subscribe_text_color']);
342
+ $custom_css['subscribe_text_color'] = '.wrap h3, .wrap .subscribe_wrapper { color: ' . $_POST['options']['modules']['subscribe_text_color'] . '; }';
343
+ }
344
+
345
+ // SOCIAL NETWORKS
346
+ $_POST['options']['modules']['social_status'] = (int) $_POST['options']['modules']['social_status'];
347
+ $_POST['options']['modules']['social_target'] = (int) $_POST['options']['modules']['social_target'];
348
+ $_POST['options']['modules']['social_github'] = sanitize_text_field($_POST['options']['modules']['social_github']);
349
+ $_POST['options']['modules']['social_dribbble'] = sanitize_text_field($_POST['options']['modules']['social_dribbble']);
350
+ $_POST['options']['modules']['social_twitter'] = sanitize_text_field($_POST['options']['modules']['social_twitter']);
351
+ $_POST['options']['modules']['social_facebook'] = sanitize_text_field($_POST['options']['modules']['social_facebook']);
352
+ $_POST['options']['modules']['social_pinterest'] = sanitize_text_field($_POST['options']['modules']['social_pinterest']);
353
+ $_POST['options']['modules']['social_google+'] = sanitize_text_field($_POST['options']['modules']['social_google+']);
354
+ $_POST['options']['modules']['social_linkedin'] = sanitize_text_field($_POST['options']['modules']['social_linkedin']);
355
+
356
+ // CONTACT
357
+ $_POST['options']['modules']['contact_status'] = (int) $_POST['options']['modules']['contact_status'];
358
+ $_POST['options']['modules']['contact_email'] = sanitize_text_field($_POST['options']['modules']['contact_email']);
359
+ $_POST['options']['modules']['contact_effects'] = sanitize_text_field($_POST['options']['modules']['contact_effects']);
360
+
361
+ // GOOGLE ANALYTICS
362
+ $_POST['options']['modules']['ga_status'] = (int) $_POST['options']['modules']['ga_status'];
363
+ $_POST['options']['modules']['ga_code'] = wp_kses(trim($_POST['options']['modules']['ga_code']), array('script' => array()));
364
+
365
+ $_POST['options']['modules']['custom_css'] = $custom_css;
366
+
367
+ // delete cache when is activated
368
+ if (!empty($this->plugin_settings['general']['status']) && $this->plugin_settings['general']['status'] == 1) {
369
+ $this->delete_cache();
370
+ }
371
+ break;
372
+ }
373
+
374
+ $this->plugin_settings[$tab] = $_POST['options'][$tab];
375
+ update_option('wpmm_settings', $this->plugin_settings);
376
+ }
377
+ }
378
+
379
+ /**
380
+ * Add new safe inline style css (use by wp_kses_attr in wp_kses_post)
381
+ * - bug discovered by cokemorgan: https://github.com/Designmodocom/WP-Maintenance-Mode/issues/56
382
+ *
383
+ * @since 2.0.3
384
+ * @param array $properties
385
+ * @return array
386
+ */
387
+ public function add_safe_style_css($properties) {
388
+ $new_properties = array(
389
+ 'min-height',
390
+ 'max-height',
391
+ 'min-width',
392
+ 'max-width'
393
+ );
394
+
395
+ return array_merge($new_properties, $properties);
396
+ }
397
+
398
+ /**
399
+ * Delete cache if any cache plugin (wp_cache or w3tc) is activated
400
+ *
401
+ * @since 2.0.1
402
+ */
403
+ public function delete_cache() {
404
+ // Super Cache Plugin
405
+ if (function_exists('wp_cache_clear_cache')) {
406
+ wp_cache_clear_cache(is_multisite() && is_plugin_active_for_network($this->plugin_basename) ? get_current_blog_id() : '');
407
+ }
408
+
409
+ // W3 Total Cache Plugin
410
+ if (function_exists('w3tc_pgcache_flush')) {
411
+ w3tc_pgcache_flush();
412
+ }
413
+ }
414
+
415
+ /**
416
+ * Add settings link
417
+ *
418
+ * @since 2.0.0
419
+ * @param array $links
420
+ * @return array
421
+ */
422
+ public function add_settings_link($links) {
423
+ return array_merge(
424
+ array(
425
+ 'wpmm_settings' => '<a href="' . admin_url('options-general.php?page=' . $this->plugin_slug) . '">' . __('Settings', $this->plugin_slug) . '</a>'
426
+ ), $links
427
+ );
428
+ }
429
+
430
+ /**
431
+ * Add notices - will be displayed on dashboard
432
+ *
433
+ * @since 2.0.0
434
+ */
435
+ public function add_notices() {
436
+ $screen = get_current_screen();
437
+ $notices = array();
438
+
439
+ if ($this->plugin_screen_hook_suffix != $screen->id) {
440
+ // notice if plugin is activated
441
+ if ($this->plugin_settings['general']['status'] == 1 && $this->plugin_settings['general']['notice'] == 1) {
442
+ $notices['is_activated'] = array(
443
+ 'class' => 'error',
444
+ 'msg' => sprintf(__('The Maintenance Mode is <strong>active</strong>. Please don\'t forget to <a href="%s">deactivate</a> as soon as you are done.', $this->plugin_slug), admin_url('options-general.php?page=' . $this->plugin_slug))
445
+ );
446
+ }
447
+
448
+ // show notice if plugin has a notice saved
449
+ $wpmm_notice = get_option('wpmm_notice');
450
+ if (!empty($wpmm_notice) && is_array($wpmm_notice)) {
451
+ $notices['other'] = $wpmm_notice;
452
+ }
453
+ } else {
454
+ // delete wpmm_notice
455
+ delete_option('wpmm_notice');
456
+ }
457
+
458
+ // notice promo for codepad
459
+ ob_start();
460
+ include_once(WPMM_VIEWS_PATH . 'promo-codepad.php');
461
+ $notices['promo_codepad'] = array(
462
+ 'class' => 'wpmm_notices updated notice' . ($this->plugin_screen_hook_suffix != $screen->id ? ' is-dismissible' : ''),
463
+ 'msg' => ob_get_clean()
464
+ );
465
+
466
+ // get dismissed notices
467
+ $dismissed_notices = $this->get_dismissed_notices(get_current_user_id());
468
+
469
+ // template
470
+ include_once(WPMM_VIEWS_PATH . 'notice.php');
471
+ }
472
+
473
+ /**
474
+ * Dismiss plugin notices via AJAX
475
+ *
476
+ * @throws Exception
477
+ */
478
+ public function dismiss_notices() {
479
+ try {
480
+ if (empty($_POST['notice_key'])) {
481
+ throw new Exception(__('Notice key cannot be empty.', $this->plugin_slug));
482
+ }
483
+
484
+ // save new notice key
485
+ $notice_key = sanitize_text_field($_POST['notice_key']);
486
+ $this->save_dismissed_notices(get_current_user_id(), $notice_key);
487
+
488
+ wp_send_json_success();
489
+ } catch (Exception $ex) {
490
+ wp_send_json_error($ex->getMessage());
491
+ }
492
+ }
493
+
494
+ /**
495
+ * Get dismissed notices
496
+ *
497
+ * @param int $user_id
498
+ * @return array
499
+ */
500
+ public function get_dismissed_notices($user_id) {
501
+ $dismissed_notices = get_user_meta($user_id, $this->dismissed_notices_key, true);
502
+
503
+ return array_filter(explode(',', $dismissed_notices), 'trim');
504
+ }
505
+
506
+ /**
507
+ * Save dismissed notices
508
+ * - save as string because of http://wordpress.stackexchange.com/questions/13353/problem-storing-arrays-with-update-user-meta
509
+ *
510
+ * @param int $user_id
511
+ * @param string $notice_key
512
+ */
513
+ public function save_dismissed_notices($user_id, $notice_key) {
514
+ $dismissed_notices = $this->get_dismissed_notices($user_id);
515
+ $dismissed_notices[] = $notice_key;
516
+
517
+ update_user_meta($user_id, $this->dismissed_notices_key, implode(',', $dismissed_notices));
518
+ }
519
+
520
+ }
521
+
522
  }
includes/classes/wp-maintenance-mode-shortcodes.php CHANGED
@@ -1,76 +1,76 @@
1
- <?php
2
-
3
- if (!class_exists('WP_Maintenance_Mode_Shortcodes')) {
4
- class WP_Maintenance_Mode_Shortcodes {
5
-
6
- /**
7
- * Add shortcodes
8
- *
9
- * @since 2.0.3
10
- */
11
- public static function init() {
12
- $shortcodes = array(
13
- 'loginform' => __CLASS__ . '::loginform'
14
- );
15
-
16
- foreach ($shortcodes as $shortcode => $method) {
17
- add_shortcode($shortcode, $method);
18
- }
19
- }
20
-
21
- /**
22
- * Shortcode Wrapper
23
- *
24
- * @since 2.0.3
25
- * @param string $function
26
- * @param array $atts
27
- * @param array $wrapper
28
- * @return string
29
- */
30
- public static function shortcode_wrapper($function, $atts = array(), $wrapper = array('before' => null, 'after' => null)) {
31
- ob_start();
32
-
33
- echo $wrapper['before'];
34
- call_user_func($function, $atts);
35
- echo $wrapper['after'];
36
-
37
- return ob_get_clean();
38
- }
39
-
40
- /**
41
- * Login form shortcode.
42
- *
43
- * @since 2.0.3
44
- * @param array $atts
45
- * @return string
46
- */
47
- public static function loginform($atts) {
48
- return self::shortcode_wrapper(array('WP_Maintenance_Mode_Shortcode_Login', 'display'), $atts);
49
- }
50
-
51
- }
52
-
53
- }
54
-
55
- if (!class_exists('WP_Maintenance_Mode_Shortcode_Login')) {
56
-
57
- class WP_Maintenance_Mode_Shortcode_Login {
58
-
59
- public function __construct() { }
60
-
61
- /**
62
- * Show login form
63
- *
64
- * @since 2.0.3
65
- * @param array $atts
66
- * @param string $content
67
- */
68
- public static function display($atts) {
69
- extract(shortcode_atts(array('redirect' => ''), $atts));
70
-
71
- include_once(WPMM_VIEWS_PATH . 'loginform.php');
72
- }
73
-
74
- }
75
-
76
- }
1
+ <?php
2
+
3
+ if (!class_exists('WP_Maintenance_Mode_Shortcodes')) {
4
+ class WP_Maintenance_Mode_Shortcodes {
5
+
6
+ /**
7
+ * Add shortcodes
8
+ *
9
+ * @since 2.0.3
10
+ */
11
+ public static function init() {
12
+ $shortcodes = array(
13
+ 'loginform' => __CLASS__ . '::loginform'
14
+ );
15
+
16
+ foreach ($shortcodes as $shortcode => $method) {
17
+ add_shortcode($shortcode, $method);
18
+ }
19
+ }
20
+
21
+ /**
22
+ * Shortcode Wrapper
23
+ *
24
+ * @since 2.0.3
25
+ * @param string $function
26
+ * @param array $atts
27
+ * @param array $wrapper
28
+ * @return string
29
+ */
30
+ public static function shortcode_wrapper($function, $atts = array(), $wrapper = array('before' => null, 'after' => null)) {
31
+ ob_start();
32
+
33
+ echo $wrapper['before'];
34
+ call_user_func($function, $atts);
35
+ echo $wrapper['after'];
36
+
37
+ return ob_get_clean();
38
+ }
39
+
40
+ /**
41
+ * Login form shortcode.
42
+ *
43
+ * @since 2.0.3
44
+ * @param array $atts
45
+ * @return string
46
+ */
47
+ public static function loginform($atts) {
48
+ return self::shortcode_wrapper(array('WP_Maintenance_Mode_Shortcode_Login', 'display'), $atts);
49
+ }
50
+
51
+ }
52
+
53
+ }
54
+
55
+ if (!class_exists('WP_Maintenance_Mode_Shortcode_Login')) {
56
+
57
+ class WP_Maintenance_Mode_Shortcode_Login {
58
+
59
+ public function __construct() { }
60
+
61
+ /**
62
+ * Show login form
63
+ *
64
+ * @since 2.0.3
65
+ * @param array $atts
66
+ * @param string $content
67
+ */
68
+ public static function display($atts) {
69
+ extract(shortcode_atts(array('redirect' => ''), $atts));
70
+
71
+ include_once(WPMM_VIEWS_PATH . 'loginform.php');
72
+ }
73
+
74
+ }
75
+
76
+ }
includes/classes/wp-maintenance-mode.php CHANGED
@@ -1,714 +1,746 @@
1
- <?php
2
- if (!class_exists('WP_Maintenance_Mode')) {
3
-
4
- class WP_Maintenance_Mode {
5
-
6
- const VERSION = '2.0.3';
7
-
8
- protected $plugin_slug = 'wp-maintenance-mode';
9
- protected $plugin_settings;
10
- protected $plugin_basename;
11
- protected static $instance = null;
12
-
13
- private function __construct() {
14
- $this->plugin_settings = get_option('wpmm_settings');
15
- $this->plugin_basename = plugin_basename(WPMM_PATH . $this->plugin_slug . '.php');
16
-
17
- // Load plugin text domain
18
- add_action('init', array($this, 'load_plugin_textdomain'));
19
-
20
- // Add shortcodes
21
- add_action('init', array('WP_Maintenance_Mode_Shortcodes', 'init'));
22
-
23
- // Activate plugin when new blog is added
24
- add_action('wpmu_new_blog', array($this, 'activate_new_site'));
25
-
26
- // Check update
27
- add_action('admin_init', array($this, 'check_update'));
28
-
29
- if (!empty($this->plugin_settings['general']['status']) && $this->plugin_settings['general']['status'] == 1) {
30
- // INIT
31
- add_action('init', array($this, 'init'));
32
-
33
- // Add ajax methods
34
- add_action('wp_ajax_nopriv_wpmm_add_subscriber', array($this, 'add_subscriber'));
35
- add_action('wp_ajax_wpmm_add_subscriber', array($this, 'add_subscriber'));
36
- add_action('wp_ajax_nopriv_wpmm_send_contact', array($this, 'send_contact'));
37
- add_action('wp_ajax_wpmm_send_contact', array($this, 'send_contact'));
38
-
39
- // Redirect
40
- add_action('admin_init', array($this, 'redirect'));
41
-
42
- // Google Analytics tracking script
43
- if (!empty($this->plugin_settings['modules']['ga_status']) && $this->plugin_settings['modules']['ga_status'] == 1 && !empty($this->plugin_settings['modules']['ga_code'])) {
44
- add_action('wpmm_head', create_function('', 'echo "' . stripslashes($this->plugin_settings['modules']['ga_code']) . '";'));
45
- }
46
- }
47
- }
48
-
49
- public static function get_instance() {
50
- if (null == self::$instance) {
51
- self::$instance = new self;
52
- }
53
-
54
- return self::$instance;
55
- }
56
-
57
- /**
58
- * Return plugin slug
59
- *
60
- * @since 2.0.0
61
- * @return string
62
- */
63
- public function get_plugin_slug() {
64
- return $this->plugin_slug;
65
- }
66
-
67
- /**
68
- * Return plugin settings
69
- *
70
- * @since 2.0.0
71
- * @return array
72
- */
73
- public function get_plugin_settings() {
74
- return $this->plugin_settings;
75
- }
76
-
77
- /**
78
- * Return plugin default settings
79
- *
80
- * @since 2.0.0
81
- * @return array
82
- */
83
- public function default_settings() {
84
- return array(
85
- 'general' => array(
86
- 'status' => 0,
87
- 'status_date' => '',
88
- 'bypass_bots' => 0,
89
- 'backend_role' => 'administrator',
90
- 'frontend_role' => 'administrator',
91
- 'meta_robots' => 0,
92
- 'redirection' => '',
93
- 'exclude' => array(
94
- 0 => 'feed',
95
- 1 => 'wp-login',
96
- 2 => 'login'
97
- ),
98
- 'notice' => 1,
99
- 'admin_link' => 0
100
- ),
101
- 'design' => array(
102
- 'title' => __('Maintenance mode', $this->plugin_slug),
103
- 'heading' => __('Maintenance mode', $this->plugin_slug),
104
- 'heading_color' => '',
105
- 'text' => __('<p>Sorry for the inconvenience.<br />Our website is currently undergoing scheduled maintenance.<br />Thank you for your understanding.</p>', $this->plugin_slug),
106
- 'text_color' => '',
107
- 'bg_type' => 'color',
108
- 'bg_color' => '',
109
- 'bg_custom' => '',
110
- 'bg_predefined' => 'bg1.jpg',
111
- 'custom_css' => array()
112
- ),
113
- 'modules' => array(
114
- 'countdown_status' => 0,
115
- 'countdown_start' => date('Y-m-d H:i:s'),
116
- 'countdown_details' => array(
117
- 'days' => 0,
118
- 'hours' => 1,
119
- 'minutes' => 0
120
- ),
121
- 'countdown_color' => '',
122
- 'subscribe_status' => 0,
123
- 'subscribe_text' => __('Notify me when it\'s ready', $this->plugin_slug),
124
- 'subscribe_text_color' => '',
125
- 'social_status' => 0,
126
- 'social_target' => 1,
127
- 'social_github' => '',
128
- 'social_dribbble' => '',
129
- 'social_twitter' => '',
130
- 'social_facebook' => '',
131
- 'social_pinterest' => '',
132
- 'social_google+' => '',
133
- 'social_linkedin' => '',
134
- 'contact_status' => 0,
135
- 'contact_email' => get_option('admin_email') ? get_option('admin_email') : '',
136
- 'contact_effects' => 'move_top|move_bottom',
137
- 'ga_status' => 0,
138
- 'ga_code' => '',
139
- 'custom_css' => array()
140
- )
141
- );
142
- }
143
-
144
- /**
145
- * What to do when the plugin is activated
146
- *
147
- * @since 2.0.0
148
- * @param boolean $network_wide
149
- */
150
- public static function activate($network_wide) {
151
- // because we need translated items when activate :)
152
- load_plugin_textdomain(self::get_instance()->plugin_slug, FALSE, WPMM_LANGUAGES_PATH);
153
-
154
- // do the job
155
- if (function_exists('is_multisite') && is_multisite()) {
156
- if ($network_wide) {
157
- // Get all blog ids
158
- $blog_ids = self::get_blog_ids();
159
- foreach ($blog_ids as $blog_id) {
160
- switch_to_blog($blog_id);
161
- self::single_activate($network_wide);
162
- restore_current_blog();
163
- }
164
- } else {
165
- self::single_activate();
166
- }
167
- } else {
168
- self::single_activate();
169
- }
170
-
171
- // delete old options
172
- delete_option('wp-maintenance-mode');
173
- delete_option('wp-maintenance-mode-msqld');
174
- }
175
-
176
- /**
177
- * Check plugin version for updating process
178
- *
179
- * @since 2.0.3
180
- */
181
- public function check_update() {
182
- $version = get_option('wpmm_version', '0');
183
-
184
- if (!version_compare($version, WP_Maintenance_Mode::VERSION, '=')) {
185
- self::activate(is_multisite() && is_plugin_active_for_network($this->plugin_basename) ? true : false);
186
- }
187
- }
188
-
189
- /**
190
- * What to do when the plugin is deactivated
191
- *
192
- * @since 2.0.0
193
- * @param boolean $network_wide
194
- */
195
- public static function deactivate($network_wide) {
196
- if (function_exists('is_multisite') && is_multisite()) {
197
- if ($network_wide) {
198
- // Get all blog ids
199
- $blog_ids = self::get_blog_ids();
200
- foreach ($blog_ids as $blog_id) {
201
- switch_to_blog($blog_id);
202
- self::single_deactivate();
203
- restore_current_blog();
204
- }
205
- } else {
206
- self::single_deactivate();
207
- }
208
- } else {
209
- self::single_deactivate();
210
- }
211
- }
212
-
213
- /**
214
- * What to do when a new site is activated (multisite env)
215
- *
216
- * @since 2.0.0
217
- * @param int $blog_id.
218
- */
219
- public function activate_new_site($blog_id) {
220
- if (1 !== did_action('wpmu_new_blog')) {
221
- return;
222
- }
223
-
224
- switch_to_blog($blog_id);
225
- self::single_activate();
226
- restore_current_blog();
227
- }
228
-
229
- /**
230
- * What to do on single activate
231
- *
232
- * @since 2.0.0
233
- * @global object $wpdb
234
- * @param boolean $network_wide
235
- */
236
- public static function single_activate($network_wide = false) {
237
- global $wpdb;
238
-
239
- // create wpmm_subscribers table
240
- $sql = "CREATE TABLE IF NOT EXISTS {$wpdb->prefix}wpmm_subscribers (
241
- `id_subscriber` bigint(20) NOT NULL AUTO_INCREMENT,
242
- `email` varchar(50) NOT NULL,
243
- `insert_date` datetime NOT NULL,
244
- PRIMARY KEY (`id_subscriber`)
245
- ) DEFAULT CHARSET=utf8 AUTO_INCREMENT=1;";
246
- require_once(ABSPATH . 'wp-admin/includes/upgrade.php');
247
- dbDelta($sql);
248
-
249
- // get all options for different versions of the plugin
250
- $v2_options = get_option('wpmm_settings');
251
- $old_options = (is_multisite() && $network_wide) ? get_site_option('wp-maintenance-mode') : get_option('wp-maintenance-mode');
252
- $default_options = self::get_instance()->default_settings();
253
-
254
- // set notice if the plugin was installed before & set default settings
255
- if (!empty($old_options) && empty($v2_options)) {
256
- add_option('wpmm_notice', array(
257
- 'class' => 'updated',
258
- 'msg' => sprintf(__('WP Maintenance Mode plugin was relaunched and you MUST revise <a href="%s">settings</a>.', self::get_instance()->plugin_slug), admin_url('options-general.php?page=' . self::get_instance()->plugin_slug))
259
- ));
260
-
261
- // import old options
262
- if (isset($old_options['active'])) {
263
- $default_options['general']['status'] = $old_options['active'];
264
- }
265
- if (isset($old_options['bypass'])) {
266
- $default_options['general']['bypass_bots'] = $old_options['bypass'];
267
- }
268
-
269
- if (!empty($old_options['role'][0])) {
270
- $default_options['general']['backend_role'] = $old_options['role'][0];
271
- }
272
-
273
- if (!empty($old_options['role_frontend'][0])) {
274
- $default_options['general']['frontend_role'] = $old_options['role_frontend'][0];
275
- }
276
-
277
- if (isset($old_options['index'])) {
278
- $default_options['general']['meta_robots'] = $old_options['index'];
279
- }
280
-
281
- if (!empty($old_options['rewrite'])) {
282
- $default_options['general']['redirection'] = $old_options['rewrite'];
283
- }
284
-
285
- if (!empty($old_options['exclude'][0])) {
286
- $default_options['general']['exclude'] = array_unique(array_merge($default_options['general']['exclude'], $old_options['exclude']));
287
- }
288
-
289
- if (isset($old_options['notice'])) {
290
- $default_options['general']['notice'] = $old_options['notice'];
291
- }
292
-
293
- if (isset($old_options['admin_link'])) {
294
- $default_options['general']['admin_link'] = $old_options['admin_link'];
295
- }
296
-
297
- if (!empty($old_options['title'])) {
298
- $default_options['design']['title'] = $old_options['title'];
299
- }
300
-
301
- if (!empty($old_options['heading'])) {
302
- $default_options['design']['heading'] = $old_options['heading'];
303
- }
304
-
305
- if (!empty($old_options['text'])) {
306
- $default_options['design']['text'] = $old_options['text'];
307
- }
308
-
309
- if (isset($old_options['radio'])) {
310
- $default_options['modules']['countdown_status'] = $old_options['radio'];
311
- }
312
-
313
- if (!empty($old_options['date'])) {
314
- $default_options['modules']['countdown_start'] = $old_options['date'];
315
- }
316
-
317
- if (isset($old_options['time']) && isset($old_options['unit'])) {
318
- switch ($old_options['unit']) {
319
- case 0: // seconds
320
- $default_options['modules']['countdown_details'] = array(
321
- 'days' => 0,
322
- 'hours' => 0,
323
- 'minutes' => floor($old_options['time'] / 60)
324
- );
325
- break;
326
- case 1: // minutes
327
- $default_options['modules']['countdown_details'] = array(
328
- 'days' => 0,
329
- 'hours' => 0,
330
- 'minutes' => $old_options['time']
331
- );
332
- break;
333
- case 2: // hours
334
- $default_options['modules']['countdown_details'] = array(
335
- 'days' => 0,
336
- 'hours' => $old_options['time'],
337
- 'minutes' => 0
338
- );
339
- case 3: // days
340
- $default_options['modules']['countdown_details'] = array(
341
- 'days' => $old_options['time'],
342
- 'hours' => 0,
343
- 'minutes' => 0
344
- );
345
- break;
346
- case 4: // weeks
347
- $default_options['modules']['countdown_details'] = array(
348
- 'days' => $old_options['time'] * 7,
349
- 'hours' => 0,
350
- 'minutes' => 0
351
- );
352
- break;
353
- case 5: // months
354
- $default_options['modules']['countdown_details'] = array(
355
- 'days' => $old_options['time'] * 30,
356
- 'hours' => 0,
357
- 'minutes' => 0
358
- );
359
- break;
360
- case 6: // years
361
- $default_options['modules']['countdown_details'] = array(
362
- 'days' => $old_options['time'] * 365,
363
- 'hours' => 0,
364
- 'minutes' => 0
365
- );
366
- break;
367
- default:
368
- break;
369
- }
370
- }
371
- }
372
-
373
- // set options
374
- add_option('wpmm_settings', $default_options);
375
-
376
- // set current version
377
- update_option('wpmm_version', WP_Maintenance_Mode::VERSION);
378
- }
379
-
380
- /**
381
- * What to do on single deactivate
382
- *
383
- * @since 2.0.0
384
- */
385
- public static function single_deactivate() {
386
- // nothing
387
- }
388
-
389
- /**
390
- * Get all blog ids of blogs in the current network
391
- *
392
- * @since 2.0.0
393
- * @return array / false
394
- */
395
- private static function get_blog_ids() {
396
- global $wpdb;
397
-
398
- return $wpdb->get_col($wpdb->prepare("SELECT blog_id FROM {$wpdb->blogs} WHERE archived = %d AND spam = %d AND deleted = %d", array(0, 0, 0)));
399
- }
400
-
401
- /**
402
- * Load languages files
403
- *
404
- * @since 2.0.0
405
- */
406
- public function load_plugin_textdomain() {
407
- $domain = $this->plugin_slug;
408
- $locale = apply_filters('plugin_locale', get_locale(), $domain);
409
-
410
- load_textdomain($domain, trailingslashit(WP_LANG_DIR) . $domain . '/' . $domain . '-' . $locale . '.mo');
411
- load_plugin_textdomain($domain, FALSE, WPMM_LANGUAGES_PATH);
412
- }
413
-
414
- /**
415
- * Initialize when plugin is activated
416
- *
417
- * @since 2.0.0
418
- */
419
- public function init() {
420
- /**
421
- * CHECKS
422
- */
423
- if (
424
- (!$this->check_user_role()) &&
425
- !strstr($_SERVER['PHP_SELF'], 'wp-cron.php') &&
426
- !strstr($_SERVER['PHP_SELF'], 'wp-login.php') &&
427
- !strstr($_SERVER['PHP_SELF'], 'wp-admin/') &&
428
- !strstr($_SERVER['PHP_SELF'], 'async-upload.php') &&
429
- !(strstr($_SERVER['PHP_SELF'], 'upgrade.php') && $this->check_user_role()) &&
430
- !strstr($_SERVER['PHP_SELF'], '/plugins/') &&
431
- !strstr($_SERVER['PHP_SELF'], '/xmlrpc.php') &&
432
- !$this->check_exclude() &&
433
- !$this->check_search_bots()
434
- ) {
435
- // HEADER STUFF
436
- $protocol = !empty($_SERVER['SERVER_PROTOCOL']) && in_array($_SERVER['SERVER_PROTOCOL'], array('HTTP/1.1', 'HTTP/1.0')) ? $_SERVER['SERVER_PROTOCOL'] : 'HTTP/1.0';
437
- $charset = get_bloginfo('charset') ? get_bloginfo('charset') : 'UTF-8';
438
- $status_code = (int) apply_filters('wp_maintenance_mode_status_code', 503); // this hook will be removed in the next versions
439
- $status_code = (int) apply_filters('wpmm_status_code', 503);
440
- $backtime_seconds = $this->calculate_backtime();
441
- $backtime = (int) apply_filters('wpmm_backtime', $backtime_seconds);
442
-
443
- // META STUFF
444
- $title = !empty($this->plugin_settings['design']['title']) ? $this->plugin_settings['design']['title'] : get_bloginfo('name') . ' - ' . __('Maintenance Mode', $this->plugin_slug);
445
- $title = apply_filters('wm_title', $title); // this hook will be removed in the next versions
446
- $title = apply_filters('wpmm_meta_title', $title);
447
-
448
- $robots = $this->plugin_settings['general']['meta_robots'] == 1 ? 'noindex, nofollow' : 'index, follow';
449
- $robots = apply_filters('wpmm_meta_robots', $robots);
450
-
451
- $author = apply_filters('wm_meta_author', 'Designmodo'); // this hook will be removed in the next versions
452
- $author = apply_filters('wpmm_meta_author', 'Designmodo');
453
-
454
- $description = get_bloginfo('name') . ' - ' . get_bloginfo('description');
455
- $description = apply_filters('wm_meta_description', $description); // this hook will be removed in the next versions
456
- $description = apply_filters('wpmm_meta_description', $description);
457
-
458
- $keywords = __('Maintenance Mode', $this->plugin_slug);
459
- $keywords = apply_filters('wm_meta_keywords', $keywords); // this hook will be removed in the next versions
460
- $keywords = apply_filters('wpmm_meta_keywords', $keywords);
461
-
462
- // CSS STUFF
463
- $body_classes = !empty($this->plugin_settings['design']['bg_type']) && $this->plugin_settings['design']['bg_type'] != 'color' ? 'background' : '';
464
- $custom_css_design = !empty($this->plugin_settings['design']['custom_css']) && is_array($this->plugin_settings['design']['custom_css']) ? $this->plugin_settings['design']['custom_css'] : array();
465
- $custom_css_modules = !empty($this->plugin_settings['modules']['custom_css']) && is_array($this->plugin_settings['modules']['custom_css']) ? $this->plugin_settings['modules']['custom_css'] : array();
466
- $custom_css = array_merge($custom_css_design, $custom_css_modules);
467
-
468
- // CONTENT
469
- $heading = !empty($this->plugin_settings['design']['heading']) ? $this->plugin_settings['design']['heading'] : '';
470
- $heading = apply_filters('wm_heading', $heading); // this hook will be removed in the next versions
471
- $heading = apply_filters('wpmm_heading', $heading);
472
-
473
- $text = !empty($this->plugin_settings['design']['text']) ? $this->plugin_settings['design']['text'] : '';
474
- $text = apply_filters('wpmm_text', do_shortcode($text));
475
-
476
- // COUNTDOWN
477
- $countdown_start = !empty($this->plugin_settings['modules']['countdown_start']) ? $this->plugin_settings['modules']['countdown_start'] : $this->plugin_settings['general']['status_data'];
478
- $countdown_end = strtotime($countdown_start . ' +' . $backtime_seconds . ' seconds');
479
-
480
- // JS FILES
481
- $wp_scripts = new WP_Scripts();
482
- $scripts = array(
483
- 'jquery' => !empty($wp_scripts->registered['jquery-core']) ? home_url($wp_scripts->registered['jquery-core']->src) : '//ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js',
484
- 'frontend' => WPMM_JS_URL . 'scripts.js'
485
- );
486
- if (!empty($this->plugin_settings['modules']['countdown_status']) && $this->plugin_settings['modules']['countdown_status'] == 1) {
487
- $scripts['countdown-dependency'] = WPMM_JS_URL . 'jquery.plugin.min.js';
488
- $scripts['countdown'] = WPMM_JS_URL . 'jquery.countdown.min.js';
489
- }
490
- if ((!empty($this->plugin_settings['modules']['contact_status']) && $this->plugin_settings['modules']['contact_status'] == 1) || (!empty($this->plugin_settings['modules']['subscribe_status']) && $this->plugin_settings['modules']['subscribe_status'] == 1)) {
491
- $scripts['validate'] = WPMM_JS_URL . 'jquery.validate.min.js';
492
- }
493
- $scripts = apply_filters('wpmm_scripts', $scripts);
494
-
495
- // CSS FILES
496
- $styles = array(
497
- 'frontend' => WPMM_CSS_URL . 'style.css'
498
- );
499
- $styles = apply_filters('wpmm_styles', $styles);
500
-
501
- nocache_headers();
502
- ob_start();
503
- header("Content-type: text/html; charset=$charset");
504
- header("$protocol $status_code Service Unavailable", TRUE, $status_code);
505
- header("Retry-After: $backtime");
506
-
507
- if (file_exists(WP_CONTENT_DIR . '/wp-maintenance-mode.php')) {
508
- include_once(WP_CONTENT_DIR . '/wp-maintenance-mode.php');
509
- } else {
510
- include_once(WPMM_VIEWS_PATH . 'maintenance.php');
511
- }
512
- ob_flush();
513
-
514
- exit();
515
- }
516
- }
517
-
518
- /**
519
- * Check if the current user has access to backend / frontend based on his role compared with role from settings
520
- *
521
- * @since 2.0.0
522
- * @return boolean
523
- */
524
- public function check_user_role() {
525
- $is_allowed = false;
526
-
527
- if (is_super_admin()) {
528
- $is_allowed = true;
529
- }
530
-
531
- if (is_admin()) {
532
- $role = $this->plugin_settings['general']['backend_role'];
533
- } else {
534
- $role = $this->plugin_settings['general']['frontend_role'];
535
- }
536
-
537
- if (current_user_can($role)) {
538
- $is_allowed = true;
539
- }
540
-
541
- return $is_allowed;
542
- }
543
-
544
- /**
545
- * Calculate backtime based on countdown remaining time if it is activated
546
- *
547
- * @since 2.0.0
548
- * @return int
549
- */
550
- public function calculate_backtime() {
551
- $backtime = 3600;
552
-
553
- if (!empty($this->plugin_settings['modules']['countdown_status']) && $this->plugin_settings['modules']['countdown_status'] == 1) {
554
- $backtime = ($this->plugin_settings['modules']['countdown_details']['days'] * DAY_IN_SECONDS) + ($this->plugin_settings['modules']['countdown_details']['hours'] * HOUR_IN_SECONDS) + ($this->plugin_settings['modules']['countdown_details']['minutes'] * MINUTE_IN_SECONDS);
555
- }
556
-
557
- return $backtime;
558
- }
559
-
560
- /**
561
- * Check if the visitor is a bot (using useragent)
562
- *
563
- * @since 2.0.0
564
- * @return boolean
565
- */
566
- public function check_search_bots() {
567
- $is_search_bots = false;
568
-
569
- if (!empty($this->plugin_settings['general']['bypass_bots']) && $this->plugin_settings['general']['bypass_bots'] == 1) {
570
- $bots = apply_filters('wpmm_search_bots', array(
571
- 'Abacho' => 'AbachoBOT',
572
- 'Accoona' => 'Acoon',
573
- 'AcoiRobot' => 'AcoiRobot',
574
- 'Adidxbot' => 'adidxbot',
575
- 'AltaVista robot' => 'Altavista',
576
- 'Altavista robot' => 'Scooter',
577
- 'ASPSeek' => 'ASPSeek',
578
- 'Atomz' => 'Atomz',
579
- 'Bing' => 'bingbot',
580
- 'BingPreview' => 'BingPreview',
581
- 'CrocCrawler' => 'CrocCrawler',
582
- 'Dumbot' => 'Dumbot',
583
- 'eStyle Bot' => 'eStyle',
584
- 'FAST-WebCrawler' => 'FAST-WebCrawler',
585
- 'GeonaBot' => 'GeonaBot',
586
- 'Gigabot' => 'Gigabot',
587
- 'Google' => 'Googlebot',
588
- 'ID-Search Bot' => 'IDBot',
589
- 'Lycos spider' => 'Lycos',
590
- 'MSN' => 'msnbot',
591
- 'MSRBOT' => 'MSRBOT',
592
- 'Rambler' => 'Rambler',
593
- 'Scrubby robot' => 'Scrubby',
594
- 'Yahoo' => 'Yahoo'
595
- ));
596
-
597
- $is_search_bots = (bool) preg_match('~(' . implode('|', array_values($bots)) . ')~i', $_SERVER['HTTP_USER_AGENT']);
598
- }
599
-
600
- return $is_search_bots;
601
- }
602
-
603
- /**
604
- * Check if slug / ip address exists in exclude list
605
- *
606
- * @since 2.0.0
607
- * @return boolean
608
- */
609
- public function check_exclude() {
610
- $is_excluded = false;
611
-
612
- if (!empty($this->plugin_settings['general']['exclude']) && is_array($this->plugin_settings['general']['exclude'])) {
613
- foreach ($this->plugin_settings['general']['exclude'] as $item) {
614
- if ((!empty($_SERVER['REMOTE_ADDR']) && strstr($_SERVER['REMOTE_ADDR'], $item)) || (!empty($_SERVER['REQUEST_URI']) && strstr($_SERVER['REQUEST_URI'], $item))) {
615
- $is_excluded = true;
616
- break;
617
- }
618
- }
619
- }
620
-
621
- return $is_excluded;
622
- }
623
-
624
- /**
625
- * Redirect if "Redirection" option is used and users don't have access to WordPress dashboard
626
- *
627
- * @since 2.0.0
628
- * @return null
629
- */
630
- public function redirect() {
631
- if (empty($this->plugin_settings['general']['redirection'])) {
632
- return NULL;
633
- }
634
-
635
- if ($this->check_user_role()) {
636
- return NULL;
637
- }
638
-
639
- if (preg_match('#wp-admin/#', $_SERVER['REQUEST_URI'])) {
640
- $redirect_to = stripslashes($this->plugin_settings['general']['redirection']);
641
- wp_redirect($redirect_to);
642
- }
643
- }
644
-
645
- /**
646
- * Save subscriber into database
647
- *
648
- * @since 2.0.0
649
- * @global object $wpdb
650
- */
651
- public function add_subscriber() {
652
- global $wpdb;
653
-
654
- if (empty($_REQUEST['email']) || !is_email($_REQUEST['email'])) {
655
- $response = array('response' => __('Please enter a valid email address.', $this->plugin_slug));
656
- } else {
657
- $exists = $wpdb->get_row($wpdb->prepare("SELECT id_subscriber FROM {$wpdb->prefix}wpmm_subscribers WHERE email = %s", $_REQUEST['email']), ARRAY_A);
658
- if (empty($exists)) {
659
- $wpdb->insert(
660
- $wpdb->prefix . 'wpmm_subscribers', array(
661
- 'email' => sanitize_text_field($_REQUEST['email']),
662
- 'insert_date' => date('Y-m-d H:i:s')
663
- ), array('%s', '%s'));
664
- }
665
-
666
- $response = array('response' => __('You successfuly subscribed. Thanks!', $this->plugin_slug));
667
- }
668
-
669
- wp_send_json($response);
670
- }
671
-
672
- /**
673
- * Send email via contact form
674
- *
675
- * @since 2.0.0
676
- */
677
- public function send_contact() {
678
- $errors = array();
679
-
680
- if (empty($_REQUEST['name']) || empty($_REQUEST['email']) || empty($_REQUEST['content'])) {
681
- $errors[] = __('All fields required.', $this->plugin_slug);
682
- }
683
-
684
- if (!empty($_REQUEST['email']) && !is_email($_REQUEST['email'])) {
685
- $errors[] = __('Please enter a valid email address.', $this->plugin_slug);
686
- }
687
-
688
- if (!empty($errors)) {
689
- $response = array('response' => implode('<br />', $errors));
690
- } else {
691
- ob_start();
692
- ?>
693
- Name: <?php echo sanitize_text_field($_REQUEST['name']); ?><br />
694
- Email: <?php echo sanitize_text_field($_REQUEST['email']); ?><br />
695
- Content: <br /><br />
696
- <?php
697
- echo nl2br(stripslashes($_REQUEST['content']));
698
- $email_content = ob_get_contents();
699
- ob_clean();
700
-
701
- $send_to = !empty($this->plugin_settings['modules']['contact_email']) ? stripslashes($this->plugin_settings['modules']['contact_email']) : get_option('admin_email');
702
- $subject = __('Message via contact', $this->plugin_slug);
703
- add_filter('wp_mail_content_type', create_function('', 'return "text/html";'));
704
-
705
- @wp_mail($send_to, $subject, $email_content);
706
- $response = array('response' => __('Your email was sent to the website administrator. Thanks!', $this->plugin_slug));
707
- }
708
-
709
- wp_send_json($response);
710
- }
711
-
712
- }
713
-
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
714
  }
1
+ <?php
2
+
3
+ if (!class_exists('WP_Maintenance_Mode')) {
4
+
5
+ class WP_Maintenance_Mode {
6
+
7
+ const VERSION = '2.0.4';
8
+
9
+ protected $plugin_slug = 'wp-maintenance-mode';
10
+ protected $plugin_settings;
11
+ protected $plugin_basename;
12
+ protected static $instance = null;
13
+
14
+ private function __construct() {
15
+ $this->plugin_settings = get_option('wpmm_settings');
16
+ $this->plugin_basename = plugin_basename(WPMM_PATH . $this->plugin_slug . '.php');
17
+
18
+ // Load plugin text domain
19
+ add_action('init', array($this, 'load_plugin_textdomain'));
20
+
21
+ // Add shortcodes
22
+ add_action('init', array('WP_Maintenance_Mode_Shortcodes', 'init'));
23
+
24
+ // Activate plugin when new blog is added
25
+ add_action('wpmu_new_blog', array($this, 'activate_new_site'));
26
+
27
+ // Check update
28
+ add_action('admin_init', array($this, 'check_update'));
29
+
30
+ if (!empty($this->plugin_settings['general']['status']) && $this->plugin_settings['general']['status'] == 1) {
31
+ // INIT
32
+ add_action('init', array($this, 'init'));
33
+
34
+ // Add ajax methods
35
+ add_action('wp_ajax_nopriv_wpmm_add_subscriber', array($this, 'add_subscriber'));
36
+ add_action('wp_ajax_wpmm_add_subscriber', array($this, 'add_subscriber'));
37
+ add_action('wp_ajax_nopriv_wpmm_send_contact', array($this, 'send_contact'));
38
+ add_action('wp_ajax_wpmm_send_contact', array($this, 'send_contact'));
39
+
40
+ // Redirect
41
+ add_action('init', array($this, 'redirect'), 9);
42
+
43
+ // Google Analytics tracking script
44
+ if (!empty($this->plugin_settings['modules']['ga_status']) && $this->plugin_settings['modules']['ga_status'] == 1 && !empty($this->plugin_settings['modules']['ga_code'])) {
45
+ add_action('wpmm_head', create_function('', 'echo "' . stripslashes($this->plugin_settings['modules']['ga_code']) . '";'));
46
+ }
47
+ }
48
+ }
49
+
50
+ public static function get_instance() {
51
+ if (null == self::$instance) {
52
+ self::$instance = new self;
53
+ }
54
+
55
+ return self::$instance;
56
+ }
57
+
58
+ /**
59
+ * Return plugin slug
60
+ *
61
+ * @since 2.0.0
62
+ * @return string
63
+ */
64
+ public function get_plugin_slug() {
65
+ return $this->plugin_slug;
66
+ }
67
+
68
+ /**
69
+ * Return plugin settings
70
+ *
71
+ * @since 2.0.0
72
+ * @return array
73
+ */
74
+ public function get_plugin_settings() {
75
+ return $this->plugin_settings;
76
+ }
77
+
78
+ /**
79
+ * Return plugin default settings
80
+ *
81
+ * @since 2.0.0
82
+ * @return array
83
+ */
84
+ public function default_settings() {
85
+ return array(
86
+ 'general' => array(
87
+ 'status' => 0,
88
+ 'status_date' => '',
89
+ 'bypass_bots' => 0,
90
+ 'backend_role' => array(),
91
+ 'frontend_role' => array(),
92
+ 'meta_robots' => 0,
93
+ 'redirection' => '',
94
+ 'exclude' => array(
95
+ 0 => 'feed',
96
+ 1 => 'wp-login',
97
+ 2 => 'login'
98
+ ),
99
+ 'notice' => 1,
100
+ 'admin_link' => 0
101
+ ),
102
+ 'design' => array(
103
+ 'title' => __('Maintenance mode', $this->plugin_slug),
104
+ 'heading' => __('Maintenance mode', $this->plugin_slug),
105
+ 'heading_color' => '',
106
+ 'text' => __('<p>Sorry for the inconvenience.<br />Our website is currently undergoing scheduled maintenance.<br />Thank you for your understanding.</p>', $this->plugin_slug),
107
+ 'text_color' => '',
108
+ 'bg_type' => 'color',
109
+ 'bg_color' => '',
110
+ 'bg_custom' => '',
111
+ 'bg_predefined' => 'bg1.jpg',
112
+ 'custom_css' => array()
113
+ ),
114
+ 'modules' => array(
115
+ 'countdown_status' => 0,
116
+ 'countdown_start' => date('Y-m-d H:i:s'),
117
+ 'countdown_details' => array(
118
+ 'days' => 0,
119
+ 'hours' => 1,
120
+ 'minutes' => 0
121
+ ),
122
+ 'countdown_color' => '',
123
+ 'subscribe_status' => 0,
124
+ 'subscribe_text' => __('Notify me when it\'s ready', $this->plugin_slug),
125
+ 'subscribe_text_color' => '',
126
+ 'social_status' => 0,
127
+ 'social_target' => 1,
128
+ 'social_github' => '',
129
+ 'social_dribbble' => '',
130
+ 'social_twitter' => '',
131
+ 'social_facebook' => '',
132
+ 'social_pinterest' => '',
133
+ 'social_google+' => '',
134
+ 'social_linkedin' => '',
135
+ 'contact_status' => 0,
136
+ 'contact_email' => get_option('admin_email') ? get_option('admin_email') : '',
137
+ 'contact_effects' => 'move_top|move_bottom',
138
+ 'ga_status' => 0,
139
+ 'ga_code' => '',
140
+ 'custom_css' => array()
141
+ )
142
+ );
143
+ }
144
+
145
+ /**
146
+ * What to do when the plugin is activated
147
+ *
148
+ * @since 2.0.0
149
+ * @param boolean $network_wide
150
+ */
151
+ public static function activate($network_wide) {
152
+ // because we need translated items when activate :)
153
+ load_plugin_textdomain(self::get_instance()->plugin_slug, FALSE, WPMM_LANGUAGES_PATH);
154
+
155
+ // do the job
156
+ if (function_exists('is_multisite') && is_multisite()) {
157
+ if ($network_wide) {
158
+ // Get all blog ids
159
+ $blog_ids = self::get_blog_ids();
160
+ foreach ($blog_ids as $blog_id) {
161
+ switch_to_blog($blog_id);
162
+ self::single_activate($network_wide);
163
+ restore_current_blog();
164
+ }
165
+ } else {
166
+ self::single_activate();
167
+ }
168
+ } else {
169
+ self::single_activate();
170
+ }
171
+
172
+ // delete old options
173
+ delete_option('wp-maintenance-mode');
174
+ delete_option('wp-maintenance-mode-msqld');
175
+ }
176
+
177
+ /**
178
+ * Check plugin version for updating process
179
+ *
180
+ * @since 2.0.3
181
+ */
182
+ public function check_update() {
183
+ $version = get_option('wpmm_version', '0');
184
+
185
+ if (!version_compare($version, WP_Maintenance_Mode::VERSION, '=')) {
186
+ self::activate(is_multisite() && is_plugin_active_for_network($this->plugin_basename) ? true : false);
187
+ }
188
+ }
189
+
190
+ /**
191
+ * What to do when the plugin is deactivated
192
+ *
193
+ * @since 2.0.0
194
+ * @param boolean $network_wide
195
+ */
196
+ public static function deactivate($network_wide) {
197
+ if (function_exists('is_multisite') && is_multisite()) {
198
+ if ($network_wide) {
199
+ // Get all blog ids
200
+ $blog_ids = self::get_blog_ids();
201
+ foreach ($blog_ids as $blog_id) {
202
+ switch_to_blog($blog_id);
203
+ self::single_deactivate();
204
+ restore_current_blog();
205
+ }
206
+ } else {
207
+ self::single_deactivate();
208
+ }
209
+ } else {
210
+ self::single_deactivate();
211
+ }
212
+ }
213
+
214
+ /**
215
+ * What to do when a new site is activated (multisite env)
216
+ *
217
+ * @since 2.0.0
218
+ * @param int $blog_id.
219
+ */
220
+ public function activate_new_site($blog_id) {
221
+ if (1 !== did_action('wpmu_new_blog')) {
222
+ return;
223
+ }
224
+
225
+ switch_to_blog($blog_id);
226
+ self::single_activate();
227
+ restore_current_blog();
228
+ }
229
+
230
+ /**
231
+ * What to do on single activate
232
+ *
233
+ * @since 2.0.0
234
+ * @global object $wpdb
235
+ * @param boolean $network_wide
236
+ */
237
+ public static function single_activate($network_wide = false) {
238
+ global $wpdb;
239
+
240
+ // create wpmm_subscribers table
241
+ $sql = "CREATE TABLE IF NOT EXISTS {$wpdb->prefix}wpmm_subscribers (
242
+ `id_subscriber` bigint(20) NOT NULL AUTO_INCREMENT,
243
+ `email` varchar(50) NOT NULL,
244
+ `insert_date` datetime NOT NULL,
245
+ PRIMARY KEY (`id_subscriber`)
246
+ ) DEFAULT CHARSET=utf8 AUTO_INCREMENT=1;";
247
+ require_once(ABSPATH . 'wp-admin/includes/upgrade.php');
248
+ dbDelta($sql);
249
+
250
+ // get all options for different versions of the plugin
251
+ $v2_options = get_option('wpmm_settings');
252
+ $old_options = (is_multisite() && $network_wide) ? get_site_option('wp-maintenance-mode') : get_option('wp-maintenance-mode');
253
+ $default_options = self::get_instance()->default_settings();
254
+
255
+ // set notice if the plugin was installed before & set default settings
256
+ if (!empty($old_options) && empty($v2_options)) {
257
+ add_option('wpmm_notice', array(
258
+ 'class' => 'updated notice',
259
+ 'msg' => sprintf(__('WP Maintenance Mode plugin was relaunched and you MUST revise <a href="%s">settings</a>.', self::get_instance()->plugin_slug), admin_url('options-general.php?page=' . self::get_instance()->plugin_slug))
260
+ ));
261
+
262
+ // import old options
263
+ if (isset($old_options['active'])) {
264
+ $default_options['general']['status'] = $old_options['active'];
265
+ }
266
+ if (isset($old_options['bypass'])) {
267
+ $default_options['general']['bypass_bots'] = $old_options['bypass'];
268
+ }
269
+
270
+ if (!empty($old_options['role'][0])) {
271
+ $default_options['general']['backend_role'] = $old_options['role'][0] == 'administrator' ? array() : $old_options['role'];
272
+ }
273
+
274
+ if (!empty($old_options['role_frontend'][0])) {
275
+ $default_options['general']['frontend_role'] = $old_options['role_frontend'][0] == 'administrator' ? array() : $old_options['role_frontend'];
276
+ }
277
+
278
+ if (isset($old_options['index'])) {
279
+ $default_options['general']['meta_robots'] = $old_options['index'];
280
+ }
281
+
282
+ if (!empty($old_options['rewrite'])) {
283
+ $default_options['general']['redirection'] = $old_options['rewrite'];
284
+ }
285
+
286
+ if (!empty($old_options['exclude'][0])) {
287
+ $default_options['general']['exclude'] = array_unique(array_merge($default_options['general']['exclude'], $old_options['exclude']));
288
+ }
289
+
290
+ if (isset($old_options['notice'])) {
291
+ $default_options['general']['notice'] = $old_options['notice'];
292
+ }
293
+
294
+ if (isset($old_options['admin_link'])) {
295
+ $default_options['general']['admin_link'] = $old_options['admin_link'];
296
+ }
297
+
298
+ if (!empty($old_options['title'])) {
299
+ $default_options['design']['title'] = $old_options['title'];
300
+ }
301
+
302
+ if (!empty($old_options['heading'])) {
303
+ $default_options['design']['heading'] = $old_options['heading'];
304
+ }
305
+
306
+ if (!empty($old_options['text'])) {
307
+ $default_options['design']['text'] = $old_options['text'];
308
+ }
309
+
310
+ if (isset($old_options['radio'])) {
311
+ $default_options['modules']['countdown_status'] = $old_options['radio'];
312
+ }
313
+
314
+ if (!empty($old_options['date'])) {
315
+ $default_options['modules']['countdown_start'] = $old_options['date'];
316
+ }
317
+
318
+ if (isset($old_options['time']) && isset($old_options['unit'])) {
319
+ switch ($old_options['unit']) {
320
+ case 0: // seconds
321
+ $default_options['modules']['countdown_details'] = array(
322
+ 'days' => 0,
323
+ 'hours' => 0,
324
+ 'minutes' => floor($old_options['time'] / 60)
325
+ );
326
+ break;
327
+ case 1: // minutes
328
+ $default_options['modules']['countdown_details'] = array(
329
+ 'days' => 0,
330
+ 'hours' => 0,
331
+ 'minutes' => $old_options['time']
332
+ );
333
+ break;
334
+ case 2: // hours
335
+ $default_options['modules']['countdown_details'] = array(
336
+ 'days' => 0,
337
+ 'hours' => $old_options['time'],
338
+ 'minutes' => 0
339
+ );
340
+ case 3: // days
341
+ $default_options['modules']['countdown_details'] = array(
342
+ 'days' => $old_options['time'],
343
+ 'hours' => 0,
344
+ 'minutes' => 0
345
+ );
346
+ break;
347
+ case 4: // weeks
348
+ $default_options['modules']['countdown_details'] = array(
349
+ 'days' => $old_options['time'] * 7,
350
+ 'hours' => 0,
351
+ 'minutes' => 0
352
+ );
353
+ break;
354
+ case 5: // months
355
+ $default_options['modules']['countdown_details'] = array(
356
+ 'days' => $old_options['time'] * 30,
357
+ 'hours' => 0,
358
+ 'minutes' => 0
359
+ );
360
+ break;
361
+ case 6: // years
362
+ $default_options['modules']['countdown_details'] = array(
363
+ 'days' => $old_options['time'] * 365,
364
+ 'hours' => 0,
365
+ 'minutes' => 0
366
+ );
367
+ break;
368
+ default:
369
+ break;
370
+ }
371
+ }
372
+ }
373
+
374
+ // set options
375
+ add_option('wpmm_settings', $default_options);
376
+
377
+ // set current version
378
+ update_option('wpmm_version', WP_Maintenance_Mode::VERSION);
379
+ }
380
+
381
+ /**
382
+ * What to do on single deactivate
383
+ *
384
+ * @since 2.0.0
385
+ */
386
+ public static function single_deactivate() {
387
+ // nothing
388
+ }
389
+
390
+ /**
391
+ * Get all blog ids of blogs in the current network
392
+ *
393
+ * @since 2.0.0
394
+ * @return array / false
395
+ */
396
+ private static function get_blog_ids() {
397
+ global $wpdb;
398
+
399
+ return $wpdb->get_col($wpdb->prepare("SELECT blog_id FROM {$wpdb->blogs} WHERE archived = %d AND spam = %d AND deleted = %d", array(0, 0, 0)));
400
+ }
401
+
402
+ /**
403
+ * Load languages files
404
+ *
405
+ * @since 2.0.0
406
+ */
407
+ public function load_plugin_textdomain() {
408
+ $domain = $this->plugin_slug;
409
+ $locale = apply_filters('plugin_locale', get_locale(), $domain);
410
+
411
+ load_textdomain($domain, trailingslashit(WP_LANG_DIR) . $domain . '/' . $domain . '-' . $locale . '.mo');
412
+ load_plugin_textdomain($domain, FALSE, WPMM_LANGUAGES_PATH);
413
+ }
414
+
415
+ /**
416
+ * Initialize when plugin is activated
417
+ *
418
+ * @since 2.0.0
419
+ */
420
+ public function init() {
421
+ /**
422
+ * CHECKS
423
+ */
424
+ if (
425
+ (!$this->check_user_role()) &&
426
+ !strstr($_SERVER['PHP_SELF'], 'wp-cron.php') &&
427
+ !strstr($_SERVER['PHP_SELF'], 'wp-login.php') &&
428
+ // wp-admin/ is available to everyone only if the user is not loggedin, otherwise.. check_user_role decides
429
+ !(strstr($_SERVER['PHP_SELF'], 'wp-admin/') && !is_user_logged_in()) &&
430
+ // !strstr($_SERVER['PHP_SELF'], 'wp-admin/') &&
431
+ !strstr($_SERVER['PHP_SELF'], 'wp-admin/admin-ajax.php') &&
432
+ !strstr($_SERVER['PHP_SELF'], 'async-upload.php') &&
433
+ !(strstr($_SERVER['PHP_SELF'], 'upgrade.php') && $this->check_user_role()) &&
434
+ !strstr($_SERVER['PHP_SELF'], '/plugins/') &&
435
+ !strstr($_SERVER['PHP_SELF'], '/xmlrpc.php') &&
436
+ !$this->check_exclude() &&
437
+ !$this->check_search_bots() &&
438
+ !(defined('WP_CLI') && WP_CLI)
439
+ ) {
440
+ // HEADER STUFF
441
+ $protocol = !empty($_SERVER['SERVER_PROTOCOL']) && in_array($_SERVER['SERVER_PROTOCOL'], array('HTTP/1.1', 'HTTP/1.0')) ? $_SERVER['SERVER_PROTOCOL'] : 'HTTP/1.0';
442
+ $charset = get_bloginfo('charset') ? get_bloginfo('charset') : 'UTF-8';
443
+ $status_code = (int) apply_filters('wp_maintenance_mode_status_code', 503); // this hook will be removed in the next versions
444
+ $status_code = (int) apply_filters('wpmm_status_code', 503);
445
+ $backtime_seconds = $this->calculate_backtime();
446
+ $backtime = (int) apply_filters('wpmm_backtime', $backtime_seconds);
447
+
448
+ // META STUFF
449
+ $title = !empty($this->plugin_settings['design']['title']) ? $this->plugin_settings['design']['title'] : get_bloginfo('name') . ' - ' . __('Maintenance Mode', $this->plugin_slug);
450
+ $title = apply_filters('wm_title', $title); // this hook will be removed in the next versions
451
+ $title = apply_filters('wpmm_meta_title', $title);
452
+
453
+ $robots = $this->plugin_settings['general']['meta_robots'] == 1 ? 'noindex, nofollow' : 'index, follow';
454
+ $robots = apply_filters('wpmm_meta_robots', $robots);
455
+
456
+ $author = apply_filters('wm_meta_author', get_bloginfo('name')); // this hook will be removed in the next versions
457
+ $author = apply_filters('wpmm_meta_author', get_bloginfo('name'));
458
+
459
+ $description = get_bloginfo('name') . ' - ' . get_bloginfo('description');
460
+ $description = apply_filters('wm_meta_description', $description); // this hook will be removed in the next versions
461
+ $description = apply_filters('wpmm_meta_description', $description);
462
+
463
+ $keywords = __('Maintenance Mode', $this->plugin_slug);
464
+ $keywords = apply_filters('wm_meta_keywords', $keywords); // this hook will be removed in the next versions
465
+ $keywords = apply_filters('wpmm_meta_keywords', $keywords);
466
+
467
+ // CSS STUFF
468
+ $body_classes = !empty($this->plugin_settings['design']['bg_type']) && $this->plugin_settings['design']['bg_type'] != 'color' ? 'background' : '';
469
+ $custom_css_design = !empty($this->plugin_settings['design']['custom_css']) && is_array($this->plugin_settings['design']['custom_css']) ? $this->plugin_settings['design']['custom_css'] : array();
470
+ $custom_css_modules = !empty($this->plugin_settings['modules']['custom_css']) && is_array($this->plugin_settings['modules']['custom_css']) ? $this->plugin_settings['modules']['custom_css'] : array();
471
+ $custom_css = array_merge($custom_css_design, $custom_css_modules);
472
+
473
+ // CONTENT
474
+ $heading = !empty($this->plugin_settings['design']['heading']) ? $this->plugin_settings['design']['heading'] : '';
475
+ $heading = apply_filters('wm_heading', $heading); // this hook will be removed in the next versions
476
+ $heading = apply_filters('wpmm_heading', $heading);
477
+
478
+ $text = !empty($this->plugin_settings['design']['text']) ? $this->plugin_settings['design']['text'] : '';
479
+ $text = apply_filters('wpmm_text', do_shortcode($text));
480
+
481
+ // COUNTDOWN
482
+ $countdown_start = !empty($this->plugin_settings['modules']['countdown_start']) ? $this->plugin_settings['modules']['countdown_start'] : $this->plugin_settings['general']['status_data'];
483
+ $countdown_end = strtotime($countdown_start . ' +' . $backtime_seconds . ' seconds');
484
+
485
+ // JS FILES
486
+ $wp_scripts = new WP_Scripts();
487
+ $scripts = array(
488
+ 'jquery' => !empty($wp_scripts->registered['jquery-core']) ? site_url($wp_scripts->registered['jquery-core']->src) : '//ajax.googleapis.com/ajax/libs/jquery/1.12.3/jquery.' . WPMM_ASSETS_SUFFIX . '.js',
489
+ 'frontend' => WPMM_JS_URL . 'scripts' . WPMM_ASSETS_SUFFIX . '.js'
490
+ );
491
+ if (!empty($this->plugin_settings['modules']['countdown_status']) && $this->plugin_settings['modules']['countdown_status'] == 1) {
492
+ $scripts['countdown-dependency'] = WPMM_JS_URL . 'jquery.plugin' . WPMM_ASSETS_SUFFIX . '.js';
493
+ $scripts['countdown'] = WPMM_JS_URL . 'jquery.countdown' . WPMM_ASSETS_SUFFIX . '.js';
494
+ }
495
+ if ((!empty($this->plugin_settings['modules']['contact_status']) && $this->plugin_settings['modules']['contact_status'] == 1) || (!empty($this->plugin_settings['modules']['subscribe_status']) && $this->plugin_settings['modules']['subscribe_status'] == 1)) {
496
+ $scripts['validate'] = WPMM_JS_URL . 'jquery.validate' . WPMM_ASSETS_SUFFIX . '.js';
497
+ }
498
+ $scripts = apply_filters('wpmm_scripts', $scripts);
499
+
500
+ // CSS FILES
501
+ $styles = array(
502
+ 'frontend' => WPMM_CSS_URL . 'style' . WPMM_ASSETS_SUFFIX . '.css'
503
+ );
504
+ $styles = apply_filters('wpmm_styles', $styles);
505
+
506
+ nocache_headers();
507
+ ob_start();
508
+ header("Content-type: text/html; charset=$charset");
509
+ header("$protocol $status_code Service Unavailable", TRUE, $status_code);
510
+ header("Retry-After: $backtime");
511
+
512
+ if (file_exists(WP_CONTENT_DIR . '/wp-maintenance-mode.php')) {
513
+ include_once(WP_CONTENT_DIR . '/wp-maintenance-mode.php');
514
+ } else {
515
+ include_once(WPMM_VIEWS_PATH . 'maintenance.php');
516
+ }
517
+ ob_flush();
518
+
519
+ exit();
520
+ }
521
+ }
522
+
523
+ /**
524
+ * Check if the current user has access to backend / frontend based on his role compared with role from settings (refactor @ 2.0.4)
525
+ *
526
+ * @since 2.0.0
527
+ * @return boolean
528
+ */
529
+ public function check_user_role() {
530
+ if (is_super_admin()) {
531
+ return true;
532
+ }
533
+
534
+ $user = wp_get_current_user();
535
+ $user_roles = !empty($user->roles) && is_array($user->roles) ? $user->roles : array();
536
+ $allowed_roles = is_admin() ? $this->plugin_settings['general']['backend_role'] : $this->plugin_settings['general']['frontend_role'];
537
+ $is_allowed = (bool) array_intersect($user_roles, $allowed_roles);
538
+
539
+ // echo "<pre>";
540
+ // echo "user roles:";
541
+ // print_r($user_roles);
542
+ // echo "allowed roles:";
543
+ // print_r($allowed_roles);
544
+ // echo "is allowed:";
545
+ // var_dump($is_allowed);
546
+ // die;
547
+
548
+ return $is_allowed;
549
+ }
550
+
551
+ /**
552
+ * Calculate backtime based on countdown remaining time if it is activated
553
+ *
554
+ * @since 2.0.0
555
+ * @return int
556
+ */
557
+ public function calculate_backtime() {
558
+ $backtime = 3600;
559
+
560
+ if (!empty($this->plugin_settings['modules']['countdown_status']) && $this->plugin_settings['modules']['countdown_status'] == 1) {
561
+ $backtime = ($this->plugin_settings['modules']['countdown_details']['days'] * DAY_IN_SECONDS) + ($this->plugin_settings['modules']['countdown_details']['hours'] * HOUR_IN_SECONDS) + ($this->plugin_settings['modules']['countdown_details']['minutes'] * MINUTE_IN_SECONDS);
562
+ }
563
+
564
+ return $backtime;
565
+ }
566
+
567
+ /**
568
+ * Check if the visitor is a bot (using useragent)
569
+ *
570
+ * @since 2.0.0
571
+ * @return boolean
572
+ */
573
+ public function check_search_bots() {
574
+ $is_search_bots = false;
575
+
576
+ if (!empty($this->plugin_settings['general']['bypass_bots']) && $this->plugin_settings['general']['bypass_bots'] == 1) {
577
+ $bots = apply_filters('wpmm_search_bots', array(
578
+ 'Abacho' => 'AbachoBOT',
579
+ 'Accoona' => 'Acoon',
580
+ 'AcoiRobot' => 'AcoiRobot',
581
+ 'Adidxbot' => 'adidxbot',
582
+ 'AltaVista robot' => 'Altavista',
583
+ 'Altavista robot' => 'Scooter',
584
+ 'ASPSeek' => 'ASPSeek',
585
+ 'Atomz' => 'Atomz',
586
+ 'Bing' => 'bingbot',
587
+ 'BingPreview' => 'BingPreview',
588
+ 'CrocCrawler' => 'CrocCrawler',
589
+ 'Dumbot' => 'Dumbot',
590
+ 'eStyle Bot' => 'eStyle',
591
+ 'FAST-WebCrawler' => 'FAST-WebCrawler',
592
+ 'GeonaBot' => 'GeonaBot',
593
+ 'Gigabot' => 'Gigabot',
594
+ 'Google' => 'Googlebot',
595
+ 'ID-Search Bot' => 'IDBot',
596
+ 'Lycos spider' => 'Lycos',
597
+ 'MSN' => 'msnbot',
598
+ 'MSRBOT' => 'MSRBOT',
599
+ 'Rambler' => 'Rambler',
600
+ 'Scrubby robot' => 'Scrubby',
601
+ 'Yahoo' => 'Yahoo'
602
+ ));
603
+
604
+ $is_search_bots = (bool) preg_match('~(' . implode('|', array_values($bots)) . ')~i', $_SERVER['HTTP_USER_AGENT']);
605
+ }
606
+
607
+ return $is_search_bots;
608
+ }
609
+
610
+ /**
611
+ * Check if slug / ip address exists in exclude list
612
+ *
613
+ * @since 2.0.0
614
+ * @return boolean
615
+ */
616
+ public function check_exclude() {
617
+ $is_excluded = false;
618
+ $excluded_list = array();
619
+
620
+ if (!empty($this->plugin_settings['general']['exclude']) && is_array($this->plugin_settings['general']['exclude'])) {
621
+ $excluded_list = $this->plugin_settings['general']['exclude'];
622
+
623
+ foreach ($excluded_list as $item) {
624
+ if (empty($item)) { // just to be sure :-)
625
+ continue;
626
+ }
627
+
628
+ if ((!empty($_SERVER['REMOTE_ADDR']) && strstr($_SERVER['REMOTE_ADDR'], $item)) || (!empty($_SERVER['REQUEST_URI']) && strstr($_SERVER['REQUEST_URI'], $item))) {
629
+ $is_excluded = true;
630
+ break;
631
+ }
632
+ }
633
+ }
634
+
635
+ $is_excluded = apply_filters('wpmm_is_excluded', $is_excluded, $excluded_list);
636
+
637
+ return $is_excluded;
638
+ }
639
+
640
+ /**
641
+ * Redirect if "Redirection" option is used and users don't have access to WordPress dashboard
642
+ *
643
+ * @since 2.0.0
644
+ * @return null
645
+ */
646
+ public function redirect() {
647
+ // we do not redirect if there's nothing saved in "redirect" input
648
+ if (empty($this->plugin_settings['general']['redirection'])) {
649
+ return NULL;
650
+ }
651
+
652
+ // we do not redirect ajax calls
653
+ if ((defined('DOING_AJAX') && DOING_AJAX)) {
654
+ return NULL;
655
+ }
656
+
657
+ // we do not redirect visitors or logged-in users that are not using /wp-admin/
658
+ if (!is_user_logged_in() || !is_admin()) {
659
+ return NULL;
660
+ }
661
+
662
+ // we do not redirect users that have access to backend
663
+ if ($this->check_user_role()) {
664
+ return NULL;
665
+ }
666
+
667
+ $redirect_to = stripslashes($this->plugin_settings['general']['redirection']);
668
+ wp_redirect($redirect_to);
669
+ exit;
670
+ }
671
+
672
+ /**
673
+ * Save subscriber into database (refactor @ 2.0.4)
674
+ *
675
+ * @since 2.0.0
676
+ * @global object $wpdb
677
+ * @throws Exception
678
+ */
679
+ public function add_subscriber() {
680
+ global $wpdb;
681
+
682
+ try {
683
+ $_POST = array_map('trim', $_POST);
684
+
685
+ // checks
686
+ if (empty($_POST['email']) || !is_email($_POST['email'])) {
687
+ throw new Exception(__('Please enter a valid email address.', $this->plugin_slug));
688
+ }
689
+
690
+ // save
691
+ $exists = $wpdb->get_row($wpdb->prepare("SELECT id_subscriber FROM {$wpdb->prefix}wpmm_subscribers WHERE email = %s", sanitize_text_field($_POST['email'])), ARRAY_A);
692
+ if (empty($exists)) {
693
+ $wpdb->insert($wpdb->prefix . 'wpmm_subscribers', array(
694
+ 'email' => sanitize_text_field($_POST['email']),
695
+ 'insert_date' => date('Y-m-d H:i:s')
696
+ ), array('%s', '%s'));
697
+ }
698
+
699
+ wp_send_json_success(__('You successfully subscribed. Thanks!', $this->plugin_slug));
700
+ } catch (Exception $ex) {
701
+ wp_send_json_error($ex->getMessage());
702
+ }
703
+ }
704
+
705
+ /**
706
+ * Send email via contact form (refactor @ 2.0.4)
707
+ *
708
+ * @since 2.0.0
709
+ * @throws Exception
710
+ */
711
+ public function send_contact() {
712
+ try {
713
+ $_POST = array_map('trim', $_POST);
714
+
715
+ // checks
716
+ if (empty($_POST['name']) || empty($_POST['email']) || empty($_POST['content'])) {
717
+ throw new Exception(__('All fields required.', $this->plugin_slug));
718
+ }
719
+
720
+ if (!is_email($_POST['email'])) {
721
+ throw new Exception(__('Please enter a valid email address.', $this->plugin_slug));
722
+ }
723
+
724
+ // vars
725
+ $send_to = !empty($this->plugin_settings['modules']['contact_email']) ? stripslashes($this->plugin_settings['modules']['contact_email']) : get_option('admin_email');
726
+ $subject = __('Message via contact', $this->plugin_slug);
727
+ $headers = array('Reply-To: ' . sanitize_text_field($_POST['email']));
728
+ ob_start();
729
+ include_once(WPMM_VIEWS_PATH . 'contact.php');
730
+ $message = ob_get_clean();
731
+
732
+ // filters
733
+ add_filter('wp_mail_content_type', create_function('', 'return "text/html";'));
734
+ add_filter('wp_mail_from_name', create_function('', 'return sanitize_text_field($_POST["name"]);'));
735
+
736
+ // send email
737
+ @wp_mail($send_to, $subject, $message, $headers);
738
+ wp_send_json_success(__('Your email was sent to the website administrator. Thanks!', $this->plugin_slug));
739
+ } catch (Exception $ex) {
740
+ wp_send_json_error($ex->getMessage());
741
+ }
742
+ }
743
+
744
+ }
745
+
746
  }
includes/functions/helpers.php CHANGED
@@ -1,31 +1,90 @@
1
- <?php
2
-
3
- /**
4
- * Get plugin info
5
- *
6
- * @param string $plugin_slug
7
- * @return array
8
- */
9
- function wpmm_plugin_info($plugin_slug) {
10
- add_filter('extra_plugin_headers', create_function('', 'return array("GitHub URI","Twitter");'));
11
- $plugin_data = get_plugin_data(WPMM_PATH . $plugin_slug . '.php');
12
-
13
- return $plugin_data;
14
- }
15
-
16
- /**
17
- * Count db records using where
18
- *
19
- * @global object $wpdb
20
- * @param string $table
21
- * @param string $field
22
- * @param array $where
23
- */
24
- function wpmm_count_where($table, $field = 'ID', $where = array()) {
25
- global $wpdb;
26
-
27
- $table = $wpdb->prefix . $table;
28
- $count = $wpdb->get_var($wpdb->prepare("SELECT COUNT($field) FROM $table " . (!empty($where) ? "WHERE " . implode(" AND ", array_keys($where)) : ""), !empty($where) ? array_values($where) : array()));
29
-
30
- return intval($count);
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
31
  }
1
+ <?php
2
+
3
+ /**
4
+ * Get plugin info
5
+ *
6
+ * @since 2.0.0
7
+ * @param string $plugin_slug
8
+ * @return array
9
+ */
10
+ function wpmm_plugin_info($plugin_slug) {
11
+ add_filter('extra_plugin_headers', create_function('', 'return array("GitHub Plugin URI","Twitter");'));
12
+ $plugin_data = get_plugin_data(WPMM_PATH . $plugin_slug . '.php');
13
+
14
+ return $plugin_data;
15
+ }
16
+
17
+ /**
18
+ * Count db records using where
19
+ *
20
+ * EDIT: PHP Notice: wpdb::prepare was called <strong>incorrectly</strong>. The query argument of wpdb::prepare() must have a placeholder.
21
+ *
22
+ * @since 2.0.0
23
+ * @global object $wpdb
24
+ * @param string $table
25
+ * @param string $field
26
+ * @param array $where eg: array('id_subscriber = %d' => 12)
27
+ */
28
+ function wpmm_count_where($table, $field = 'ID', $where = array()) {
29
+ global $wpdb;
30
+
31
+ $table = $wpdb->prefix . $table;
32
+ $where_keys = array_keys($where);
33
+ $where_values = array_values($where);
34
+
35
+ if (!empty($where)) {
36
+ $query = $wpdb->prepare("SELECT COUNT({$field}) FROM {$table} WHERE " . implode(' AND ', $where_keys), $where_values);
37
+ } else {
38
+ $query = "SELECT COUNT({$field}) FROM {$table}";
39
+ }
40
+
41
+ $count = $wpdb->get_var($query);
42
+
43
+ return intval($count);
44
+ }
45
+
46
+ /**
47
+ * Outputs the html selected attribute
48
+ *
49
+ * @since 2.0.4
50
+ * @param array $values
51
+ * @param string $current
52
+ * @param bool $echo
53
+ * @return string html attribute or empty string
54
+ */
55
+ function wpmm_multiselect($values, $current) {
56
+ foreach ($values as $k => $role) {
57
+ $is_selected = __checked_selected_helper($role, $current, false, 'selected');
58
+ if (!empty($is_selected)) {
59
+ return $is_selected;
60
+ break;
61
+ }
62
+ }
63
+ }
64
+
65
+ /**
66
+ * Get banners list from Maintenance Mode API
67
+ *
68
+ * @since 2.0.4
69
+ * @return array
70
+ */
71
+ function wpmm_get_banners() {
72
+ if (false === ($banners = get_transient('wpmm_banners_list'))) {
73
+ $response = wp_remote_get('http://maintenancemode.co/wp-json/wpmm/v1/banners', array(
74
+ 'timeout' => 10
75
+ ));
76
+
77
+ $banners = array();
78
+ $items = json_decode(wp_remote_retrieve_body($response), true);
79
+
80
+ if (!empty($items) && is_array($items)) {
81
+ foreach ($items as $item) {
82
+ $banners[$item['type']][] = $item;
83
+ }
84
+ }
85
+
86
+ set_transient('wpmm_banners_list', $banners, 3 * HOUR_IN_SECONDS);
87
+ }
88
+
89
+ return $banners;
90
  }
includes/functions/index.php CHANGED
@@ -1,2 +1,2 @@
1
- <?php
2
- // Silence is golden.
1
+ <?php
2
+ // Silence is golden.
includes/index.php CHANGED
@@ -1,2 +1,2 @@
1
- <?php
2
- // Silence is golden.
1
+ <?php
2
+ // Silence is golden.
index.php CHANGED
@@ -1,2 +1,2 @@
1
- <?php
2
- // Silence is golden.
1
+ <?php
2
+ // Silence is golden.
languages/index.php CHANGED
@@ -1,2 +1,2 @@
1
- <?php
2
- // Silence is golden.
1
+ <?php
2
+ // Silence is golden.
languages/wp-maintenance-mode-de_DE.mo CHANGED
Binary file
languages/wp-maintenance-mode-de_DE.po CHANGED
@@ -1,459 +1,532 @@
1
- msgid ""
2
- msgstr ""
3
- "Project-Id-Version: WP Maintenance Mode 2.0.3\n"
4
- "POT-Creation-Date: 2014-09-26 19:03+0200\n"
5
- "PO-Revision-Date: 2014-09-26 19:03+0200\n"
6
- "Last-Translator: Frank Bültge <frank@bueltge.de>\n"
7
- "Language-Team: Designmodo <info@designmodo.com>\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.7\n"
13
- "X-Poedit-Basepath: ../\n"
14
- "Plural-Forms: nplurals=2; plural=(n != 1);\n"
15
- "X-Poedit-SourceCharset: UTF-8\n"
16
- "X-Poedit-KeywordsList: __;_e\n"
17
- "X-Poedit-SearchPath-0: .\n"
18
- "X-Poedit-SearchPath-1: includes/classes\n"
19
- "X-Poedit-SearchPath-2: views\n"
20
-
21
- #: includes/classes/wp-maintenance-mode-admin.php:154
22
- msgid "WP Maintenance Mode"
23
- msgstr "WP Wartungsmodus"
24
-
25
- #: includes/classes/wp-maintenance-mode-admin.php:358
26
- msgid "Settings"
27
- msgstr "Einstellungen"
28
-
29
- #: includes/classes/wp-maintenance-mode-admin.php:377
30
- #, php-format
31
- msgid ""
32
- "The Maintenance Mode is <strong>active</strong>. Please don't forget to <a "
33
- "href=\"%s\">deactivate</a> as soon as you are done."
34
- msgstr ""
35
- "Der Wartungsmodus ist <strong>aktiv</strong>. Bitte vergiss nicht ihn zu <a "
36
- "href=\"%s\">deaktivieren</a>, wenn er nicht mehr benötigt wird."
37
-
38
- #: includes/classes/wp-maintenance-mode.php:100
39
- #: includes/classes/wp-maintenance-mode.php:101
40
- msgid "Maintenance mode"
41
- msgstr "Wartungsmodus"
42
-
43
- #: includes/classes/wp-maintenance-mode.php:103
44
- msgid ""
45
- "<p>Sorry for the inconvenience.<br />Our website is currently undergoing "
46
- "scheduled maintenance.<br />Thank you for your understanding.</p>"
47
- msgstr ""
48
- "<p>Enschuldige die Unannehmlichkeiten,<br />unsere Website is aktuell in "
49
- "Wartungsarbeiten.<br />Vielen Dank für das Verständis.</p>"
50
-
51
- #: includes/classes/wp-maintenance-mode.php:121
52
- msgid "Notify me when it's ready"
53
- msgstr "Informiere mich, wenn die Arbeiten abgeschlossen sind."
54
-
55
- #: includes/classes/wp-maintenance-mode.php:249
56
- #, php-format
57
- msgid ""
58
- "WP Maintenance Mode plugin was relaunched and you MUST revise <a href=\"%s"
59
- "\">settings</a>."
60
- msgstr ""
61
- "Das WP Wartungsmodus Plugin wurde neu erstellt und du MUSST die <a href=\"%s"
62
- "\"></a> Einstellungen bearbeiten."
63
-
64
- #: includes/classes/wp-maintenance-mode.php:425
65
- #: includes/classes/wp-maintenance-mode.php:439
66
- msgid "Maintenance Mode"
67
- msgstr "Wartungsmodus"
68
-
69
- #: includes/classes/wp-maintenance-mode.php:630
70
- #: includes/classes/wp-maintenance-mode.php:658
71
- msgid "Please enter a valid email address."
72
- msgstr "Bitte gib eine valide E-Mail-Adresse an."
73
-
74
- #: includes/classes/wp-maintenance-mode.php:641
75
- msgid "You successfuly subscribed. Thanks!"
76
- msgstr "Erfolgreich abonniert, Danke!"
77
-
78
- #: includes/classes/wp-maintenance-mode.php:654
79
- msgid "All fields required."
80
- msgstr "Alle Felder sind notwendig."
81
-
82
- #: includes/classes/wp-maintenance-mode.php:675
83
- msgid "Message via contact"
84
- msgstr "Mitteilung via Kontakt"
85
-
86
- #: includes/classes/wp-maintenance-mode.php:679
87
- msgid "Your email was sent to the website administrator. Thanks!"
88
- msgstr "Deine E-Mail wurde an den Administrator der Webiste gesandt. Danke!"
89
-
90
- #: views/loginform.php:8
91
- msgid "Login"
92
- msgstr ""
93
-
94
- #: views/maintenance.php:41
95
- msgid "your e-mail..."
96
- msgstr "deine E-Mail..."
97
-
98
- #: views/maintenance.php:42 views/settings.php:260
99
- msgid "Subscribe"
100
- msgstr "Abonniere"
101
-
102
- #: views/maintenance.php:83 views/sidebar.php:7
103
- msgid "Name"
104
- msgstr "Name"
105
-
106
- #: views/maintenance.php:84
107
- msgid "E-mail"
108
- msgstr "E-Mail"
109
-
110
- #: views/maintenance.php:86
111
- msgid "Your message"
112
- msgstr "Deine Mitteilung"
113
-
114
- #: views/maintenance.php:87
115
- msgid "Send"
116
- msgstr "Senden"
117
-
118
- #: views/maintenance.php:92
119
- msgid "Contact us"
120
- msgstr "Kontaktiere uns"
121
-
122
- #: views/maintenance.php:97
123
- msgid "Dashboard"
124
- msgstr ""
125
-
126
- #: views/settings.php:6
127
- msgid "Settings saved."
128
- msgstr "Einstellungen gespeichert."
129
-
130
- #: views/settings.php:13
131
- msgid "General"
132
- msgstr "Allgemein"
133
-
134
- #: views/settings.php:14
135
- msgid "Design"
136
- msgstr "Design"
137
-
138
- #: views/settings.php:15
139
- msgid "Modules"
140
- msgstr "Module"
141
-
142
- #: views/settings.php:24
143
- msgid "Status"
144
- msgstr "Status"
145
-
146
- #: views/settings.php:26
147
- msgid "Activated"
148
- msgstr "Aktiv"
149
-
150
- #: views/settings.php:27
151
- msgid "Deactivated"
152
- msgstr "Inaktiv"
153
-
154
- #: views/settings.php:31
155
- msgid "Bypass for Search Bots"
156
- msgstr "bypass für Such-Bots"
157
-
158
- #: views/settings.php:34 views/settings.php:94 views/settings.php:104
159
- #: views/settings.php:232 views/settings.php:268 views/settings.php:305
160
- #: views/settings.php:373 views/settings.php:405
161
- msgid "Yes"
162
- msgstr "Ja"
163
-
164
- #: views/settings.php:35 views/settings.php:95 views/settings.php:105
165
- #: views/settings.php:233 views/settings.php:269 views/settings.php:306
166
- #: views/settings.php:374 views/settings.php:406
167
- msgid "No"
168
- msgstr "Nein"
169
-
170
- #: views/settings.php:37
171
- msgid "Allow Search Bots to bypass maintenance mode?"
172
- msgstr "Erlaube Such-Bots den Zugang via Bypass?"
173
-
174
- #: views/settings.php:41
175
- msgid "Backend Role"
176
- msgstr "Backend-Rolle"
177
-
178
- #: views/settings.php:48
179
- msgid "Which user role is allowed to access the backend of this blog?"
180
- msgstr "Mit welcher Rolle soll man Zugang zum Backend der Website erhalten?"
181
-
182
- #: views/settings.php:52
183
- msgid "Frontend Role"
184
- msgstr "Frontend-Rolle"
185
-
186
- #: views/settings.php:59
187
- msgid "Which user role is allowed to access the frontend of this blog?"
188
- msgstr "Mit welcher Rolle soll man Zugang zum Frontend der Website erhalten?"
189
-
190
- #: views/settings.php:63
191
- msgid "Robots Meta Tag"
192
- msgstr "Robots Meta Tag"
193
-
194
- #: views/settings.php:69
195
- msgid ""
196
- "The robots meta tag lets you use a granular, page-specific approach to "
197
- "control how an individual page should be indexed and served to users in "
198
- "search results."
199
- msgstr ""
200
- "Mit dem Robots Meta Tag kannst du steuern, wie die Seite während des "
201
- "Wartungsmodus indiziert werden soll."
202
-
203
- #: views/settings.php:73
204
- msgid "Redirection"
205
- msgstr "Weiterleitung"
206
-
207
- #: views/settings.php:76
208
- msgid ""
209
- "If you want to redirect a user to a URL (which is not the WordPress "
210
- "dashboard) after login, then define a URL (incl. http://)"
211
- msgstr ""
212
- "Willst du eine Weiterleitung nach dem Login zu einer URL, dann definiere "
213
- "eine URL (inkl. http://)?"
214
-
215
- #: views/settings.php:80
216
- msgid "Exclude"
217
- msgstr "Auschluss"
218
-
219
- #: views/settings.php:87
220
- msgid ""
221
- "Exclude feed, pages, archives or IPs from maintenance mode. Add one slug / "
222
- "IP per line!"
223
- msgstr ""
224
- "Auschluss vom Wartungsmodus von Feed, Seiten, Archiven oder IPs möglich. "
225
- "Ergänze einen Slug oder die IP pro Zeile."
226
-
227
- #: views/settings.php:91
228
- msgid "Notice"
229
- msgstr "Hinweis"
230
-
231
- #: views/settings.php:97
232
- msgid "Do you want to see notices when maintenance mode is activated?"
233
- msgstr "Willst du den Hinweis sehen, wenn der Wartungsmodus aktiv ist?"
234
-
235
- #: views/settings.php:101
236
- msgid "Dashboard link"
237
- msgstr ""
238
-
239
- #: views/settings.php:107
240
- msgid ""
241
- "Do you want to add a link to the dashboard on your maintenance mode page?"
242
- msgstr ""
243
-
244
- #: views/settings.php:115 views/settings.php:218 views/settings.php:421
245
- msgid "Save settings"
246
- msgstr "Einstellungen speichern"
247
-
248
- #: views/settings.php:116 views/settings.php:219 views/settings.php:422
249
- msgid "Reset settings"
250
- msgstr "Einstellungen zurücksetzen"
251
-
252
- #: views/settings.php:121
253
- msgid "Content"
254
- msgstr "Inhalt"
255
-
256
- #: views/settings.php:126
257
- msgid "Title (HTML tag)"
258
- msgstr "Title (html Tag)"
259
-
260
- #: views/settings.php:132
261
- msgid "Heading"
262
- msgstr "Überschrift"
263
-
264
- #: views/settings.php:139 views/settings.php:274
265
- msgid "Text"
266
- msgstr "Text"
267
-
268
- #: views/settings.php:159
269
- msgid "Background"
270
- msgstr "Hintergrund"
271
-
272
- #: views/settings.php:164
273
- msgid "Choose type"
274
- msgstr "Type wählen"
275
-
276
- #: views/settings.php:167
277
- msgid "Custom color"
278
- msgstr "Benutzerdefinierte Farbe"
279
-
280
- #: views/settings.php:168
281
- msgid "Uploaded background"
282
- msgstr "Hochgeladene Hintergründe"
283
-
284
- #: views/settings.php:169
285
- msgid "Predefined background"
286
- msgstr "Vordefinierte Hintergründe"
287
-
288
- #: views/settings.php:174
289
- msgid "Choose color"
290
- msgstr "Farbe wählen"
291
-
292
- #: views/settings.php:180
293
- msgid "Upload background"
294
- msgstr "Hintergund laden"
295
-
296
- #: views/settings.php:184
297
- msgid "Backgrounds should have 1920x1280 px size."
298
- msgstr "Hintergründe sollten eine Größe von 1920x1280 px haben."
299
-
300
- #: views/settings.php:189
301
- msgid "Choose background"
302
- msgstr "Hintergrund wählen"
303
-
304
- #: views/settings.php:191
305
- msgid "source <a href=\"%\" target=\"_blank\">Free Photos</a>"
306
- msgstr "oorsprong <a href=\"%\" target=\"_blank\">Free Photos</a>"
307
-
308
- #: views/settings.php:224
309
- msgid "Countdown"
310
- msgstr "Countdown"
311
-
312
- #: views/settings.php:229
313
- msgid "Show countdown?"
314
- msgstr "Zeige Countdown?"
315
-
316
- #: views/settings.php:238
317
- msgid "Start date"
318
- msgstr "Start-Datum"
319
-
320
- #: views/settings.php:244
321
- msgid "Countdown (remaining time)"
322
- msgstr "Countdown (Restzeit)"
323
-
324
- #: views/settings.php:246
325
- msgid "Days"
326
- msgstr "Tage"
327
-
328
- #: views/settings.php:247
329
- msgid "Hours"
330
- msgstr "Stunden"
331
-
332
- #: views/settings.php:248
333
- msgid "Minutes"
334
- msgstr "Minuten"
335
-
336
- #: views/settings.php:252
337
- msgid "Color"
338
- msgstr "Farbe"
339
-
340
- #: views/settings.php:265
341
- msgid "Show subscribe?"
342
- msgstr "Zeige Abonnenten?"
343
-
344
- #: views/settings.php:281
345
- msgid "Stats"
346
- msgstr "Statistik"
347
-
348
- #: views/settings.php:285
349
- #, php-format
350
- msgid "You have %d subscriber(s)"
351
- msgstr "Du hast %d Abonnenten"
352
-
353
- #: views/settings.php:290
354
- msgid "Export as CSV"
355
- msgstr "Export als CSV"
356
-
357
- #: views/settings.php:297
358
- msgid "Social Networks"
359
- msgstr "Soziale Netzwerke"
360
-
361
- #: views/settings.php:302
362
- msgid "Show social networks?"
363
- msgstr "Zeige soziale Netzwerke?"
364
-
365
- #: views/settings.php:311
366
- msgid "Links target?"
367
- msgstr ""
368
-
369
- #: views/settings.php:314
370
- msgid "New page"
371
- msgstr ""
372
-
373
- #: views/settings.php:315
374
- msgid "Same page"
375
- msgstr ""
376
-
377
- #: views/settings.php:317
378
- msgid "Choose how the links will open."
379
- msgstr ""
380
-
381
- #: views/settings.php:365
382
- msgid "Contact"
383
- msgstr "Kontakt"
384
-
385
- #: views/settings.php:370
386
- msgid "Show contact?"
387
- msgstr "Zeige Kontakt?"
388
-
389
- #: views/settings.php:379
390
- msgid "Email address"
391
- msgstr "E-Mail-Adresse"
392
-
393
- #: views/settings.php:385
394
- msgid "Effects"
395
- msgstr "Effekte"
396
-
397
- #: views/settings.php:388
398
- msgid "Move top - Move bottom"
399
- msgstr "Bewegung nach oben - nach untern"
400
-
401
- #: views/settings.php:389
402
- msgid "Zoom - Zoomed"
403
- msgstr "Zoom - Vergrößern"
404
-
405
- #: views/settings.php:390
406
- msgid "Fold - Unfold"
407
- msgstr "Falten - Klappen"
408
-
409
- #: views/settings.php:397
410
- msgid "Google Analytics"
411
- msgstr ""
412
-
413
- #: views/settings.php:402
414
- msgid "Use Google Analytics?"
415
- msgstr ""
416
-
417
- #: views/settings.php:411
418
- msgid "Tracking code"
419
- msgstr ""
420
-
421
- #: views/sidebar.php:3
422
- msgid "Plugin Info"
423
- msgstr "Plugin Info"
424
-
425
- #: views/sidebar.php:13
426
- msgid "Author"
427
- msgstr "Autor"
428
-
429
- #: views/sidebar.php:14
430
- msgid "Website"
431
- msgstr "Website"
432
-
433
- #: views/sidebar.php:15
434
- msgid "Twitter"
435
- msgstr "Twitter"
436
-
437
- #: views/sidebar.php:16
438
- msgid "GitHub"
439
- msgstr "GitHub"
440
-
441
- #: views/sidebar.php:22
442
- msgid "WordPress Themes"
443
- msgstr ""
444
-
445
- #: views/sidebar.php:31
446
- msgid "Resources"
447
- msgstr "Ressourcen"
448
-
449
- #~ msgid "Subscribe now for early access to new WordPress themes."
450
- #~ msgstr "Abonniere jetzt für frühen Zugang zu neuen WordPress Themes."
451
-
452
- #~ msgid "Enter your email address"
453
- #~ msgstr "Gib deine E-Mail-Adresse an"
454
-
455
- #~ msgid "News"
456
- #~ msgstr "News"
457
-
458
- #~ msgid "Developed by <a href=\"%s\">Designmodo</a>"
459
- #~ msgstr "Entwickelt durch <a href=\"%s\">Designmodo</a>"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ msgid ""
2
+ msgstr ""
3
+ "Project-Id-Version: WP Maintenance Mode 2.0.4\n"
4
+ "POT-Creation-Date: 2016-06-17 03:11+0300\n"
5
+ "PO-Revision-Date: \n"
6
+ "Last-Translator: \n"
7
+ "Language-Team: Designmodo <info@designmodo.com>\n"
8
+ "Language: de\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.8.8\n"
13
+ "X-Poedit-SourceCharset: UTF-8\n"
14
+ "X-Poedit-KeywordsList: __;_e;__ngettext:1,2;_n:1,2;__ngettext_noop:1,2;"
15
+ "_n_noop:1,2;_c,_nc:4c,1,2;_x:1,2c;_ex:1,2c;_nx:4c,1,2;_nx_noop:4c,1,2;"
16
+ "esc_attr__;esc_attr_e;esc_attr_x:1,2c;esc_html__;esc_html_e;"
17
+ "esc_html_x:1,2c\n"
18
+ "X-Poedit-Basepath: ..\n"
19
+ "Plural-Forms: nplurals=2; plural=(n != 1);\n"
20
+ "X-Poedit-SearchPath-0: includes/classes\n"
21
+ "X-Poedit-SearchPath-1: views\n"
22
+ "X-Poedit-SearchPath-2: .\n"
23
+
24
+ #: includes/classes/wp-maintenance-mode-admin.php:121
25
+ #: includes/classes/wp-maintenance-mode-admin.php:159
26
+ #: includes/classes/wp-maintenance-mode-admin.php:181
27
+ msgid "You do not have access to this resource."
28
+ msgstr ""
29
+
30
+ #: includes/classes/wp-maintenance-mode-admin.php:165 views/settings.php:295
31
+ #, php-format
32
+ msgid "You have %d subscriber(s)"
33
+ msgstr "Du hast %d Abonnenten"
34
+
35
+ #: includes/classes/wp-maintenance-mode-admin.php:186
36
+ msgid "The tab slug must not be empty."
37
+ msgstr ""
38
+
39
+ #: includes/classes/wp-maintenance-mode-admin.php:191
40
+ msgid "The tab slug must exist."
41
+ msgstr ""
42
+
43
+ #: includes/classes/wp-maintenance-mode-admin.php:211
44
+ msgid "WP Maintenance Mode"
45
+ msgstr "WP Wartungsmodus"
46
+
47
+ #: includes/classes/wp-maintenance-mode-admin.php:425
48
+ msgid "Settings"
49
+ msgstr "Einstellungen"
50
+
51
+ #: includes/classes/wp-maintenance-mode-admin.php:444
52
+ #, php-format
53
+ msgid ""
54
+ "The Maintenance Mode is <strong>active</strong>. Please don't forget to <a "
55
+ "href=\"%s\">deactivate</a> as soon as you are done."
56
+ msgstr ""
57
+ "Der Wartungsmodus ist <strong>aktiv</strong>. Bitte vergiss nicht ihn zu <a "
58
+ "href=\"%s\">deaktivieren</a>, wenn er nicht mehr benötigt wird."
59
+
60
+ #: includes/classes/wp-maintenance-mode-admin.php:481
61
+ msgid "Notice key cannot be empty."
62
+ msgstr ""
63
+
64
+ #: includes/classes/wp-maintenance-mode.php:103
65
+ #: includes/classes/wp-maintenance-mode.php:104
66
+ msgid "Maintenance mode"
67
+ msgstr "Wartungsmodus"
68
+
69
+ #: includes/classes/wp-maintenance-mode.php:106
70
+ msgid ""
71
+ "<p>Sorry for the inconvenience.<br />Our website is currently undergoing "
72
+ "scheduled maintenance.<br />Thank you for your understanding.</p>"
73
+ msgstr ""
74
+
75
+ #: includes/classes/wp-maintenance-mode.php:124
76
+ msgid "Notify me when it's ready"
77
+ msgstr "Informiere mich, wenn die Arbeiten abgeschlossen sind."
78
+
79
+ #: includes/classes/wp-maintenance-mode.php:259
80
+ #, php-format
81
+ msgid ""
82
+ "WP Maintenance Mode plugin was relaunched and you MUST revise <a href=\"%s"
83
+ "\">settings</a>."
84
+ msgstr ""
85
+ "Das WP Wartungsmodus Plugin wurde neu erstellt und du MUSST die <a href=\"%s"
86
+ "\"></a> Einstellungen bearbeiten."
87
+
88
+ #: includes/classes/wp-maintenance-mode.php:449
89
+ #: includes/classes/wp-maintenance-mode.php:463
90
+ msgid "Maintenance Mode"
91
+ msgstr "Wartungsmodus"
92
+
93
+ #: includes/classes/wp-maintenance-mode.php:687
94
+ #: includes/classes/wp-maintenance-mode.php:721 views/maintenance.php:85
95
+ msgid "Please enter a valid email address."
96
+ msgstr "Bitte gib eine gültige E-Mail-Adresse an."
97
+
98
+ #: includes/classes/wp-maintenance-mode.php:699
99
+ msgid "You successfully subscribed. Thanks!"
100
+ msgstr ""
101
+
102
+ #: includes/classes/wp-maintenance-mode.php:717
103
+ msgid "All fields required."
104
+ msgstr "Alle Felder sind notwendig."
105
+
106
+ #: includes/classes/wp-maintenance-mode.php:726
107
+ msgid "Message via contact"
108
+ msgstr "Mitteilung via Kontakt"
109
+
110
+ #: includes/classes/wp-maintenance-mode.php:738
111
+ msgid "Your email was sent to the website administrator. Thanks!"
112
+ msgstr "Deine E-Mail wurde an den Administrator der Website gesendet. Danke!"
113
+
114
+ #: views/contact.php:34
115
+ #, php-format
116
+ msgid "You have been contacted via %s."
117
+ msgstr ""
118
+
119
+ #: views/contact.php:50
120
+ msgid "Name:"
121
+ msgstr ""
122
+
123
+ #: views/contact.php:62
124
+ msgid "Email:"
125
+ msgstr ""
126
+
127
+ #: views/contact.php:74
128
+ msgid "Content:"
129
+ msgstr ""
130
+
131
+ #: views/loginform.php:8
132
+ msgid "Login"
133
+ msgstr ""
134
+
135
+ #: views/maintenance.php:42
136
+ msgid "your e-mail..."
137
+ msgstr "deine E-Mail..."
138
+
139
+ #: views/maintenance.php:43 views/settings.php:270
140
+ msgid "Subscribe"
141
+ msgstr "Abonniere"
142
+
143
+ #: views/maintenance.php:84 views/sidebar.php:7
144
+ msgid "Name"
145
+ msgstr "Name"
146
+
147
+ #: views/maintenance.php:84 views/maintenance.php:85 views/maintenance.php:87
148
+ msgid "This field is required."
149
+ msgstr ""
150
+
151
+ #: views/maintenance.php:85
152
+ msgid "E-mail"
153
+ msgstr "E-Mail"
154
+
155
+ #: views/maintenance.php:87
156
+ msgid "Your message"
157
+ msgstr "Deine Mitteilung"
158
+
159
+ #: views/maintenance.php:88
160
+ msgid "Send"
161
+ msgstr "Senden"
162
+
163
+ #: views/maintenance.php:93
164
+ msgid "Contact us"
165
+ msgstr "Kontaktiere uns"
166
+
167
+ #: views/maintenance.php:98
168
+ msgid "Dashboard"
169
+ msgstr ""
170
+
171
+ #: views/settings.php:6
172
+ msgid "Settings saved."
173
+ msgstr "Einstellungen gespeichert."
174
+
175
+ #: views/settings.php:13
176
+ msgid "General"
177
+ msgstr "Allgemein"
178
+
179
+ #: views/settings.php:14
180
+ msgid "Design"
181
+ msgstr "Design"
182
+
183
+ #: views/settings.php:15
184
+ msgid "Modules"
185
+ msgstr "Module"
186
+
187
+ #: views/settings.php:24
188
+ msgid "Status"
189
+ msgstr "Status"
190
+
191
+ #: views/settings.php:26
192
+ msgid "Activated"
193
+ msgstr "Aktiv"
194
+
195
+ #: views/settings.php:27
196
+ msgid "Deactivated"
197
+ msgstr "Inaktiv"
198
+
199
+ #: views/settings.php:31
200
+ msgid "Bypass for Search Bots"
201
+ msgstr "Bypass für Such-Bots"
202
+
203
+ #: views/settings.php:34 views/settings.php:104 views/settings.php:114
204
+ #: views/settings.php:242 views/settings.php:278 views/settings.php:316
205
+ #: views/settings.php:384 views/settings.php:416
206
+ msgid "Yes"
207
+ msgstr "Ja"
208
+
209
+ #: views/settings.php:35 views/settings.php:105 views/settings.php:115
210
+ #: views/settings.php:243 views/settings.php:279 views/settings.php:317
211
+ #: views/settings.php:385 views/settings.php:417
212
+ msgid "No"
213
+ msgstr "Nein"
214
+
215
+ #: views/settings.php:37
216
+ msgid "Allow Search Bots to bypass maintenance mode?"
217
+ msgstr "Erlaube Such-Bots den Zugang via Bypass?"
218
+
219
+ #: views/settings.php:41
220
+ msgid "Backend Role"
221
+ msgstr "Backend-Rolle"
222
+
223
+ #: views/settings.php:43 views/settings.php:59
224
+ msgid "Select role(s)"
225
+ msgstr ""
226
+
227
+ #: views/settings.php:53
228
+ msgid ""
229
+ "Which user role is allowed to access the backend of this blog? "
230
+ "Administrators will always have access."
231
+ msgstr ""
232
+
233
+ #: views/settings.php:57
234
+ msgid "Frontend Role"
235
+ msgstr "Frontend-Rolle"
236
+
237
+ #: views/settings.php:69
238
+ msgid ""
239
+ "Which user role is allowed to access the frontend of this blog? "
240
+ "Administrators will always have access."
241
+ msgstr ""
242
+
243
+ #: views/settings.php:73
244
+ msgid "Robots Meta Tag"
245
+ msgstr "Robots Meta Tag"
246
+
247
+ #: views/settings.php:79
248
+ msgid ""
249
+ "The robots meta tag lets you use a granular, page-specific approach to "
250
+ "control how an individual page should be indexed and served to users in "
251
+ "search results."
252
+ msgstr ""
253
+ "Mit dem Robots Meta Tag kannst du steuern, wie die Seite während des "
254
+ "Wartungsmodus indiziert werden soll."
255
+
256
+ #: views/settings.php:83
257
+ msgid "Redirection"
258
+ msgstr "Weiterleitung"
259
+
260
+ #: views/settings.php:86
261
+ msgid ""
262
+ "If you want to redirect a user (with no access to Dashboard/Backend) to a "
263
+ "URL (different from WordPress Dashboard URL) after login, then define a URL "
264
+ "(incl. http://)"
265
+ msgstr ""
266
+
267
+ #: views/settings.php:90
268
+ msgid "Exclude"
269
+ msgstr "Ausschluss"
270
+
271
+ #: views/settings.php:97
272
+ msgid ""
273
+ "Exclude feed, pages, archives or IPs from maintenance mode. Add one slug / "
274
+ "IP per line!"
275
+ msgstr ""
276
+ "Ausschluss vom Wartungsmodus von Feed, Seiten, Archiven oder IPs möglich. "
277
+ "Ergänze einen Slug oder die IP pro Zeile."
278
+
279
+ #: views/settings.php:101
280
+ msgid "Notice"
281
+ msgstr "Hinweis"
282
+
283
+ #: views/settings.php:107
284
+ msgid "Do you want to see notices when maintenance mode is activated?"
285
+ msgstr "Willst du den Hinweis sehen, wenn der Wartungsmodus aktiv ist?"
286
+
287
+ #: views/settings.php:111
288
+ msgid "Dashboard link"
289
+ msgstr ""
290
+
291
+ #: views/settings.php:117
292
+ msgid ""
293
+ "Do you want to add a link to the dashboard on your maintenance mode page?"
294
+ msgstr "Soll ein Link zum Backend auf der Wartungswebseite angezeigt werden?"
295
+
296
+ #: views/settings.php:125 views/settings.php:228 views/settings.php:432
297
+ msgid "Save settings"
298
+ msgstr "Einstellungen speichern"
299
+
300
+ #: views/settings.php:126 views/settings.php:229 views/settings.php:433
301
+ msgid "Reset settings"
302
+ msgstr "Einstellungen zurücksetzen"
303
+
304
+ #: views/settings.php:131
305
+ msgid "Content"
306
+ msgstr "Inhalt"
307
+
308
+ #: views/settings.php:136
309
+ msgid "Title (HTML tag)"
310
+ msgstr "Titel (html Tag)"
311
+
312
+ #: views/settings.php:142
313
+ msgid "Heading"
314
+ msgstr "Überschrift"
315
+
316
+ #: views/settings.php:149 views/settings.php:284
317
+ msgid "Text"
318
+ msgstr "Text"
319
+
320
+ #: views/settings.php:169
321
+ msgid "Background"
322
+ msgstr "Hintergrund"
323
+
324
+ #: views/settings.php:174
325
+ msgid "Choose type"
326
+ msgstr "Type wählen"
327
+
328
+ #: views/settings.php:177
329
+ msgid "Custom color"
330
+ msgstr "Benutzerdefinierte Farbe"
331
+
332
+ #: views/settings.php:178
333
+ msgid "Uploaded background"
334
+ msgstr "Hochgeladene Hintergründe"
335
+
336
+ #: views/settings.php:179
337
+ msgid "Predefined background"
338
+ msgstr "Vordefinierte Hintergründe"
339
+
340
+ #: views/settings.php:184
341
+ msgid "Choose color"
342
+ msgstr "Farbe wählen"
343
+
344
+ #: views/settings.php:190
345
+ msgid "Upload background"
346
+ msgstr "Hintergrund laden"
347
+
348
+ #: views/settings.php:194
349
+ msgid "Backgrounds should have 1920x1280 px size."
350
+ msgstr "Hintergründe sollten eine Größe von 1920x1280 px haben."
351
+
352
+ #: views/settings.php:199
353
+ msgid "Choose background"
354
+ msgstr "Hintergrund wählen"
355
+
356
+ #: views/settings.php:201
357
+ #, php-format
358
+ msgid "source <a href=\"%s\" target=\"_blank\">Free Photos</a>"
359
+ msgstr ""
360
+
361
+ #: views/settings.php:234
362
+ msgid "Countdown"
363
+ msgstr "Countdown"
364
+
365
+ #: views/settings.php:239
366
+ msgid "Show countdown?"
367
+ msgstr "Zeige Countdown?"
368
+
369
+ #: views/settings.php:248
370
+ msgid "Start date"
371
+ msgstr "Start-Datum"
372
+
373
+ #: views/settings.php:254
374
+ msgid "Countdown (remaining time)"
375
+ msgstr "Countdown (Restzeit)"
376
+
377
+ #: views/settings.php:256
378
+ msgid "Days"
379
+ msgstr "Tage"
380
+
381
+ #: views/settings.php:257
382
+ msgid "Hours"
383
+ msgstr "Stunden"
384
+
385
+ #: views/settings.php:258
386
+ msgid "Minutes"
387
+ msgstr "Minuten"
388
+
389
+ #: views/settings.php:262
390
+ msgid "Color"
391
+ msgstr "Farbe"
392
+
393
+ #: views/settings.php:275
394
+ msgid "Show subscribe?"
395
+ msgstr "Zeige Abonnenten?"
396
+
397
+ #: views/settings.php:291
398
+ msgid "Stats"
399
+ msgstr "Statistik"
400
+
401
+ #: views/settings.php:300
402
+ msgid "Export as CSV"
403
+ msgstr "Export als CSV"
404
+
405
+ #: views/settings.php:301
406
+ msgid "Empty subscribers list"
407
+ msgstr ""
408
+
409
+ #: views/settings.php:308
410
+ msgid "Social Networks"
411
+ msgstr "Soziale Netzwerke"
412
+
413
+ #: views/settings.php:313
414
+ msgid "Show social networks?"
415
+ msgstr "Zeige soziale Netzwerke?"
416
+
417
+ #: views/settings.php:322
418
+ msgid "Links target?"
419
+ msgstr "Link-Ziel"
420
+
421
+ #: views/settings.php:325
422
+ msgid "New page"
423
+ msgstr "Neue Seite"
424
+
425
+ #: views/settings.php:326
426
+ msgid "Same page"
427
+ msgstr "Selbe Seite"
428
+
429
+ #: views/settings.php:328
430
+ msgid "Choose how the links will open."
431
+ msgstr "Wie soll der Link geöffnet werden?"
432
+
433
+ #: views/settings.php:376
434
+ msgid "Contact"
435
+ msgstr "Kontakt"
436
+
437
+ #: views/settings.php:381
438
+ msgid "Show contact?"
439
+ msgstr "Zeige Kontakt?"
440
+
441
+ #: views/settings.php:390
442
+ msgid "Email address"
443
+ msgstr "E-Mail-Adresse"
444
+
445
+ #: views/settings.php:396
446
+ msgid "Effects"
447
+ msgstr "Effekte"
448
+
449
+ #: views/settings.php:399
450
+ msgid "Move top - Move bottom"
451
+ msgstr "Bewegung nach oben - nach untern"
452
+
453
+ #: views/settings.php:400
454
+ msgid "Zoom - Zoomed"
455
+ msgstr "Zoom - Vergrößern"
456
+
457
+ #: views/settings.php:401
458
+ msgid "Fold - Unfold"
459
+ msgstr "Falten - Klappen"
460
+
461
+ #: views/settings.php:408
462
+ msgid "Google Analytics"
463
+ msgstr "Google Analytics"
464
+
465
+ #: views/settings.php:413
466
+ msgid "Use Google Analytics?"
467
+ msgstr "Wird Google Analytics verwendet?"
468
+
469
+ #: views/settings.php:422
470
+ msgid "Tracking code"
471
+ msgstr ""
472
+
473
+ #: views/sidebar.php:3
474
+ msgid "Plugin Info"
475
+ msgstr "Plugin Info"
476
+
477
+ #: views/sidebar.php:13
478
+ msgid "Author"
479
+ msgstr "Autor"
480
+
481
+ #: views/sidebar.php:14
482
+ msgid "Website"
483
+ msgstr "Webseite"
484
+
485
+ #: views/sidebar.php:15
486
+ msgid "Twitter"
487
+ msgstr "Twitter"
488
+
489
+ #: views/sidebar.php:16
490
+ msgid "GitHub"
491
+ msgstr "GitHub"
492
+
493
+ #: views/sidebar.php:27
494
+ msgid "Other products"
495
+ msgstr ""
496
+
497
+ #: views/sidebar.php:44
498
+ msgid "Resources"
499
+ msgstr "Ressourcen"
500
+
501
+ #~ msgid "You successfuly subscribed. Thanks!"
502
+ #~ msgstr "Erfolgreich abonniert, Danke!"
503
+
504
+ #~ msgid "Which user role is allowed to access the backend of this blog?"
505
+ #~ msgstr ""
506
+ #~ "Mit welcher Rolle soll man Zugang zum Backend der Webseite erhalten?"
507
+
508
+ #~ msgid "Which user role is allowed to access the frontend of this blog?"
509
+ #~ msgstr ""
510
+ #~ "Mit welcher Rolle soll man Zugang zum Frontend der Webseite erhalten?"
511
+
512
+ #~ msgid ""
513
+ #~ "If you want to redirect a user to a URL (which is not the WordPress "
514
+ #~ "dashboard) after login, then define a URL (incl. http://)"
515
+ #~ msgstr ""
516
+ #~ "Willst du eine Weiterleitung nach dem Login zu einer URL, dann definiere "
517
+ #~ "eine URL (inkl. http://)?"
518
+
519
+ #~ msgid "source <a href=\"%\" target=\"_blank\">Free Photos</a>"
520
+ #~ msgstr "Quelle <a href=\"%\" target=\"_blank\">Free Photos</a>"
521
+
522
+ #~ msgid "Subscribe now for early access to new WordPress themes."
523
+ #~ msgstr "Abonniere jetzt für frühen Zugang zu neuen WordPress Themes."
524
+
525
+ #~ msgid "Enter your email address"
526
+ #~ msgstr "Gib deine E-Mail-Adresse an"
527
+
528
+ #~ msgid "News"
529
+ #~ msgstr "News"
530
+
531
+ #~ msgid "Developed by <a href=\"%s\">Designmodo</a>"
532
+ #~ msgstr "Entwickelt durch <a href=\"%s\">Designmodo</a>"
languages/wp-maintenance-mode-en_US.mo CHANGED
Binary file
languages/wp-maintenance-mode-en_US.po CHANGED
@@ -1,435 +1,491 @@
1
- msgid ""
2
- msgstr ""
3
- "Project-Id-Version: WP Maintenance Mode 2.0.3\n"
4
- "POT-Creation-Date: 2014-09-26 19:03+0200\n"
5
- "PO-Revision-Date: 2014-09-26 19:03+0200\n"
6
- "Last-Translator: \n"
7
- "Language-Team: Designmodo <info@designmodo.com>\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.7\n"
13
- "X-Poedit-Basepath: ../\n"
14
- "Plural-Forms: nplurals=2; plural=(n != 1);\n"
15
- "X-Poedit-SourceCharset: UTF-8\n"
16
- "X-Poedit-KeywordsList: __;_e\n"
17
- "X-Poedit-SearchPath-0: .\n"
18
- "X-Poedit-SearchPath-1: includes/classes\n"
19
- "X-Poedit-SearchPath-2: views\n"
20
-
21
- #: includes/classes/wp-maintenance-mode-admin.php:154
22
- msgid "WP Maintenance Mode"
23
- msgstr ""
24
-
25
- #: includes/classes/wp-maintenance-mode-admin.php:358
26
- msgid "Settings"
27
- msgstr ""
28
-
29
- #: includes/classes/wp-maintenance-mode-admin.php:377
30
- #, php-format
31
- msgid ""
32
- "The Maintenance Mode is <strong>active</strong>. Please don't forget to <a "
33
- "href=\"%s\">deactivate</a> as soon as you are done."
34
- msgstr ""
35
-
36
- #: includes/classes/wp-maintenance-mode.php:100
37
- #: includes/classes/wp-maintenance-mode.php:101
38
- msgid "Maintenance mode"
39
- msgstr ""
40
-
41
- #: includes/classes/wp-maintenance-mode.php:103
42
- msgid ""
43
- "<p>Sorry for the inconvenience.<br />Our website is currently undergoing "
44
- "scheduled maintenance.<br />Thank you for your understanding.</p>"
45
- msgstr ""
46
-
47
- #: includes/classes/wp-maintenance-mode.php:121
48
- msgid "Notify me when it's ready"
49
- msgstr ""
50
-
51
- #: includes/classes/wp-maintenance-mode.php:249
52
- #, php-format
53
- msgid ""
54
- "WP Maintenance Mode plugin was relaunched and you MUST revise <a href=\"%s"
55
- "\">settings</a>."
56
- msgstr ""
57
-
58
- #: includes/classes/wp-maintenance-mode.php:425
59
- #: includes/classes/wp-maintenance-mode.php:439
60
- msgid "Maintenance Mode"
61
- msgstr ""
62
-
63
- #: includes/classes/wp-maintenance-mode.php:630
64
- #: includes/classes/wp-maintenance-mode.php:658
65
- msgid "Please enter a valid email address."
66
- msgstr ""
67
-
68
- #: includes/classes/wp-maintenance-mode.php:641
69
- msgid "You successfuly subscribed. Thanks!"
70
- msgstr ""
71
-
72
- #: includes/classes/wp-maintenance-mode.php:654
73
- msgid "All fields required."
74
- msgstr ""
75
-
76
- #: includes/classes/wp-maintenance-mode.php:675
77
- msgid "Message via contact"
78
- msgstr ""
79
-
80
- #: includes/classes/wp-maintenance-mode.php:679
81
- msgid "Your email was sent to the website administrator. Thanks!"
82
- msgstr ""
83
-
84
- #: views/loginform.php:8
85
- msgid "Login"
86
- msgstr ""
87
-
88
- #: views/maintenance.php:41
89
- msgid "your e-mail..."
90
- msgstr ""
91
-
92
- #: views/maintenance.php:42 views/settings.php:260
93
- msgid "Subscribe"
94
- msgstr ""
95
-
96
- #: views/maintenance.php:83 views/sidebar.php:7
97
- msgid "Name"
98
- msgstr ""
99
-
100
- #: views/maintenance.php:84
101
- msgid "E-mail"
102
- msgstr ""
103
-
104
- #: views/maintenance.php:86
105
- msgid "Your message"
106
- msgstr ""
107
-
108
- #: views/maintenance.php:87
109
- msgid "Send"
110
- msgstr ""
111
-
112
- #: views/maintenance.php:92
113
- msgid "Contact us"
114
- msgstr ""
115
-
116
- #: views/maintenance.php:97
117
- msgid "Dashboard"
118
- msgstr ""
119
-
120
- #: views/settings.php:6
121
- msgid "Settings saved."
122
- msgstr ""
123
-
124
- #: views/settings.php:13
125
- msgid "General"
126
- msgstr ""
127
-
128
- #: views/settings.php:14
129
- msgid "Design"
130
- msgstr ""
131
-
132
- #: views/settings.php:15
133
- msgid "Modules"
134
- msgstr ""
135
-
136
- #: views/settings.php:24
137
- msgid "Status"
138
- msgstr ""
139
-
140
- #: views/settings.php:26
141
- msgid "Activated"
142
- msgstr ""
143
-
144
- #: views/settings.php:27
145
- msgid "Deactivated"
146
- msgstr ""
147
-
148
- #: views/settings.php:31
149
- msgid "Bypass for Search Bots"
150
- msgstr ""
151
-
152
- #: views/settings.php:34 views/settings.php:94 views/settings.php:104
153
- #: views/settings.php:232 views/settings.php:268 views/settings.php:305
154
- #: views/settings.php:373 views/settings.php:405
155
- msgid "Yes"
156
- msgstr ""
157
-
158
- #: views/settings.php:35 views/settings.php:95 views/settings.php:105
159
- #: views/settings.php:233 views/settings.php:269 views/settings.php:306
160
- #: views/settings.php:374 views/settings.php:406
161
- msgid "No"
162
- msgstr ""
163
-
164
- #: views/settings.php:37
165
- msgid "Allow Search Bots to bypass maintenance mode?"
166
- msgstr ""
167
-
168
- #: views/settings.php:41
169
- msgid "Backend Role"
170
- msgstr ""
171
-
172
- #: views/settings.php:48
173
- msgid "Which user role is allowed to access the backend of this blog?"
174
- msgstr ""
175
-
176
- #: views/settings.php:52
177
- msgid "Frontend Role"
178
- msgstr ""
179
-
180
- #: views/settings.php:59
181
- msgid "Which user role is allowed to access the frontend of this blog?"
182
- msgstr ""
183
-
184
- #: views/settings.php:63
185
- msgid "Robots Meta Tag"
186
- msgstr ""
187
-
188
- #: views/settings.php:69
189
- msgid ""
190
- "The robots meta tag lets you use a granular, page-specific approach to "
191
- "control how an individual page should be indexed and served to users in "
192
- "search results."
193
- msgstr ""
194
-
195
- #: views/settings.php:73
196
- msgid "Redirection"
197
- msgstr ""
198
-
199
- #: views/settings.php:76
200
- msgid ""
201
- "If you want to redirect a user to a URL (which is not the WordPress "
202
- "dashboard) after login, then define a URL (incl. http://)"
203
- msgstr ""
204
-
205
- #: views/settings.php:80
206
- msgid "Exclude"
207
- msgstr ""
208
-
209
- #: views/settings.php:87
210
- msgid ""
211
- "Exclude feed, pages, archives or IPs from maintenance mode. Add one slug / "
212
- "IP per line!"
213
- msgstr ""
214
-
215
- #: views/settings.php:91
216
- msgid "Notice"
217
- msgstr ""
218
-
219
- #: views/settings.php:97
220
- msgid "Do you want to see notices when maintenance mode is activated?"
221
- msgstr ""
222
-
223
- #: views/settings.php:101
224
- msgid "Dashboard link"
225
- msgstr ""
226
-
227
- #: views/settings.php:107
228
- msgid ""
229
- "Do you want to add a link to the dashboard on your maintenance mode page?"
230
- msgstr ""
231
-
232
- #: views/settings.php:115 views/settings.php:218 views/settings.php:421
233
- msgid "Save settings"
234
- msgstr ""
235
-
236
- #: views/settings.php:116 views/settings.php:219 views/settings.php:422
237
- msgid "Reset settings"
238
- msgstr ""
239
-
240
- #: views/settings.php:121
241
- msgid "Content"
242
- msgstr ""
243
-
244
- #: views/settings.php:126
245
- msgid "Title (HTML tag)"
246
- msgstr ""
247
-
248
- #: views/settings.php:132
249
- msgid "Heading"
250
- msgstr ""
251
-
252
- #: views/settings.php:139 views/settings.php:274
253
- msgid "Text"
254
- msgstr ""
255
-
256
- #: views/settings.php:159
257
- msgid "Background"
258
- msgstr ""
259
-
260
- #: views/settings.php:164
261
- msgid "Choose type"
262
- msgstr ""
263
-
264
- #: views/settings.php:167
265
- msgid "Custom color"
266
- msgstr ""
267
-
268
- #: views/settings.php:168
269
- msgid "Uploaded background"
270
- msgstr ""
271
-
272
- #: views/settings.php:169
273
- msgid "Predefined background"
274
- msgstr ""
275
-
276
- #: views/settings.php:174
277
- msgid "Choose color"
278
- msgstr ""
279
-
280
- #: views/settings.php:180
281
- msgid "Upload background"
282
- msgstr ""
283
-
284
- #: views/settings.php:184
285
- msgid "Backgrounds should have 1920x1280 px size."
286
- msgstr ""
287
-
288
- #: views/settings.php:189
289
- msgid "Choose background"
290
- msgstr ""
291
-
292
- #: views/settings.php:191
293
- msgid "source <a href=\"%\" target=\"_blank\">Free Photos</a>"
294
- msgstr ""
295
-
296
- #: views/settings.php:224
297
- msgid "Countdown"
298
- msgstr ""
299
-
300
- #: views/settings.php:229
301
- msgid "Show countdown?"
302
- msgstr ""
303
-
304
- #: views/settings.php:238
305
- msgid "Start date"
306
- msgstr ""
307
-
308
- #: views/settings.php:244
309
- msgid "Countdown (remaining time)"
310
- msgstr ""
311
-
312
- #: views/settings.php:246
313
- msgid "Days"
314
- msgstr ""
315
-
316
- #: views/settings.php:247
317
- msgid "Hours"
318
- msgstr ""
319
-
320
- #: views/settings.php:248
321
- msgid "Minutes"
322
- msgstr ""
323
-
324
- #: views/settings.php:252
325
- msgid "Color"
326
- msgstr ""
327
-
328
- #: views/settings.php:265
329
- msgid "Show subscribe?"
330
- msgstr ""
331
-
332
- #: views/settings.php:281
333
- msgid "Stats"
334
- msgstr ""
335
-
336
- #: views/settings.php:285
337
- #, php-format
338
- msgid "You have %d subscriber(s)"
339
- msgstr ""
340
-
341
- #: views/settings.php:290
342
- msgid "Export as CSV"
343
- msgstr ""
344
-
345
- #: views/settings.php:297
346
- msgid "Social Networks"
347
- msgstr ""
348
-
349
- #: views/settings.php:302
350
- msgid "Show social networks?"
351
- msgstr ""
352
-
353
- #: views/settings.php:311
354
- msgid "Links target?"
355
- msgstr ""
356
-
357
- #: views/settings.php:314
358
- msgid "New page"
359
- msgstr ""
360
-
361
- #: views/settings.php:315
362
- msgid "Same page"
363
- msgstr ""
364
-
365
- #: views/settings.php:317
366
- msgid "Choose how the links will open."
367
- msgstr ""
368
-
369
- #: views/settings.php:365
370
- msgid "Contact"
371
- msgstr ""
372
-
373
- #: views/settings.php:370
374
- msgid "Show contact?"
375
- msgstr ""
376
-
377
- #: views/settings.php:379
378
- msgid "Email address"
379
- msgstr ""
380
-
381
- #: views/settings.php:385
382
- msgid "Effects"
383
- msgstr ""
384
-
385
- #: views/settings.php:388
386
- msgid "Move top - Move bottom"
387
- msgstr ""
388
-
389
- #: views/settings.php:389
390
- msgid "Zoom - Zoomed"
391
- msgstr ""
392
-
393
- #: views/settings.php:390
394
- msgid "Fold - Unfold"
395
- msgstr ""
396
-
397
- #: views/settings.php:397
398
- msgid "Google Analytics"
399
- msgstr ""
400
-
401
- #: views/settings.php:402
402
- msgid "Use Google Analytics?"
403
- msgstr ""
404
-
405
- #: views/settings.php:411
406
- msgid "Tracking code"
407
- msgstr ""
408
-
409
- #: views/sidebar.php:3
410
- msgid "Plugin Info"
411
- msgstr ""
412
-
413
- #: views/sidebar.php:13
414
- msgid "Author"
415
- msgstr ""
416
-
417
- #: views/sidebar.php:14
418
- msgid "Website"
419
- msgstr ""
420
-
421
- #: views/sidebar.php:15
422
- msgid "Twitter"
423
- msgstr ""
424
-
425
- #: views/sidebar.php:16
426
- msgid "GitHub"
427
- msgstr ""
428
-
429
- #: views/sidebar.php:22
430
- msgid "WordPress Themes"
431
- msgstr ""
432
-
433
- #: views/sidebar.php:31
434
- msgid "Resources"
435
- msgstr ""
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ msgid ""
2
+ msgstr ""
3
+ "Project-Id-Version: WP Maintenance Mode 2.0.4\n"
4
+ "POT-Creation-Date: 2016-06-17 03:13+0300\n"
5
+ "PO-Revision-Date: 2016-06-17 03:14+0300\n"
6
+ "Last-Translator: Maciej Gryniuk <maciejka45@gmail.com>\n"
7
+ "Language-Team: Designmodo <info@designmodo.com>\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.8.8\n"
13
+ "X-Poedit-Basepath: ..\n"
14
+ "Plural-Forms: nplurals=2; plural=(n != 1);\n"
15
+ "X-Poedit-SourceCharset: UTF-8\n"
16
+ "X-Poedit-KeywordsList: __;_e;__ngettext:1,2;_n:1,2;__ngettext_noop:1,2;"
17
+ "_n_noop:1,2;_c,_nc:4c,1,2;_x:1,2c;_ex:1,2c;_nx:4c,1,2;_nx_noop:4c,1,2;"
18
+ "esc_attr__;esc_attr_e;esc_attr_x:1,2c;esc_html__;esc_html_e;"
19
+ "esc_html_x:1,2c\n"
20
+ "X-Poedit-SearchPath-0: .\n"
21
+ "X-Poedit-SearchPath-1: includes/classes\n"
22
+ "X-Poedit-SearchPath-2: views\n"
23
+
24
+ #: includes/classes/wp-maintenance-mode-admin.php:121
25
+ #: includes/classes/wp-maintenance-mode-admin.php:159
26
+ #: includes/classes/wp-maintenance-mode-admin.php:181
27
+ msgid "You do not have access to this resource."
28
+ msgstr ""
29
+
30
+ #: includes/classes/wp-maintenance-mode-admin.php:165 views/settings.php:295
31
+ #, php-format
32
+ msgid "You have %d subscriber(s)"
33
+ msgstr ""
34
+
35
+ #: includes/classes/wp-maintenance-mode-admin.php:186
36
+ msgid "The tab slug must not be empty."
37
+ msgstr ""
38
+
39
+ #: includes/classes/wp-maintenance-mode-admin.php:191
40
+ msgid "The tab slug must exist."
41
+ msgstr ""
42
+
43
+ #: includes/classes/wp-maintenance-mode-admin.php:211
44
+ msgid "WP Maintenance Mode"
45
+ msgstr ""
46
+
47
+ #: includes/classes/wp-maintenance-mode-admin.php:425
48
+ msgid "Settings"
49
+ msgstr ""
50
+
51
+ #: includes/classes/wp-maintenance-mode-admin.php:444
52
+ #, php-format
53
+ msgid ""
54
+ "The Maintenance Mode is <strong>active</strong>. Please don't forget to <a "
55
+ "href=\"%s\">deactivate</a> as soon as you are done."
56
+ msgstr ""
57
+
58
+ #: includes/classes/wp-maintenance-mode-admin.php:481
59
+ msgid "Notice key cannot be empty."
60
+ msgstr ""
61
+
62
+ #: includes/classes/wp-maintenance-mode.php:103
63
+ #: includes/classes/wp-maintenance-mode.php:104
64
+ msgid "Maintenance mode"
65
+ msgstr ""
66
+
67
+ #: includes/classes/wp-maintenance-mode.php:106
68
+ msgid ""
69
+ "<p>Sorry for the inconvenience.<br />Our website is currently undergoing "
70
+ "scheduled maintenance.<br />Thank you for your understanding.</p>"
71
+ msgstr ""
72
+
73
+ #: includes/classes/wp-maintenance-mode.php:124
74
+ msgid "Notify me when it's ready"
75
+ msgstr ""
76
+
77
+ #: includes/classes/wp-maintenance-mode.php:259
78
+ #, php-format
79
+ msgid ""
80
+ "WP Maintenance Mode plugin was relaunched and you MUST revise <a href=\"%s"
81
+ "\">settings</a>."
82
+ msgstr ""
83
+
84
+ #: includes/classes/wp-maintenance-mode.php:449
85
+ #: includes/classes/wp-maintenance-mode.php:463
86
+ msgid "Maintenance Mode"
87
+ msgstr ""
88
+
89
+ #: includes/classes/wp-maintenance-mode.php:687
90
+ #: includes/classes/wp-maintenance-mode.php:721 views/maintenance.php:85
91
+ msgid "Please enter a valid email address."
92
+ msgstr ""
93
+
94
+ #: includes/classes/wp-maintenance-mode.php:699
95
+ msgid "You successfully subscribed. Thanks!"
96
+ msgstr ""
97
+
98
+ #: includes/classes/wp-maintenance-mode.php:717
99
+ msgid "All fields required."
100
+ msgstr ""
101
+
102
+ #: includes/classes/wp-maintenance-mode.php:726
103
+ msgid "Message via contact"
104
+ msgstr ""
105
+
106
+ #: includes/classes/wp-maintenance-mode.php:738
107
+ msgid "Your email was sent to the website administrator. Thanks!"
108
+ msgstr ""
109
+
110
+ #: views/contact.php:34
111
+ #, php-format
112
+ msgid "You have been contacted via %s."
113
+ msgstr ""
114
+
115
+ #: views/contact.php:50
116
+ msgid "Name:"
117
+ msgstr ""
118
+
119
+ #: views/contact.php:62
120
+ msgid "Email:"
121
+ msgstr ""
122
+
123
+ #: views/contact.php:74
124
+ msgid "Content:"
125
+ msgstr ""
126
+
127
+ #: views/loginform.php:8
128
+ msgid "Login"
129
+ msgstr ""
130
+
131
+ #: views/maintenance.php:42
132
+ msgid "your e-mail..."
133
+ msgstr ""
134
+
135
+ #: views/maintenance.php:43 views/settings.php:270
136
+ msgid "Subscribe"
137
+ msgstr ""
138
+
139
+ #: views/maintenance.php:84 views/sidebar.php:7
140
+ msgid "Name"
141
+ msgstr ""
142
+
143
+ #: views/maintenance.php:84 views/maintenance.php:85 views/maintenance.php:87
144
+ msgid "This field is required."
145
+ msgstr ""
146
+
147
+ #: views/maintenance.php:85
148
+ msgid "E-mail"
149
+ msgstr ""
150
+
151
+ #: views/maintenance.php:87
152
+ msgid "Your message"
153
+ msgstr ""
154
+
155
+ #: views/maintenance.php:88
156
+ msgid "Send"
157
+ msgstr ""
158
+
159
+ #: views/maintenance.php:93
160
+ msgid "Contact us"
161
+ msgstr ""
162
+
163
+ #: views/maintenance.php:98
164
+ msgid "Dashboard"
165
+ msgstr ""
166
+
167
+ #: views/settings.php:6
168
+ msgid "Settings saved."
169
+ msgstr ""
170
+
171
+ #: views/settings.php:13
172
+ msgid "General"
173
+ msgstr ""
174
+
175
+ #: views/settings.php:14
176
+ msgid "Design"
177
+ msgstr ""
178
+
179
+ #: views/settings.php:15
180
+ msgid "Modules"
181
+ msgstr ""
182
+
183
+ #: views/settings.php:24
184
+ msgid "Status"
185
+ msgstr ""
186
+
187
+ #: views/settings.php:26
188
+ msgid "Activated"
189
+ msgstr ""
190
+
191
+ #: views/settings.php:27
192
+ msgid "Deactivated"
193
+ msgstr ""
194
+
195
+ #: views/settings.php:31
196
+ msgid "Bypass for Search Bots"
197
+ msgstr ""
198
+
199
+ #: views/settings.php:34 views/settings.php:104 views/settings.php:114
200
+ #: views/settings.php:242 views/settings.php:278 views/settings.php:316
201
+ #: views/settings.php:384 views/settings.php:416
202
+ msgid "Yes"
203
+ msgstr ""
204
+
205
+ #: views/settings.php:35 views/settings.php:105 views/settings.php:115
206
+ #: views/settings.php:243 views/settings.php:279 views/settings.php:317
207
+ #: views/settings.php:385 views/settings.php:417
208
+ msgid "No"
209
+ msgstr ""
210
+
211
+ #: views/settings.php:37
212
+ msgid "Allow Search Bots to bypass maintenance mode?"
213
+ msgstr ""
214
+
215
+ #: views/settings.php:41
216
+ msgid "Backend Role"
217
+ msgstr ""
218
+
219
+ #: views/settings.php:43 views/settings.php:59
220
+ msgid "Select role(s)"
221
+ msgstr ""
222
+
223
+ #: views/settings.php:53
224
+ msgid ""
225
+ "Which user role is allowed to access the backend of this blog? "
226
+ "Administrators will always have access."
227
+ msgstr ""
228
+
229
+ #: views/settings.php:57
230
+ msgid "Frontend Role"
231
+ msgstr ""
232
+
233
+ #: views/settings.php:69
234
+ msgid ""
235
+ "Which user role is allowed to access the frontend of this blog? "
236
+ "Administrators will always have access."
237
+ msgstr ""
238
+
239
+ #: views/settings.php:73
240
+ msgid "Robots Meta Tag"
241
+ msgstr ""
242
+
243
+ #: views/settings.php:79
244
+ msgid ""
245
+ "The robots meta tag lets you use a granular, page-specific approach to "
246
+ "control how an individual page should be indexed and served to users in "
247
+ "search results."
248
+ msgstr ""
249
+
250
+ #: views/settings.php:83
251
+ msgid "Redirection"
252
+ msgstr ""
253
+
254
+ #: views/settings.php:86
255
+ msgid ""
256
+ "If you want to redirect a user (with no access to Dashboard/Backend) to a "
257
+ "URL (different from WordPress Dashboard URL) after login, then define a URL "
258
+ "(incl. http://)"
259
+ msgstr ""
260
+
261
+ #: views/settings.php:90
262
+ msgid "Exclude"
263
+ msgstr ""
264
+
265
+ #: views/settings.php:97
266
+ msgid ""
267
+ "Exclude feed, pages, archives or IPs from maintenance mode. Add one slug / "
268
+ "IP per line!"
269
+ msgstr ""
270
+
271
+ #: views/settings.php:101
272
+ msgid "Notice"
273
+ msgstr ""
274
+
275
+ #: views/settings.php:107
276
+ msgid "Do you want to see notices when maintenance mode is activated?"
277
+ msgstr ""
278
+
279
+ #: views/settings.php:111
280
+ msgid "Dashboard link"
281
+ msgstr ""
282
+
283
+ #: views/settings.php:117
284
+ msgid ""
285
+ "Do you want to add a link to the dashboard on your maintenance mode page?"
286
+ msgstr ""
287
+
288
+ #: views/settings.php:125 views/settings.php:228 views/settings.php:432
289
+ msgid "Save settings"
290
+ msgstr ""
291
+
292
+ #: views/settings.php:126 views/settings.php:229 views/settings.php:433
293
+ msgid "Reset settings"
294
+ msgstr ""
295
+
296
+ #: views/settings.php:131
297
+ msgid "Content"
298
+ msgstr ""
299
+
300
+ #: views/settings.php:136
301
+ msgid "Title (HTML tag)"
302
+ msgstr ""
303
+
304
+ #: views/settings.php:142
305
+ msgid "Heading"
306
+ msgstr ""
307
+
308
+ #: views/settings.php:149 views/settings.php:284
309
+ msgid "Text"
310
+ msgstr ""
311
+
312
+ #: views/settings.php:169
313
+ msgid "Background"
314
+ msgstr ""
315
+
316
+ #: views/settings.php:174
317
+ msgid "Choose type"
318
+ msgstr ""
319
+
320
+ #: views/settings.php:177
321
+ msgid "Custom color"
322
+ msgstr ""
323
+
324
+ #: views/settings.php:178
325
+ msgid "Uploaded background"
326
+ msgstr ""
327
+
328
+ #: views/settings.php:179
329
+ msgid "Predefined background"
330
+ msgstr ""
331
+
332
+ #: views/settings.php:184
333
+ msgid "Choose color"
334
+ msgstr ""
335
+
336
+ #: views/settings.php:190
337
+ msgid "Upload background"
338
+ msgstr ""
339
+
340
+ #: views/settings.php:194
341
+ msgid "Backgrounds should have 1920x1280 px size."
342
+ msgstr ""
343
+
344
+ #: views/settings.php:199
345
+ msgid "Choose background"
346
+ msgstr ""
347
+
348
+ #: views/settings.php:201
349
+ #, php-format
350
+ msgid "source <a href=\"%s\" target=\"_blank\">Free Photos</a>"
351
+ msgstr ""
352
+
353
+ #: views/settings.php:234
354
+ msgid "Countdown"
355
+ msgstr ""
356
+
357
+ #: views/settings.php:239
358
+ msgid "Show countdown?"
359
+ msgstr ""
360
+
361
+ #: views/settings.php:248
362
+ msgid "Start date"
363
+ msgstr ""
364
+
365
+ #: views/settings.php:254
366
+ msgid "Countdown (remaining time)"
367
+ msgstr ""
368
+
369
+ #: views/settings.php:256
370
+ msgid "Days"
371
+ msgstr ""
372
+
373
+ #: views/settings.php:257
374
+ msgid "Hours"
375
+ msgstr ""
376
+
377
+ #: views/settings.php:258
378
+ msgid "Minutes"
379
+ msgstr ""
380
+
381
+ #: views/settings.php:262
382
+ msgid "Color"
383
+ msgstr ""
384
+
385
+ #: views/settings.php:275
386
+ msgid "Show subscribe?"
387
+ msgstr ""
388
+
389
+ #: views/settings.php:291
390
+ msgid "Stats"
391
+ msgstr ""
392
+
393
+ #: views/settings.php:300
394
+ msgid "Export as CSV"
395
+ msgstr ""
396
+
397
+ #: views/settings.php:301
398
+ msgid "Empty subscribers list"
399
+ msgstr ""
400
+
401
+ #: views/settings.php:308
402
+ msgid "Social Networks"
403
+ msgstr ""
404
+
405
+ #: views/settings.php:313
406
+ msgid "Show social networks?"
407
+ msgstr ""
408
+
409
+ #: views/settings.php:322
410
+ msgid "Links target?"
411
+ msgstr ""
412
+
413
+ #: views/settings.php:325
414
+ msgid "New page"
415
+ msgstr ""
416
+
417
+ #: views/settings.php:326
418
+ msgid "Same page"
419
+ msgstr ""
420
+
421
+ #: views/settings.php:328
422
+ msgid "Choose how the links will open."
423
+ msgstr ""
424
+
425
+ #: views/settings.php:376
426
+ msgid "Contact"
427
+ msgstr ""
428
+
429
+ #: views/settings.php:381
430
+ msgid "Show contact?"
431
+ msgstr ""
432
+
433
+ #: views/settings.php:390
434
+ msgid "Email address"
435
+ msgstr ""
436
+
437
+ #: views/settings.php:396
438
+ msgid "Effects"
439
+ msgstr ""
440
+
441
+ #: views/settings.php:399
442
+ msgid "Move top - Move bottom"
443
+ msgstr ""
444
+
445
+ #: views/settings.php:400
446
+ msgid "Zoom - Zoomed"
447
+ msgstr ""
448
+
449
+ #: views/settings.php:401
450
+ msgid "Fold - Unfold"
451
+ msgstr ""
452
+
453
+ #: views/settings.php:408
454
+ msgid "Google Analytics"
455
+ msgstr ""
456
+
457
+ #: views/settings.php:413
458
+ msgid "Use Google Analytics?"
459
+ msgstr ""
460
+
461
+ #: views/settings.php:422
462
+ msgid "Tracking code"
463
+ msgstr ""
464
+
465
+ #: views/sidebar.php:3
466
+ msgid "Plugin Info"
467
+ msgstr ""
468
+
469
+ #: views/sidebar.php:13
470
+ msgid "Author"
471
+ msgstr ""
472
+
473
+ #: views/sidebar.php:14
474
+ msgid "Website"
475
+ msgstr ""
476
+
477
+ #: views/sidebar.php:15
478
+ msgid "Twitter"
479
+ msgstr ""
480
+
481
+ #: views/sidebar.php:16
482
+ msgid "GitHub"
483
+ msgstr ""
484
+
485
+ #: views/sidebar.php:27
486
+ msgid "Other products"
487
+ msgstr ""
488
+
489
+ #: views/sidebar.php:44
490
+ msgid "Resources"
491
+ msgstr ""
languages/wp-maintenance-mode-es_ES.mo CHANGED
Binary file
languages/wp-maintenance-mode-es_ES.po CHANGED
@@ -1,464 +1,539 @@
1
- msgid ""
2
- msgstr ""
3
- "Project-Id-Version: WP Maintenance Mode 2.0.0\n"
4
- "POT-Creation-Date: 2014-09-27 07:52-0500\n"
5
- "PO-Revision-Date: 2014-09-27 07:52-0500\n"
6
- "Last-Translator: Erick Ruiz de Chavez <erick@erch.co>\n"
7
- "Language-Team: Designmodo <info@designmodo.com>\n"
8
- "Language: es_ES\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.9\n"
13
- "X-Poedit-Basepath: ../\n"
14
- "Plural-Forms: nplurals=2; plural=(n != 1);\n"
15
- "X-Poedit-SourceCharset: UTF-8\n"
16
- "X-Poedit-KeywordsList: __;_e\n"
17
- "X-Poedit-SearchPath-0: .\n"
18
- "X-Poedit-SearchPath-1: includes/classes\n"
19
- "X-Poedit-SearchPath-2: views\n"
20
-
21
- #: includes/classes/wp-maintenance-mode-admin.php:154
22
- msgid "WP Maintenance Mode"
23
- msgstr "Modo de Mantenimiento WP"
24
-
25
- #: includes/classes/wp-maintenance-mode-admin.php:358
26
- msgid "Settings"
27
- msgstr "Ajustes"
28
-
29
- #: includes/classes/wp-maintenance-mode-admin.php:377
30
- #, php-format
31
- msgid ""
32
- "The Maintenance Mode is <strong>active</strong>. Please don't forget to <a "
33
- "href=\"%s\">deactivate</a> as soon as you are done."
34
- msgstr ""
35
- "El modo de mantenimiento está <strong>activo</strong>. Por favor no olvides "
36
- "<a href=\"%s\">desactivarlo</a> tan pronto como termines."
37
-
38
- #: includes/classes/wp-maintenance-mode.php:100
39
- #: includes/classes/wp-maintenance-mode.php:101
40
- msgid "Maintenance mode"
41
- msgstr "Modo de mantenimiento"
42
-
43
- #: includes/classes/wp-maintenance-mode.php:103
44
- msgid ""
45
- "<p>Sorry for the inconvenience.<br />Our website is currently undergoing "
46
- "scheduled maintenance.<br />Thank you for your understanding.</p>"
47
- msgstr ""
48
- "<p>Disculpa las molestias.<br />Nuestro sitio esta actualmente bajo "
49
- "mantenimiento programado.<br />Agradecemos tu comprensión.</p>"
50
-
51
- #: includes/classes/wp-maintenance-mode.php:121
52
- msgid "Notify me when it's ready"
53
- msgstr "Notifícame cuanto este listo"
54
-
55
- #: includes/classes/wp-maintenance-mode.php:249
56
- #, php-format
57
- msgid ""
58
- "WP Maintenance Mode plugin was relaunched and you MUST revise <a href=\"%s"
59
- "\">settings</a>."
60
- msgstr ""
61
- "El plugin Modo de Mantenimiento WP fue reactivado y es NECESARIO que revises "
62
- "los <a href=\"%s\">ajustes</a>."
63
-
64
- #: includes/classes/wp-maintenance-mode.php:425
65
- #: includes/classes/wp-maintenance-mode.php:439
66
- msgid "Maintenance Mode"
67
- msgstr "Modo de Mantenimiento"
68
-
69
- #: includes/classes/wp-maintenance-mode.php:630
70
- #: includes/classes/wp-maintenance-mode.php:658
71
- msgid "Please enter a valid email address."
72
- msgstr "Por favor usa una dirección de correo electrónico valida."
73
-
74
- #: includes/classes/wp-maintenance-mode.php:641
75
- msgid "You successfuly subscribed. Thanks!"
76
- msgstr "Te has suscrito exitosamente. ¡Muchas gracias!"
77
-
78
- #: includes/classes/wp-maintenance-mode.php:654
79
- msgid "All fields required."
80
- msgstr "Todos los campos son obligatorios."
81
-
82
- #: includes/classes/wp-maintenance-mode.php:675
83
- msgid "Message via contact"
84
- msgstr "Mensaje vía formulario de contacto."
85
-
86
- #: includes/classes/wp-maintenance-mode.php:679
87
- msgid "Your email was sent to the website administrator. Thanks!"
88
- msgstr "Tu mensaje ha sido enviado al administrador. ¡Muchas gracias!"
89
-
90
- #: views/loginform.php:8
91
- msgid "Login"
92
- msgstr "Iniciar sesión"
93
-
94
- #: views/maintenance.php:41
95
- msgid "your e-mail..."
96
- msgstr "dirección de correo electrónico ..."
97
-
98
- #: views/maintenance.php:42 views/settings.php:260
99
- msgid "Subscribe"
100
- msgstr "Suscribirse"
101
-
102
- #: views/maintenance.php:83 views/sidebar.php:7
103
- msgid "Name"
104
- msgstr "Nombre"
105
-
106
- #: views/maintenance.php:84
107
- msgid "E-mail"
108
- msgstr "Correo electrónico"
109
-
110
- #: views/maintenance.php:86
111
- msgid "Your message"
112
- msgstr "Mensaje"
113
-
114
- #: views/maintenance.php:87
115
- msgid "Send"
116
- msgstr "Enviar"
117
-
118
- #: views/maintenance.php:92
119
- msgid "Contact us"
120
- msgstr "Contáctanos"
121
-
122
- #: views/maintenance.php:97
123
- msgid "Dashboard"
124
- msgstr "Escritorio"
125
-
126
- #: views/settings.php:6
127
- msgid "Settings saved."
128
- msgstr "Ajustes guardados."
129
-
130
- #: views/settings.php:13
131
- msgid "General"
132
- msgstr "General"
133
-
134
- #: views/settings.php:14
135
- msgid "Design"
136
- msgstr "Diseño"
137
-
138
- #: views/settings.php:15
139
- msgid "Modules"
140
- msgstr "Módulos"
141
-
142
- #: views/settings.php:24
143
- msgid "Status"
144
- msgstr "Estado"
145
-
146
- #: views/settings.php:26
147
- msgid "Activated"
148
- msgstr "Activado"
149
-
150
- #: views/settings.php:27
151
- msgid "Deactivated"
152
- msgstr "Desactivado"
153
-
154
- #: views/settings.php:31
155
- msgid "Bypass for Search Bots"
156
- msgstr "Evitar Robots de Búsqueda"
157
-
158
- #: views/settings.php:34 views/settings.php:94 views/settings.php:104
159
- #: views/settings.php:232 views/settings.php:268 views/settings.php:305
160
- #: views/settings.php:373 views/settings.php:405
161
- msgid "Yes"
162
- msgstr "Si"
163
-
164
- #: views/settings.php:35 views/settings.php:95 views/settings.php:105
165
- #: views/settings.php:233 views/settings.php:269 views/settings.php:306
166
- #: views/settings.php:374 views/settings.php:406
167
- msgid "No"
168
- msgstr "No"
169
-
170
- #: views/settings.php:37
171
- msgid "Allow Search Bots to bypass maintenance mode?"
172
- msgstr "¿Permitir a los Robots de Búsqueda evitar el modo de mantenimiento?"
173
-
174
- #: views/settings.php:41
175
- msgid "Backend Role"
176
- msgstr "Rol de administración"
177
-
178
- #: views/settings.php:48
179
- msgid "Which user role is allowed to access the backend of this blog?"
180
- msgstr ""
181
- "¿Que rol de usuario se requiere para acceder a la administración de este "
182
- "blog?"
183
-
184
- #: views/settings.php:52
185
- msgid "Frontend Role"
186
- msgstr "Rol de sitio"
187
-
188
- #: views/settings.php:59
189
- msgid "Which user role is allowed to access the frontend of this blog?"
190
- msgstr "¿Que rol de usuario se requiere para acceder a este blog?"
191
-
192
- #: views/settings.php:63
193
- msgid "Robots Meta Tag"
194
- msgstr "Meta Etiqueta Robots"
195
-
196
- #: views/settings.php:69
197
- msgid ""
198
- "The robots meta tag lets you use a granular, page-specific approach to "
199
- "control how an individual page should be indexed and served to users in "
200
- "search results."
201
- msgstr ""
202
- "La meta etiqueta robots le permite definir de manera mas granular como deben "
203
- "ser indexadas y servidas las paginas a los usuarios en los resultados de "
204
- "búsqueda. "
205
-
206
- #: views/settings.php:73
207
- msgid "Redirection"
208
- msgstr "Redirección"
209
-
210
- #: views/settings.php:76
211
- msgid ""
212
- "If you want to redirect a user to a URL (which is not the WordPress "
213
- "dashboard) after login, then define a URL (incl. http://)"
214
- msgstr ""
215
- "Si deseas enviar a un usuario a una URL (que no forma parte de su sitio "
216
- "WordPress) después de iniciar sesión, define dicha URL (incluya http://)"
217
-
218
- #: views/settings.php:80
219
- msgid "Exclude"
220
- msgstr "Excluir"
221
-
222
- #: views/settings.php:87
223
- msgid ""
224
- "Exclude feed, pages, archives or IPs from maintenance mode. Add one slug / "
225
- "IP per line!"
226
- msgstr ""
227
- "Excluye feed, paginas, archivos o direcciones IP del modo de mantenimiento. "
228
- "Agregua un slug por linea!"
229
-
230
- #: views/settings.php:91
231
- msgid "Notice"
232
- msgstr "Aviso"
233
-
234
- #: views/settings.php:97
235
- msgid "Do you want to see notices when maintenance mode is activated?"
236
- msgstr "¿Deseas ver avisos cuando el modo de mantenimiento esta activo?"
237
-
238
- #: views/settings.php:101
239
- msgid "Dashboard link"
240
- msgstr "Enlace al escritorio"
241
-
242
- #: views/settings.php:107
243
- msgid ""
244
- "Do you want to add a link to the dashboard on your maintenance mode page?"
245
- msgstr "¿Deseas agregar un enlace al escritorio en tu página de mantenimiento?"
246
-
247
- #: views/settings.php:115 views/settings.php:218 views/settings.php:421
248
- msgid "Save settings"
249
- msgstr "Guardar ajustes"
250
-
251
- #: views/settings.php:116 views/settings.php:219 views/settings.php:422
252
- msgid "Reset settings"
253
- msgstr "Restablecer ajustes"
254
-
255
- #: views/settings.php:121
256
- msgid "Content"
257
- msgstr "Contenido"
258
-
259
- #: views/settings.php:126
260
- msgid "Title (HTML tag)"
261
- msgstr "Título (Etiqueta HTML)"
262
-
263
- #: views/settings.php:132
264
- msgid "Heading"
265
- msgstr "Encabezado"
266
-
267
- #: views/settings.php:139 views/settings.php:274
268
- msgid "Text"
269
- msgstr "Texto"
270
-
271
- #: views/settings.php:159
272
- msgid "Background"
273
- msgstr "Fondo"
274
-
275
- #: views/settings.php:164
276
- msgid "Choose type"
277
- msgstr "Seleccionar tipo"
278
-
279
- #: views/settings.php:167
280
- msgid "Custom color"
281
- msgstr "Color personalizado"
282
-
283
- #: views/settings.php:168
284
- msgid "Uploaded background"
285
- msgstr "Fondo cargado"
286
-
287
- #: views/settings.php:169
288
- msgid "Predefined background"
289
- msgstr "Fondo predefinido"
290
-
291
- #: views/settings.php:174
292
- msgid "Choose color"
293
- msgstr "Elige un color"
294
-
295
- #: views/settings.php:180
296
- msgid "Upload background"
297
- msgstr "Sube un fondo"
298
-
299
- #: views/settings.php:184
300
- msgid "Backgrounds should have 1920x1280 px size."
301
- msgstr "El fondo debe medir 1920x1280 pixeles."
302
-
303
- #: views/settings.php:189
304
- msgid "Choose background"
305
- msgstr "Elige el fondo"
306
-
307
- #: views/settings.php:191
308
- msgid "source <a href=\"%\" target=\"_blank\">Free Photos</a>"
309
- msgstr "fuente <a href=\"%\" target=\"_blank\">Fotos Gratis</a>"
310
-
311
- #: views/settings.php:224
312
- msgid "Countdown"
313
- msgstr "Contador"
314
-
315
- #: views/settings.php:229
316
- msgid "Show countdown?"
317
- msgstr "¿Mostrar contador?"
318
-
319
- #: views/settings.php:238
320
- msgid "Start date"
321
- msgstr "Fecha de inicio"
322
-
323
- #: views/settings.php:244
324
- msgid "Countdown (remaining time)"
325
- msgstr "Contador (tiempo restante)"
326
-
327
- #: views/settings.php:246
328
- msgid "Days"
329
- msgstr "Días"
330
-
331
- #: views/settings.php:247
332
- msgid "Hours"
333
- msgstr "Horas"
334
-
335
- #: views/settings.php:248
336
- msgid "Minutes"
337
- msgstr "Minutos"
338
-
339
- #: views/settings.php:252
340
- msgid "Color"
341
- msgstr "Color"
342
-
343
- #: views/settings.php:265
344
- msgid "Show subscribe?"
345
- msgstr "¿Mostrar suscribirse?"
346
-
347
- #: views/settings.php:281
348
- msgid "Stats"
349
- msgstr "Estadísticas"
350
-
351
- #: views/settings.php:285
352
- #, php-format
353
- msgid "You have %d subscriber(s)"
354
- msgstr "Hay %d suscriptor(es)"
355
-
356
- #: views/settings.php:290
357
- msgid "Export as CSV"
358
- msgstr "Exportar como CSV"
359
-
360
- #: views/settings.php:297
361
- msgid "Social Networks"
362
- msgstr "Redes Sociales"
363
-
364
- #: views/settings.php:302
365
- msgid "Show social networks?"
366
- msgstr "¿Mostrar redes sociales?"
367
-
368
- #: views/settings.php:311
369
- msgid "Links target?"
370
- msgstr "¿Destino de enlaces?"
371
-
372
- #: views/settings.php:314
373
- msgid "New page"
374
- msgstr "Página nueva"
375
-
376
- #: views/settings.php:315
377
- msgid "Same page"
378
- msgstr "Misma página"
379
-
380
- #: views/settings.php:317
381
- msgid "Choose how the links will open."
382
- msgstr "Selecciona como se abrirán los enlaces."
383
-
384
- #: views/settings.php:365
385
- msgid "Contact"
386
- msgstr "Contacto"
387
-
388
- #: views/settings.php:370
389
- msgid "Show contact?"
390
- msgstr "¿Mostrar contacto?"
391
-
392
- #: views/settings.php:379
393
- msgid "Email address"
394
- msgstr "Dirección de correo electrónico"
395
-
396
- #: views/settings.php:385
397
- msgid "Effects"
398
- msgstr "Efectos"
399
-
400
- #: views/settings.php:388
401
- msgid "Move top - Move bottom"
402
- msgstr "Mover al inicio - Mover al final"
403
-
404
- #: views/settings.php:389
405
- msgid "Zoom - Zoomed"
406
- msgstr "Ampliar - Ampliado"
407
-
408
- #: views/settings.php:390
409
- msgid "Fold - Unfold"
410
- msgstr "Colapsar - Expandir"
411
-
412
- #: views/settings.php:397
413
- msgid "Google Analytics"
414
- msgstr "Google Analytics"
415
-
416
- #: views/settings.php:402
417
- msgid "Use Google Analytics?"
418
- msgstr "¿Usar Google Analytics?"
419
-
420
- #: views/settings.php:411
421
- msgid "Tracking code"
422
- msgstr "Código de rastreo"
423
-
424
- #: views/sidebar.php:3
425
- msgid "Plugin Info"
426
- msgstr "Información del plugin"
427
-
428
- #: views/sidebar.php:13
429
- msgid "Author"
430
- msgstr "Autor"
431
-
432
- #: views/sidebar.php:14
433
- msgid "Website"
434
- msgstr "Pagina web"
435
-
436
- #: views/sidebar.php:15
437
- msgid "Twitter"
438
- msgstr "Twitter"
439
-
440
- #: views/sidebar.php:16
441
- msgid "GitHub"
442
- msgstr "GitHub"
443
-
444
- #: views/sidebar.php:22
445
- msgid "WordPress Themes"
446
- msgstr "Temas WordPress"
447
-
448
- #: views/sidebar.php:31
449
- msgid "Resources"
450
- msgstr "Recursos"
451
-
452
- #~ msgid "Developed by <a href=\"%s\">Designmodo</a>"
453
- #~ msgstr "Desarrollado por <a href=\"%s\">Designmodo</a>"
454
-
455
- #~ msgid "Subscribe now for early access to new WordPress themes."
456
- #~ msgstr ""
457
- #~ "Suscríbete ahora para obtener acceso preferencial a nuevos temas "
458
- #~ "WordPress."
459
-
460
- #~ msgid "Enter your email address"
461
- #~ msgstr "Introduce tu dirección de correo electrónico"
462
-
463
- #~ msgid "News"
464
- #~ msgstr "Noticias"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ msgid ""
2
+ msgstr ""
3
+ "Project-Id-Version: WP Maintenance Mode 2.0.4\n"
4
+ "POT-Creation-Date: 2016-06-17 03:15+0300\n"
5
+ "PO-Revision-Date: 2016-06-17 03:15+0300\n"
6
+ "Last-Translator: Erick Ruiz de Chavez <erick@erch.co>\n"
7
+ "Language-Team: Designmodo <info@designmodo.com>\n"
8
+ "Language: es_ES\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.8.8\n"
13
+ "X-Poedit-Basepath: ..\n"
14
+ "Plural-Forms: nplurals=2; plural=(n != 1);\n"
15
+ "X-Poedit-SourceCharset: UTF-8\n"
16
+ "X-Poedit-KeywordsList: __;_e;__ngettext:1,2;_n:1,2;__ngettext_noop:1,2;"
17
+ "_n_noop:1,2;_c,_nc:4c,1,2;_x:1,2c;_ex:1,2c;_nx:4c,1,2;_nx_noop:4c,1,2;"
18
+ "esc_attr__;esc_attr_e;esc_attr_x:1,2c;esc_html__;esc_html_e;esc_html_x:1,2c\n"
19
+ "X-Poedit-SearchPath-0: .\n"
20
+ "X-Poedit-SearchPath-1: includes/classes\n"
21
+ "X-Poedit-SearchPath-2: views\n"
22
+
23
+ #: includes/classes/wp-maintenance-mode-admin.php:121
24
+ #: includes/classes/wp-maintenance-mode-admin.php:159
25
+ #: includes/classes/wp-maintenance-mode-admin.php:181
26
+ msgid "You do not have access to this resource."
27
+ msgstr ""
28
+
29
+ #: includes/classes/wp-maintenance-mode-admin.php:165 views/settings.php:295
30
+ #, php-format
31
+ msgid "You have %d subscriber(s)"
32
+ msgstr "Hay %d suscriptor(es)"
33
+
34
+ #: includes/classes/wp-maintenance-mode-admin.php:186
35
+ msgid "The tab slug must not be empty."
36
+ msgstr ""
37
+
38
+ #: includes/classes/wp-maintenance-mode-admin.php:191
39
+ msgid "The tab slug must exist."
40
+ msgstr ""
41
+
42
+ #: includes/classes/wp-maintenance-mode-admin.php:211
43
+ msgid "WP Maintenance Mode"
44
+ msgstr "Modo de Mantenimiento WP"
45
+
46
+ #: includes/classes/wp-maintenance-mode-admin.php:425
47
+ msgid "Settings"
48
+ msgstr "Ajustes"
49
+
50
+ #: includes/classes/wp-maintenance-mode-admin.php:444
51
+ #, php-format
52
+ msgid ""
53
+ "The Maintenance Mode is <strong>active</strong>. Please don't forget to <a "
54
+ "href=\"%s\">deactivate</a> as soon as you are done."
55
+ msgstr ""
56
+ "El modo de mantenimiento está <strong>activo</strong>. Por favor no olvides "
57
+ "<a href=\"%s\">desactivarlo</a> tan pronto como termines."
58
+
59
+ #: includes/classes/wp-maintenance-mode-admin.php:481
60
+ msgid "Notice key cannot be empty."
61
+ msgstr ""
62
+
63
+ #: includes/classes/wp-maintenance-mode.php:103
64
+ #: includes/classes/wp-maintenance-mode.php:104
65
+ msgid "Maintenance mode"
66
+ msgstr "Modo de mantenimiento"
67
+
68
+ #: includes/classes/wp-maintenance-mode.php:106
69
+ msgid ""
70
+ "<p>Sorry for the inconvenience.<br />Our website is currently undergoing "
71
+ "scheduled maintenance.<br />Thank you for your understanding.</p>"
72
+ msgstr ""
73
+ "<p>Disculpa las molestias.<br />Nuestro sitio esta actualmente bajo "
74
+ "mantenimiento programado.<br />Agradecemos tu comprensión.</p>"
75
+
76
+ #: includes/classes/wp-maintenance-mode.php:124
77
+ msgid "Notify me when it's ready"
78
+ msgstr "Notifícame cuanto este listo"
79
+
80
+ #: includes/classes/wp-maintenance-mode.php:259
81
+ #, php-format
82
+ msgid ""
83
+ "WP Maintenance Mode plugin was relaunched and you MUST revise <a href=\"%s"
84
+ "\">settings</a>."
85
+ msgstr ""
86
+ "El plugin Modo de Mantenimiento WP fue reactivado y es NECESARIO que revises "
87
+ "los <a href=\"%s\">ajustes</a>."
88
+
89
+ #: includes/classes/wp-maintenance-mode.php:449
90
+ #: includes/classes/wp-maintenance-mode.php:463
91
+ msgid "Maintenance Mode"
92
+ msgstr "Modo de Mantenimiento"
93
+
94
+ #: includes/classes/wp-maintenance-mode.php:687
95
+ #: includes/classes/wp-maintenance-mode.php:721 views/maintenance.php:85
96
+ msgid "Please enter a valid email address."
97
+ msgstr "Por favor usa una dirección de correo electrónico valida."
98
+
99
+ #: includes/classes/wp-maintenance-mode.php:699
100
+ msgid "You successfully subscribed. Thanks!"
101
+ msgstr ""
102
+
103
+ #: includes/classes/wp-maintenance-mode.php:717
104
+ msgid "All fields required."
105
+ msgstr "Todos los campos son obligatorios."
106
+
107
+ #: includes/classes/wp-maintenance-mode.php:726
108
+ msgid "Message via contact"
109
+ msgstr "Mensaje vía formulario de contacto."
110
+
111
+ #: includes/classes/wp-maintenance-mode.php:738
112
+ msgid "Your email was sent to the website administrator. Thanks!"
113
+ msgstr "Tu mensaje ha sido enviado al administrador. ¡Muchas gracias!"
114
+
115
+ #: views/contact.php:34
116
+ #, php-format
117
+ msgid "You have been contacted via %s."
118
+ msgstr ""
119
+
120
+ #: views/contact.php:50
121
+ msgid "Name:"
122
+ msgstr ""
123
+
124
+ #: views/contact.php:62
125
+ msgid "Email:"
126
+ msgstr ""
127
+
128
+ #: views/contact.php:74
129
+ msgid "Content:"
130
+ msgstr ""
131
+
132
+ #: views/loginform.php:8
133
+ msgid "Login"
134
+ msgstr "Iniciar sesión"
135
+
136
+ #: views/maintenance.php:42
137
+ msgid "your e-mail..."
138
+ msgstr "dirección de correo electrónico ..."
139
+
140
+ #: views/maintenance.php:43 views/settings.php:270
141
+ msgid "Subscribe"
142
+ msgstr "Suscribirse"
143
+
144
+ #: views/maintenance.php:84 views/sidebar.php:7
145
+ msgid "Name"
146
+ msgstr "Nombre"
147
+
148
+ #: views/maintenance.php:84 views/maintenance.php:85 views/maintenance.php:87
149
+ msgid "This field is required."
150
+ msgstr ""
151
+
152
+ #: views/maintenance.php:85
153
+ msgid "E-mail"
154
+ msgstr "Correo electrónico"
155
+
156
+ #: views/maintenance.php:87
157
+ msgid "Your message"
158
+ msgstr "Mensaje"
159
+
160
+ #: views/maintenance.php:88
161
+ msgid "Send"
162
+ msgstr "Enviar"
163
+
164
+ #: views/maintenance.php:93
165
+ msgid "Contact us"
166
+ msgstr "Contáctanos"
167
+
168
+ #: views/maintenance.php:98
169
+ msgid "Dashboard"
170
+ msgstr "Escritorio"
171
+
172
+ #: views/settings.php:6
173
+ msgid "Settings saved."
174
+ msgstr "Ajustes guardados."
175
+
176
+ #: views/settings.php:13
177
+ msgid "General"
178
+ msgstr "General"
179
+
180
+ #: views/settings.php:14
181
+ msgid "Design"
182
+ msgstr "Diseño"
183
+
184
+ #: views/settings.php:15
185
+ msgid "Modules"
186
+ msgstr "Módulos"
187
+
188
+ #: views/settings.php:24
189
+ msgid "Status"
190
+ msgstr "Estado"
191
+
192
+ #: views/settings.php:26
193
+ msgid "Activated"
194
+ msgstr "Activado"
195
+
196
+ #: views/settings.php:27
197
+ msgid "Deactivated"
198
+ msgstr "Desactivado"
199
+
200
+ #: views/settings.php:31
201
+ msgid "Bypass for Search Bots"
202
+ msgstr "Evitar Robots de Búsqueda"
203
+
204
+ #: views/settings.php:34 views/settings.php:104 views/settings.php:114
205
+ #: views/settings.php:242 views/settings.php:278 views/settings.php:316
206
+ #: views/settings.php:384 views/settings.php:416
207
+ msgid "Yes"
208
+ msgstr "Si"
209
+
210
+ #: views/settings.php:35 views/settings.php:105 views/settings.php:115
211
+ #: views/settings.php:243 views/settings.php:279 views/settings.php:317
212
+ #: views/settings.php:385 views/settings.php:417
213
+ msgid "No"
214
+ msgstr "No"
215
+
216
+ #: views/settings.php:37
217
+ msgid "Allow Search Bots to bypass maintenance mode?"
218
+ msgstr "¿Permitir a los Robots de Búsqueda evitar el modo de mantenimiento?"
219
+
220
+ #: views/settings.php:41
221
+ msgid "Backend Role"
222
+ msgstr "Rol de administración"
223
+
224
+ #: views/settings.php:43 views/settings.php:59
225
+ msgid "Select role(s)"
226
+ msgstr ""
227
+
228
+ #: views/settings.php:53
229
+ msgid ""
230
+ "Which user role is allowed to access the backend of this blog? "
231
+ "Administrators will always have access."
232
+ msgstr ""
233
+
234
+ #: views/settings.php:57
235
+ msgid "Frontend Role"
236
+ msgstr "Rol de sitio"
237
+
238
+ #: views/settings.php:69
239
+ msgid ""
240
+ "Which user role is allowed to access the frontend of this blog? "
241
+ "Administrators will always have access."
242
+ msgstr ""
243
+
244
+ #: views/settings.php:73
245
+ msgid "Robots Meta Tag"
246
+ msgstr "Meta Etiqueta Robots"
247
+
248
+ #: views/settings.php:79
249
+ msgid ""
250
+ "The robots meta tag lets you use a granular, page-specific approach to "
251
+ "control how an individual page should be indexed and served to users in "
252
+ "search results."
253
+ msgstr ""
254
+ "La meta etiqueta robots le permite definir de manera mas granular como deben "
255
+ "ser indexadas y servidas las paginas a los usuarios en los resultados de "
256
+ "búsqueda. "
257
+
258
+ #: views/settings.php:83
259
+ msgid "Redirection"
260
+ msgstr "Redirección"
261
+
262
+ #: views/settings.php:86
263
+ msgid ""
264
+ "If you want to redirect a user (with no access to Dashboard/Backend) to a "
265
+ "URL (different from WordPress Dashboard URL) after login, then define a URL "
266
+ "(incl. http://)"
267
+ msgstr ""
268
+
269
+ #: views/settings.php:90
270
+ msgid "Exclude"
271
+ msgstr "Excluir"
272
+
273
+ #: views/settings.php:97
274
+ msgid ""
275
+ "Exclude feed, pages, archives or IPs from maintenance mode. Add one slug / "
276
+ "IP per line!"
277
+ msgstr ""
278
+ "Excluye feed, paginas, archivos o direcciones IP del modo de mantenimiento. "
279
+ "Agregua un slug por linea!"
280
+
281
+ #: views/settings.php:101
282
+ msgid "Notice"
283
+ msgstr "Aviso"
284
+
285
+ #: views/settings.php:107
286
+ msgid "Do you want to see notices when maintenance mode is activated?"
287
+ msgstr "¿Deseas ver avisos cuando el modo de mantenimiento esta activo?"
288
+
289
+ #: views/settings.php:111
290
+ msgid "Dashboard link"
291
+ msgstr "Enlace al escritorio"
292
+
293
+ #: views/settings.php:117
294
+ msgid ""
295
+ "Do you want to add a link to the dashboard on your maintenance mode page?"
296
+ msgstr "¿Deseas agregar un enlace al escritorio en tu página de mantenimiento?"
297
+
298
+ #: views/settings.php:125 views/settings.php:228 views/settings.php:432
299
+ msgid "Save settings"
300
+ msgstr "Guardar ajustes"
301
+
302
+ #: views/settings.php:126 views/settings.php:229 views/settings.php:433
303
+ msgid "Reset settings"
304
+ msgstr "Restablecer ajustes"
305
+
306
+ #: views/settings.php:131
307
+ msgid "Content"
308
+ msgstr "Contenido"
309
+
310
+ #: views/settings.php:136
311
+ msgid "Title (HTML tag)"
312
+ msgstr "Título (Etiqueta HTML)"
313
+
314
+ #: views/settings.php:142
315
+ msgid "Heading"
316
+ msgstr "Encabezado"
317
+
318
+ #: views/settings.php:149 views/settings.php:284
319
+ msgid "Text"
320
+ msgstr "Texto"
321
+
322
+ #: views/settings.php:169
323
+ msgid "Background"
324
+ msgstr "Fondo"
325
+
326
+ #: views/settings.php:174
327
+ msgid "Choose type"
328
+ msgstr "Seleccionar tipo"
329
+
330
+ #: views/settings.php:177
331
+ msgid "Custom color"
332
+ msgstr "Color personalizado"
333
+
334
+ #: views/settings.php:178
335
+ msgid "Uploaded background"
336
+ msgstr "Fondo cargado"
337
+
338
+ #: views/settings.php:179
339
+ msgid "Predefined background"
340
+ msgstr "Fondo predefinido"
341
+
342
+ #: views/settings.php:184
343
+ msgid "Choose color"
344
+ msgstr "Elige un color"
345
+
346
+ #: views/settings.php:190
347
+ msgid "Upload background"
348
+ msgstr "Sube un fondo"
349
+
350
+ #: views/settings.php:194
351
+ msgid "Backgrounds should have 1920x1280 px size."
352
+ msgstr "El fondo debe medir 1920x1280 pixeles."
353
+
354
+ #: views/settings.php:199
355
+ msgid "Choose background"
356
+ msgstr "Elige el fondo"
357
+
358
+ #: views/settings.php:201
359
+ #, php-format
360
+ msgid "source <a href=\"%s\" target=\"_blank\">Free Photos</a>"
361
+ msgstr ""
362
+
363
+ #: views/settings.php:234
364
+ msgid "Countdown"
365
+ msgstr "Contador"
366
+
367
+ #: views/settings.php:239
368
+ msgid "Show countdown?"
369
+ msgstr "¿Mostrar contador?"
370
+
371
+ #: views/settings.php:248
372
+ msgid "Start date"
373
+ msgstr "Fecha de inicio"
374
+
375
+ #: views/settings.php:254
376
+ msgid "Countdown (remaining time)"
377
+ msgstr "Contador (tiempo restante)"
378
+
379
+ #: views/settings.php:256
380
+ msgid "Days"
381
+ msgstr "Días"
382
+
383
+ #: views/settings.php:257
384
+ msgid "Hours"
385
+ msgstr "Horas"
386
+
387
+ #: views/settings.php:258
388
+ msgid "Minutes"
389
+ msgstr "Minutos"
390
+
391
+ #: views/settings.php:262
392
+ msgid "Color"
393
+ msgstr "Color"
394
+
395
+ #: views/settings.php:275
396
+ msgid "Show subscribe?"
397
+ msgstr "¿Mostrar suscribirse?"
398
+
399
+ #: views/settings.php:291
400
+ msgid "Stats"
401
+ msgstr "Estadísticas"
402
+
403
+ #: views/settings.php:300
404
+ msgid "Export as CSV"
405
+ msgstr "Exportar como CSV"
406
+
407
+ #: views/settings.php:301
408
+ msgid "Empty subscribers list"
409
+ msgstr ""
410
+
411
+ #: views/settings.php:308
412
+ msgid "Social Networks"
413
+ msgstr "Redes Sociales"
414
+
415
+ #: views/settings.php:313
416
+ msgid "Show social networks?"
417
+ msgstr "¿Mostrar redes sociales?"
418
+
419
+ #: views/settings.php:322
420
+ msgid "Links target?"
421
+ msgstr "¿Destino de enlaces?"
422
+
423
+ #: views/settings.php:325
424
+ msgid "New page"
425
+ msgstr "Página nueva"
426
+
427
+ #: views/settings.php:326
428
+ msgid "Same page"
429
+ msgstr "Misma página"
430
+
431
+ #: views/settings.php:328
432
+ msgid "Choose how the links will open."
433
+ msgstr "Selecciona como se abrirán los enlaces."
434
+
435
+ #: views/settings.php:376
436
+ msgid "Contact"
437
+ msgstr "Contacto"
438
+
439
+ #: views/settings.php:381
440
+ msgid "Show contact?"
441
+ msgstr "¿Mostrar contacto?"
442
+
443
+ #: views/settings.php:390
444
+ msgid "Email address"
445
+ msgstr "Dirección de correo electrónico"
446
+
447
+ #: views/settings.php:396
448
+ msgid "Effects"
449
+ msgstr "Efectos"
450
+
451
+ #: views/settings.php:399
452
+ msgid "Move top - Move bottom"
453
+ msgstr "Mover al inicio - Mover al final"
454
+
455
+ #: views/settings.php:400
456
+ msgid "Zoom - Zoomed"
457
+ msgstr "Ampliar - Ampliado"
458
+
459
+ #: views/settings.php:401
460
+ msgid "Fold - Unfold"
461
+ msgstr "Colapsar - Expandir"
462
+
463
+ #: views/settings.php:408
464
+ msgid "Google Analytics"
465
+ msgstr "Google Analytics"
466
+
467
+ #: views/settings.php:413
468
+ msgid "Use Google Analytics?"
469
+ msgstr "¿Usar Google Analytics?"
470
+
471
+ #: views/settings.php:422
472
+ msgid "Tracking code"
473
+ msgstr "Código de rastreo"
474
+
475
+ #: views/sidebar.php:3
476
+ msgid "Plugin Info"
477
+ msgstr "Información del plugin"
478
+
479
+ #: views/sidebar.php:13
480
+ msgid "Author"
481
+ msgstr "Autor"
482
+
483
+ #: views/sidebar.php:14
484
+ msgid "Website"
485
+ msgstr "Pagina web"
486
+
487
+ #: views/sidebar.php:15
488
+ msgid "Twitter"
489
+ msgstr "Twitter"
490
+
491
+ #: views/sidebar.php:16
492
+ msgid "GitHub"
493
+ msgstr "GitHub"
494
+
495
+ #: views/sidebar.php:27
496
+ msgid "Other products"
497
+ msgstr ""
498
+
499
+ #: views/sidebar.php:44
500
+ msgid "Resources"
501
+ msgstr "Recursos"
502
+
503
+ #~ msgid "You successfuly subscribed. Thanks!"
504
+ #~ msgstr "Te has suscrito exitosamente. ¡Muchas gracias!"
505
+
506
+ #~ msgid "Which user role is allowed to access the backend of this blog?"
507
+ #~ msgstr ""
508
+ #~ "¿Que rol de usuario se requiere para acceder a la administración de este "
509
+ #~ "blog?"
510
+
511
+ #~ msgid "Which user role is allowed to access the frontend of this blog?"
512
+ #~ msgstr "¿Que rol de usuario se requiere para acceder a este blog?"
513
+
514
+ #~ msgid ""
515
+ #~ "If you want to redirect a user to a URL (which is not the WordPress "
516
+ #~ "dashboard) after login, then define a URL (incl. http://)"
517
+ #~ msgstr ""
518
+ #~ "Si deseas enviar a un usuario a una URL (que no forma parte de su sitio "
519
+ #~ "WordPress) después de iniciar sesión, define dicha URL (incluya http://)"
520
+
521
+ #~ msgid "source <a href=\"%\" target=\"_blank\">Free Photos</a>"
522
+ #~ msgstr "fuente <a href=\"%\" target=\"_blank\">Fotos Gratis</a>"
523
+
524
+ #~ msgid "WordPress Themes"
525
+ #~ msgstr "Temas WordPress"
526
+
527
+ #~ msgid "Developed by <a href=\"%s\">Designmodo</a>"
528
+ #~ msgstr "Desarrollado por <a href=\"%s\">Designmodo</a>"
529
+
530
+ #~ msgid "Subscribe now for early access to new WordPress themes."
531
+ #~ msgstr ""
532
+ #~ "Suscríbete ahora para obtener acceso preferencial a nuevos temas "
533
+ #~ "WordPress."
534
+
535
+ #~ msgid "Enter your email address"
536
+ #~ msgstr "Introduce tu dirección de correo electrónico"
537
+
538
+ #~ msgid "News"
539
+ #~ msgstr "Noticias"
languages/wp-maintenance-mode-fa_IR.mo ADDED
Binary file
languages/wp-maintenance-mode-fa_IR.po ADDED
@@ -0,0 +1,498 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ msgid ""
2
+ msgstr ""
3
+ "Project-Id-Version: WP Maintenance Mode 2.0.4\n"
4
+ "Report-Msgid-Bugs-To: \n"
5
+ "POT-Creation-Date: 2016-06-17 03:17+0300\n"
6
+ "PO-Revision-Date: 2016-06-17 03:17+0300\n"
7
+ "Last-Translator: Milad Nekofar <milad@nekofar.com>\n"
8
+ "Language-Team: Milad Nekofar <milad@nekofar.com>\n"
9
+ "Language: fa\n"
10
+ "MIME-Version: 1.0\n"
11
+ "Content-Type: text/plain; charset=UTF-8\n"
12
+ "Content-Transfer-Encoding: 8bit\n"
13
+ "Plural-Forms: nplurals=1; plural=0;\n"
14
+ "X-Poedit-SourceCharset: UTF-8\n"
15
+ "X-Generator: Poedit 1.8.8\n"
16
+ "X-Poedit-Basepath: ..\n"
17
+ "X-Poedit-KeywordsList: __;_e;__ngettext:1,2;_n:1,2;__ngettext_noop:1,2;"
18
+ "_n_noop:1,2;_c,_nc:4c,1,2;_x:1,2c;_ex:1,2c;_nx:4c,1,2;_nx_noop:4c,1,2;"
19
+ "esc_attr__;esc_attr_e;esc_attr_x:1,2c;esc_html__;esc_html_e;"
20
+ "esc_html_x:1,2c\n"
21
+ "X-Loco-Target-Locale: fa_IR\n"
22
+ "X-Poedit-SearchPath-0: .\n"
23
+ "X-Poedit-SearchPath-1: includes/classes\n"
24
+ "X-Poedit-SearchPath-2: views\n"
25
+
26
+ #: includes/classes/wp-maintenance-mode-admin.php:121
27
+ #: includes/classes/wp-maintenance-mode-admin.php:159
28
+ #: includes/classes/wp-maintenance-mode-admin.php:181
29
+ msgid "You do not have access to this resource."
30
+ msgstr ""
31
+
32
+ #: includes/classes/wp-maintenance-mode-admin.php:165 views/settings.php:295
33
+ #, php-format
34
+ msgid "You have %d subscriber(s)"
35
+ msgstr ""
36
+
37
+ #: includes/classes/wp-maintenance-mode-admin.php:186
38
+ msgid "The tab slug must not be empty."
39
+ msgstr ""
40
+
41
+ #: includes/classes/wp-maintenance-mode-admin.php:191
42
+ msgid "The tab slug must exist."
43
+ msgstr ""
44
+
45
+ #: includes/classes/wp-maintenance-mode-admin.php:211
46
+ msgid "WP Maintenance Mode"
47
+ msgstr "حالت تعمیر و نگهداری"
48
+
49
+ #: includes/classes/wp-maintenance-mode-admin.php:425
50
+ msgid "Settings"
51
+ msgstr "تنظیمات"
52
+
53
+ #: includes/classes/wp-maintenance-mode-admin.php:444
54
+ #, php-format
55
+ msgid ""
56
+ "The Maintenance Mode is <strong>active</strong>. Please don't forget to <a "
57
+ "href=\"%s\">deactivate</a> as soon as you are done."
58
+ msgstr ""
59
+ "حالت حالت تعمیر و نگهداری <strong>فعال</strong> است. فراموش نکنید که در "
60
+ "اولین فرصت ممکن ان را <a href=\"%s\">غیرفعال</a> کنید."
61
+
62
+ #: includes/classes/wp-maintenance-mode-admin.php:481
63
+ msgid "Notice key cannot be empty."
64
+ msgstr ""
65
+
66
+ #: includes/classes/wp-maintenance-mode.php:103
67
+ #: includes/classes/wp-maintenance-mode.php:104
68
+ msgid "Maintenance mode"
69
+ msgstr "حالت تعمیر و نگهداری"
70
+
71
+ #: includes/classes/wp-maintenance-mode.php:106
72
+ msgid ""
73
+ "<p>Sorry for the inconvenience.<br />Our website is currently undergoing "
74
+ "scheduled maintenance.<br />Thank you for your understanding.</p>"
75
+ msgstr ""
76
+
77
+ #: includes/classes/wp-maintenance-mode.php:124
78
+ msgid "Notify me when it's ready"
79
+ msgstr ""
80
+
81
+ #: includes/classes/wp-maintenance-mode.php:259
82
+ #, php-format
83
+ msgid ""
84
+ "WP Maintenance Mode plugin was relaunched and you MUST revise <a href=\"%s"
85
+ "\">settings</a>."
86
+ msgstr ""
87
+
88
+ #: includes/classes/wp-maintenance-mode.php:449
89
+ #: includes/classes/wp-maintenance-mode.php:463
90
+ msgid "Maintenance Mode"
91
+ msgstr "حالت تعمیر و نگهداری"
92
+
93
+ #: includes/classes/wp-maintenance-mode.php:687
94
+ #: includes/classes/wp-maintenance-mode.php:721 views/maintenance.php:85
95
+ msgid "Please enter a valid email address."
96
+ msgstr "لطفا ایمیل آدرس معتبر وارد نمایید."
97
+
98
+ #: includes/classes/wp-maintenance-mode.php:699
99
+ msgid "You successfully subscribed. Thanks!"
100
+ msgstr ""
101
+
102
+ #: includes/classes/wp-maintenance-mode.php:717
103
+ msgid "All fields required."
104
+ msgstr "تمام فیلد ها لازم است."
105
+
106
+ #: includes/classes/wp-maintenance-mode.php:726
107
+ msgid "Message via contact"
108
+ msgstr ""
109
+
110
+ #: includes/classes/wp-maintenance-mode.php:738
111
+ msgid "Your email was sent to the website administrator. Thanks!"
112
+ msgstr ""
113
+
114
+ #: views/contact.php:34
115
+ #, php-format
116
+ msgid "You have been contacted via %s."
117
+ msgstr ""
118
+
119
+ #: views/contact.php:50
120
+ msgid "Name:"
121
+ msgstr ""
122
+
123
+ #: views/contact.php:62
124
+ msgid "Email:"
125
+ msgstr ""
126
+
127
+ #: views/contact.php:74
128
+ msgid "Content:"
129
+ msgstr ""
130
+
131
+ #: views/loginform.php:8
132
+ msgid "Login"
133
+ msgstr "ورود"
134
+
135
+ #: views/maintenance.php:42
136
+ msgid "your e-mail..."
137
+ msgstr "ایمیل شما..."
138
+
139
+ #: views/maintenance.php:43 views/settings.php:270
140
+ msgid "Subscribe"
141
+ msgstr "اشتراک"
142
+
143
+ #: views/maintenance.php:84 views/sidebar.php:7
144
+ msgid "Name"
145
+ msgstr "نام"
146
+
147
+ #: views/maintenance.php:84 views/maintenance.php:85 views/maintenance.php:87
148
+ msgid "This field is required."
149
+ msgstr ""
150
+
151
+ #: views/maintenance.php:85
152
+ msgid "E-mail"
153
+ msgstr "ایمیل"
154
+
155
+ #: views/maintenance.php:87
156
+ msgid "Your message"
157
+ msgstr "پیام شما"
158
+
159
+ #: views/maintenance.php:88
160
+ msgid "Send"
161
+ msgstr "ارسال"
162
+
163
+ #: views/maintenance.php:93
164
+ msgid "Contact us"
165
+ msgstr "ارتباط با ما"
166
+
167
+ #: views/maintenance.php:98
168
+ msgid "Dashboard"
169
+ msgstr "پیشخوان"
170
+
171
+ #: views/settings.php:6
172
+ msgid "Settings saved."
173
+ msgstr "تنظیمات ذخیره شد."
174
+
175
+ #: views/settings.php:13
176
+ msgid "General"
177
+ msgstr "عمومی"
178
+
179
+ #: views/settings.php:14
180
+ msgid "Design"
181
+ msgstr "طراحی"
182
+
183
+ #: views/settings.php:15
184
+ msgid "Modules"
185
+ msgstr "ماژول‌ها"
186
+
187
+ #: views/settings.php:24
188
+ msgid "Status"
189
+ msgstr "وضعیت"
190
+
191
+ #: views/settings.php:26
192
+ msgid "Activated"
193
+ msgstr "فعال‌شده"
194
+
195
+ #: views/settings.php:27
196
+ msgid "Deactivated"
197
+ msgstr "غیرفعال‌شده"
198
+
199
+ #: views/settings.php:31
200
+ msgid "Bypass for Search Bots"
201
+ msgstr ""
202
+
203
+ #: views/settings.php:34 views/settings.php:104 views/settings.php:114
204
+ #: views/settings.php:242 views/settings.php:278 views/settings.php:316
205
+ #: views/settings.php:384 views/settings.php:416
206
+ msgid "Yes"
207
+ msgstr "بله"
208
+
209
+ #: views/settings.php:35 views/settings.php:105 views/settings.php:115
210
+ #: views/settings.php:243 views/settings.php:279 views/settings.php:317
211
+ #: views/settings.php:385 views/settings.php:417
212
+ msgid "No"
213
+ msgstr "خیر"
214
+
215
+ #: views/settings.php:37
216
+ msgid "Allow Search Bots to bypass maintenance mode?"
217
+ msgstr ""
218
+
219
+ #: views/settings.php:41
220
+ msgid "Backend Role"
221
+ msgstr ""
222
+
223
+ #: views/settings.php:43 views/settings.php:59
224
+ msgid "Select role(s)"
225
+ msgstr ""
226
+
227
+ #: views/settings.php:53
228
+ msgid ""
229
+ "Which user role is allowed to access the backend of this blog? "
230
+ "Administrators will always have access."
231
+ msgstr ""
232
+
233
+ #: views/settings.php:57
234
+ msgid "Frontend Role"
235
+ msgstr ""
236
+
237
+ #: views/settings.php:69
238
+ msgid ""
239
+ "Which user role is allowed to access the frontend of this blog? "
240
+ "Administrators will always have access."
241
+ msgstr ""
242
+
243
+ #: views/settings.php:73
244
+ msgid "Robots Meta Tag"
245
+ msgstr ""
246
+
247
+ #: views/settings.php:79
248
+ msgid ""
249
+ "The robots meta tag lets you use a granular, page-specific approach to "
250
+ "control how an individual page should be indexed and served to users in "
251
+ "search results."
252
+ msgstr ""
253
+
254
+ #: views/settings.php:83
255
+ msgid "Redirection"
256
+ msgstr "تغییر مسیر"
257
+
258
+ #: views/settings.php:86
259
+ msgid ""
260
+ "If you want to redirect a user (with no access to Dashboard/Backend) to a "
261
+ "URL (different from WordPress Dashboard URL) after login, then define a URL "
262
+ "(incl. http://)"
263
+ msgstr ""
264
+
265
+ #: views/settings.php:90
266
+ msgid "Exclude"
267
+ msgstr "مستثنی"
268
+
269
+ #: views/settings.php:97
270
+ msgid ""
271
+ "Exclude feed, pages, archives or IPs from maintenance mode. Add one slug / "
272
+ "IP per line!"
273
+ msgstr ""
274
+
275
+ #: views/settings.php:101
276
+ msgid "Notice"
277
+ msgstr "توجه"
278
+
279
+ #: views/settings.php:107
280
+ msgid "Do you want to see notices when maintenance mode is activated?"
281
+ msgstr ""
282
+
283
+ #: views/settings.php:111
284
+ msgid "Dashboard link"
285
+ msgstr "لینک پیشخوان"
286
+
287
+ #: views/settings.php:117
288
+ msgid ""
289
+ "Do you want to add a link to the dashboard on your maintenance mode page?"
290
+ msgstr ""
291
+
292
+ #: views/settings.php:125 views/settings.php:228 views/settings.php:432
293
+ msgid "Save settings"
294
+ msgstr "ذخیره تنظیمات"
295
+
296
+ #: views/settings.php:126 views/settings.php:229 views/settings.php:433
297
+ msgid "Reset settings"
298
+ msgstr "بازنشانی تنظیمات"
299
+
300
+ #: views/settings.php:131
301
+ msgid "Content"
302
+ msgstr "محتوی"
303
+
304
+ #: views/settings.php:136
305
+ msgid "Title (HTML tag)"
306
+ msgstr "عنوان"
307
+
308
+ #: views/settings.php:142
309
+ msgid "Heading"
310
+ msgstr "عنوان"
311
+
312
+ #: views/settings.php:149 views/settings.php:284
313
+ msgid "Text"
314
+ msgstr "متن"
315
+
316
+ #: views/settings.php:169
317
+ msgid "Background"
318
+ msgstr "پس‌زمینه"
319
+
320
+ #: views/settings.php:174
321
+ msgid "Choose type"
322
+ msgstr "انتخاب نوع"
323
+
324
+ #: views/settings.php:177
325
+ msgid "Custom color"
326
+ msgstr "رنگ سفارشی"
327
+
328
+ #: views/settings.php:178
329
+ msgid "Uploaded background"
330
+ msgstr "پس‌زمینه بارگزاری شده"
331
+
332
+ #: views/settings.php:179
333
+ msgid "Predefined background"
334
+ msgstr "پس‌زمینه از پیش تعیین شده"
335
+
336
+ #: views/settings.php:184
337
+ msgid "Choose color"
338
+ msgstr "انتخاب رنگ"
339
+
340
+ #: views/settings.php:190
341
+ msgid "Upload background"
342
+ msgstr "بارگزاری پس‌زمینه"
343
+
344
+ #: views/settings.php:194
345
+ msgid "Backgrounds should have 1920x1280 px size."
346
+ msgstr "پس‌زمینه باید 1920x1280 پیکسل باشد."
347
+
348
+ #: views/settings.php:199
349
+ msgid "Choose background"
350
+ msgstr "انتخاب پس‌زمینه"
351
+
352
+ #: views/settings.php:201
353
+ #, php-format
354
+ msgid "source <a href=\"%s\" target=\"_blank\">Free Photos</a>"
355
+ msgstr ""
356
+
357
+ #: views/settings.php:234
358
+ msgid "Countdown"
359
+ msgstr "شمارش معکوس"
360
+
361
+ #: views/settings.php:239
362
+ msgid "Show countdown?"
363
+ msgstr "شمارش معکوس نمایش داده شود؟"
364
+
365
+ #: views/settings.php:248
366
+ msgid "Start date"
367
+ msgstr "تاریخ شروع"
368
+
369
+ #: views/settings.php:254
370
+ msgid "Countdown (remaining time)"
371
+ msgstr "شمارش معکوس (زمان باقی مانده)"
372
+
373
+ #: views/settings.php:256
374
+ msgid "Days"
375
+ msgstr "روز"
376
+
377
+ #: views/settings.php:257
378
+ msgid "Hours"
379
+ msgstr "ساعت"
380
+
381
+ #: views/settings.php:258
382
+ msgid "Minutes"
383
+ msgstr "دیقه"
384
+
385
+ #: views/settings.php:262
386
+ msgid "Color"
387
+ msgstr "رنگ"
388
+
389
+ #: views/settings.php:275
390
+ msgid "Show subscribe?"
391
+ msgstr "اشتراک نمایش داده شود."
392
+
393
+ #: views/settings.php:291
394
+ msgid "Stats"
395
+ msgstr "آمار"
396
+
397
+ #: views/settings.php:300
398
+ msgid "Export as CSV"
399
+ msgstr "استخراج به فرمت CSV"
400
+
401
+ #: views/settings.php:301
402
+ msgid "Empty subscribers list"
403
+ msgstr ""
404
+
405
+ #: views/settings.php:308
406
+ msgid "Social Networks"
407
+ msgstr "شبکه‌های اجتماعی"
408
+
409
+ #: views/settings.php:313
410
+ msgid "Show social networks?"
411
+ msgstr ""
412
+
413
+ #: views/settings.php:322
414
+ msgid "Links target?"
415
+ msgstr ""
416
+
417
+ #: views/settings.php:325
418
+ msgid "New page"
419
+ msgstr "برگه جدید"
420
+
421
+ #: views/settings.php:326
422
+ msgid "Same page"
423
+ msgstr "همان برگه"
424
+
425
+ #: views/settings.php:328
426
+ msgid "Choose how the links will open."
427
+ msgstr ""
428
+
429
+ #: views/settings.php:376
430
+ msgid "Contact"
431
+ msgstr "تماس"
432
+
433
+ #: views/settings.php:381
434
+ msgid "Show contact?"
435
+ msgstr "تماس نمایش داده شود؟"
436
+
437
+ #: views/settings.php:390
438
+ msgid "Email address"
439
+ msgstr "آدرس ایمیل"
440
+
441
+ #: views/settings.php:396
442
+ msgid "Effects"
443
+ msgstr "جلوه‌ها"
444
+
445
+ #: views/settings.php:399
446
+ msgid "Move top - Move bottom"
447
+ msgstr ""
448
+
449
+ #: views/settings.php:400
450
+ msgid "Zoom - Zoomed"
451
+ msgstr ""
452
+
453
+ #: views/settings.php:401
454
+ msgid "Fold - Unfold"
455
+ msgstr ""
456
+
457
+ #: views/settings.php:408
458
+ msgid "Google Analytics"
459
+ msgstr "گوگل انالیتیکس"
460
+
461
+ #: views/settings.php:413
462
+ msgid "Use Google Analytics?"
463
+ msgstr "از گوگل انالیتیکس استفاده شود؟"
464
+
465
+ #: views/settings.php:422
466
+ msgid "Tracking code"
467
+ msgstr "کد پیگیری"
468
+
469
+ #: views/sidebar.php:3
470
+ msgid "Plugin Info"
471
+ msgstr "توضیحات افزونه"
472
+
473
+ #: views/sidebar.php:13
474
+ msgid "Author"
475
+ msgstr "نویسنده"
476
+
477
+ #: views/sidebar.php:14
478
+ msgid "Website"
479
+ msgstr "وبسایت"
480
+
481
+ #: views/sidebar.php:15
482
+ msgid "Twitter"
483
+ msgstr "نوئیتر"
484
+
485
+ #: views/sidebar.php:16
486
+ msgid "GitHub"
487
+ msgstr "گیت‌هاب"
488
+
489
+ #: views/sidebar.php:27
490
+ msgid "Other products"
491
+ msgstr ""
492
+
493
+ #: views/sidebar.php:44
494
+ msgid "Resources"
495
+ msgstr "منابع"
496
+
497
+ #~ msgid "WordPress Themes"
498
+ #~ msgstr "قالب‌های وردپرس"
languages/wp-maintenance-mode-fr_FR.mo CHANGED
Binary file
languages/wp-maintenance-mode-fr_FR.po CHANGED
@@ -1,465 +1,535 @@
1
- msgid ""
2
- msgstr ""
3
- "Project-Id-Version: WP Maintenance Mode 2.0.0\n"
4
- "POT-Creation-Date: 2014-09-26 19:03+0200\n"
5
- "PO-Revision-Date: 2014-09-26 19:03+0200\n"
6
- "Last-Translator: Florian TIAR <tflorian91@hotmail.fr>\n"
7
- "Language-Team: Designmodo <info@designmodo.com>\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.7\n"
13
- "X-Poedit-Basepath: ../\n"
14
- "Plural-Forms: nplurals=2; plural=(n != 1);\n"
15
- "X-Poedit-SourceCharset: UTF-8\n"
16
- "X-Poedit-KeywordsList: __;_e\n"
17
- "X-Poedit-SearchPath-0: .\n"
18
- "X-Poedit-SearchPath-1: includes/classes\n"
19
- "X-Poedit-SearchPath-2: views\n"
20
-
21
- #: includes/classes/wp-maintenance-mode-admin.php:154
22
- msgid "WP Maintenance Mode"
23
- msgstr "WP Maintenance Mode"
24
-
25
- #: includes/classes/wp-maintenance-mode-admin.php:358
26
- msgid "Settings"
27
- msgstr "Options"
28
-
29
- #: includes/classes/wp-maintenance-mode-admin.php:377
30
- #, php-format
31
- msgid ""
32
- "The Maintenance Mode is <strong>active</strong>. Please don't forget to <a "
33
- "href=\"%s\">deactivate</a> as soon as you are done."
34
- msgstr ""
35
- "Le mode Maintenance est <strong>actif</strong>. N'oubliez pas de le <a href="
36
- "\"%s\">désactiver</a> dès que vous avez terminé."
37
-
38
- #: includes/classes/wp-maintenance-mode.php:100
39
- #: includes/classes/wp-maintenance-mode.php:101
40
- msgid "Maintenance mode"
41
- msgstr "Mode Maintenance"
42
-
43
- #: includes/classes/wp-maintenance-mode.php:103
44
- msgid ""
45
- "<p>Sorry for the inconvenience.<br />Our website is currently undergoing "
46
- "scheduled maintenance.<br />Thank you for your understanding.</p>"
47
- msgstr ""
48
- "<p>Excusez-nous pour la gêne occasionnée.<br />Notre site web est "
49
- "actuellement en maintenance.<br />Merci de votre compréhension.</p>"
50
-
51
- #: includes/classes/wp-maintenance-mode.php:121
52
- msgid "Notify me when it's ready"
53
- msgstr "Me notifier quand c'est prêt"
54
-
55
- #: includes/classes/wp-maintenance-mode.php:249
56
- #, php-format
57
- msgid ""
58
- "WP Maintenance Mode plugin was relaunched and you MUST revise <a href=\"%s"
59
- "\">settings</a>."
60
- msgstr ""
61
- "Le plugin WP Maintenance Mode a été relancé et vous devez redéfinir les <a "
62
- "href=\"%s\">options</a>."
63
-
64
- #: includes/classes/wp-maintenance-mode.php:425
65
- #: includes/classes/wp-maintenance-mode.php:439
66
- msgid "Maintenance Mode"
67
- msgstr "Maintenance Mode"
68
-
69
- #: includes/classes/wp-maintenance-mode.php:630
70
- #: includes/classes/wp-maintenance-mode.php:658
71
- msgid "Please enter a valid email address."
72
- msgstr "Veuillez entrer une adresse email valide s'il vous plait."
73
-
74
- #: includes/classes/wp-maintenance-mode.php:641
75
- msgid "You successfuly subscribed. Thanks!"
76
- msgstr "Merci ! Vous vous êtes abonné avec succès."
77
-
78
- #: includes/classes/wp-maintenance-mode.php:654
79
- msgid "All fields required."
80
- msgstr "Tous les champs requis."
81
-
82
- #: includes/classes/wp-maintenance-mode.php:675
83
- msgid "Message via contact"
84
- msgstr "Message via contact"
85
-
86
- #: includes/classes/wp-maintenance-mode.php:679
87
- msgid "Your email was sent to the website administrator. Thanks!"
88
- msgstr "Merci ! Votre email a été envoyé au webmaster du site."
89
-
90
- #: views/loginform.php:8
91
- msgid "Login"
92
- msgstr ""
93
-
94
- #: views/maintenance.php:41
95
- msgid "your e-mail..."
96
- msgstr "votre e-mail"
97
-
98
- #: views/maintenance.php:42 views/settings.php:260
99
- msgid "Subscribe"
100
- msgstr "Abonnement Newsletter"
101
-
102
- #: views/maintenance.php:83 views/sidebar.php:7
103
- msgid "Name"
104
- msgstr "Nom"
105
-
106
- #: views/maintenance.php:84
107
- msgid "E-mail"
108
- msgstr "E-mail"
109
-
110
- #: views/maintenance.php:86
111
- msgid "Your message"
112
- msgstr "Votre message"
113
-
114
- #: views/maintenance.php:87
115
- msgid "Send"
116
- msgstr "Envoyer"
117
-
118
- #: views/maintenance.php:92
119
- msgid "Contact us"
120
- msgstr "Contactez-nous"
121
-
122
- #: views/maintenance.php:97
123
- msgid "Dashboard"
124
- msgstr ""
125
-
126
- #: views/settings.php:6
127
- msgid "Settings saved."
128
- msgstr "Options sauvegardés"
129
-
130
- #: views/settings.php:13
131
- msgid "General"
132
- msgstr "Général"
133
-
134
- #: views/settings.php:14
135
- msgid "Design"
136
- msgstr "Design"
137
-
138
- #: views/settings.php:15
139
- msgid "Modules"
140
- msgstr "Modules"
141
-
142
- #: views/settings.php:24
143
- msgid "Status"
144
- msgstr "Etat"
145
-
146
- #: views/settings.php:26
147
- msgid "Activated"
148
- msgstr "Activé"
149
-
150
- #: views/settings.php:27
151
- msgid "Deactivated"
152
- msgstr "Désactivé"
153
-
154
- #: views/settings.php:31
155
- msgid "Bypass for Search Bots"
156
- msgstr "Contournement pour les Robots"
157
-
158
- #: views/settings.php:34 views/settings.php:94 views/settings.php:104
159
- #: views/settings.php:232 views/settings.php:268 views/settings.php:305
160
- #: views/settings.php:373 views/settings.php:405
161
- msgid "Yes"
162
- msgstr "Oui"
163
-
164
- #: views/settings.php:35 views/settings.php:95 views/settings.php:105
165
- #: views/settings.php:233 views/settings.php:269 views/settings.php:306
166
- #: views/settings.php:374 views/settings.php:406
167
- msgid "No"
168
- msgstr "Non"
169
-
170
- #: views/settings.php:37
171
- msgid "Allow Search Bots to bypass maintenance mode?"
172
- msgstr "Autoriser les robots à contourner le mode maintenance ?"
173
-
174
- #: views/settings.php:41
175
- msgid "Backend Role"
176
- msgstr "Rôle utilisateur du Panel d'Administration"
177
-
178
- #: views/settings.php:48
179
- msgid "Which user role is allowed to access the backend of this blog?"
180
- msgstr ""
181
- "Quel rôle d'utilisateur est autorisé à avoir accès au panel "
182
- "d'administration ?"
183
-
184
- #: views/settings.php:52
185
- msgid "Frontend Role"
186
- msgstr "Rôle utilisateur du Site Web"
187
-
188
- #: views/settings.php:59
189
- msgid "Which user role is allowed to access the frontend of this blog?"
190
- msgstr "Quel rôle d'utilisateur est autorisé à avoir accès au Site Web ?"
191
-
192
- #: views/settings.php:63
193
- msgid "Robots Meta Tag"
194
- msgstr "Balise Meta de Robots"
195
-
196
- #: views/settings.php:69
197
- msgid ""
198
- "The robots meta tag lets you use a granular, page-specific approach to "
199
- "control how an individual page should be indexed and served to users in "
200
- "search results."
201
- msgstr ""
202
- "La balise meta de robots vous permet d'utiliser un granulaire, chemin de "
203
- "page spécifique pour contrôler comment une page individuelle peut être "
204
- "indexé et servi aux utilisateurs dans les résultats de recherche."
205
-
206
- #: views/settings.php:73
207
- msgid "Redirection"
208
- msgstr "Redirection"
209
-
210
- #: views/settings.php:76
211
- msgid ""
212
- "If you want to redirect a user to a URL (which is not the WordPress "
213
- "dashboard) after login, then define a URL (incl. http://)"
214
- msgstr ""
215
- "Si vous souhaitez rediriger un utilisateur vers une URL spécifique (qui "
216
- "n'est pas celle de votre site) après connexion (inclure : http://)"
217
-
218
- #: views/settings.php:80
219
- msgid "Exclude"
220
- msgstr "Exclure"
221
-
222
- #: views/settings.php:87
223
- msgid ""
224
- "Exclude feed, pages, archives or IPs from maintenance mode. Add one slug / "
225
- "IP per line!"
226
- msgstr ""
227
- "Exclure les flux, pages, archives ou adresses IP du mode maintenance. "
228
- "Ajouter une exclusion par ligne."
229
-
230
- #: views/settings.php:91
231
- msgid "Notice"
232
- msgstr "Notification"
233
-
234
- #: views/settings.php:97
235
- msgid "Do you want to see notices when maintenance mode is activated?"
236
- msgstr ""
237
- "Souhaitez-vous voir une notification quand le mode maintenance est activé ?"
238
-
239
- #: views/settings.php:101
240
- msgid "Dashboard link"
241
- msgstr ""
242
-
243
- #: views/settings.php:107
244
- msgid ""
245
- "Do you want to add a link to the dashboard on your maintenance mode page?"
246
- msgstr ""
247
-
248
- #: views/settings.php:115 views/settings.php:218 views/settings.php:421
249
- msgid "Save settings"
250
- msgstr ""
251
-
252
- #: views/settings.php:116 views/settings.php:219 views/settings.php:422
253
- msgid "Reset settings"
254
- msgstr ""
255
-
256
- #: views/settings.php:121
257
- msgid "Content"
258
- msgstr "Contenu"
259
-
260
- #: views/settings.php:126
261
- msgid "Title (HTML tag)"
262
- msgstr "Title (balise meta HTML)"
263
-
264
- #: views/settings.php:132
265
- msgid "Heading"
266
- msgstr "En-tête (titre)"
267
-
268
- #: views/settings.php:139 views/settings.php:274
269
- msgid "Text"
270
- msgstr "Texte"
271
-
272
- #: views/settings.php:159
273
- msgid "Background"
274
- msgstr "Fond d'écran"
275
-
276
- #: views/settings.php:164
277
- msgid "Choose type"
278
- msgstr "Choix du type"
279
-
280
- #: views/settings.php:167
281
- msgid "Custom color"
282
- msgstr "Couleur personnalisée"
283
-
284
- #: views/settings.php:168
285
- msgid "Uploaded background"
286
- msgstr "Fond d'écran uploadé"
287
-
288
- #: views/settings.php:169
289
- msgid "Predefined background"
290
- msgstr "Fond d'écran prédéfini"
291
-
292
- #: views/settings.php:174
293
- msgid "Choose color"
294
- msgstr "Choix de la couleur"
295
-
296
- #: views/settings.php:180
297
- msgid "Upload background"
298
- msgstr "Uploader le fond d'écran"
299
-
300
- #: views/settings.php:184
301
- msgid "Backgrounds should have 1920x1280 px size."
302
- msgstr "Le fond d'écran doit avoir une taille de 1920x1280px."
303
-
304
- #: views/settings.php:189
305
- msgid "Choose background"
306
- msgstr "Choix du fond d'écran"
307
-
308
- #: views/settings.php:191
309
- msgid "source <a href=\"%\" target=\"_blank\">Free Photos</a>"
310
- msgstr ""
311
-
312
- #: views/settings.php:224
313
- msgid "Countdown"
314
- msgstr "Compte à rebours"
315
-
316
- #: views/settings.php:229
317
- msgid "Show countdown?"
318
- msgstr "Afficher le compte à rebours ?"
319
-
320
- #: views/settings.php:238
321
- msgid "Start date"
322
- msgstr "Date de départ"
323
-
324
- #: views/settings.php:244
325
- msgid "Countdown (remaining time)"
326
- msgstr "Compte à rebours (temps restant)"
327
-
328
- #: views/settings.php:246
329
- msgid "Days"
330
- msgstr "Jours"
331
-
332
- #: views/settings.php:247
333
- msgid "Hours"
334
- msgstr "Heures"
335
-
336
- #: views/settings.php:248
337
- msgid "Minutes"
338
- msgstr "Minutes"
339
-
340
- #: views/settings.php:252
341
- msgid "Color"
342
- msgstr "Couleur"
343
-
344
- #: views/settings.php:265
345
- msgid "Show subscribe?"
346
- msgstr "Afficher l'abonnement (newsletter) ?"
347
-
348
- #: views/settings.php:281
349
- msgid "Stats"
350
- msgstr "Statistiques"
351
-
352
- #: views/settings.php:285
353
- #, php-format
354
- msgid "You have %d subscriber(s)"
355
- msgstr "Vous avez %d abonné(s)"
356
-
357
- #: views/settings.php:290
358
- msgid "Export as CSV"
359
- msgstr "Exporter en CSV"
360
-
361
- #: views/settings.php:297
362
- msgid "Social Networks"
363
- msgstr "Réseaux Sociaux"
364
-
365
- #: views/settings.php:302
366
- msgid "Show social networks?"
367
- msgstr "Afficher les réseaux sociaux ?"
368
-
369
- #: views/settings.php:311
370
- msgid "Links target?"
371
- msgstr ""
372
-
373
- #: views/settings.php:314
374
- msgid "New page"
375
- msgstr ""
376
-
377
- #: views/settings.php:315
378
- msgid "Same page"
379
- msgstr ""
380
-
381
- #: views/settings.php:317
382
- msgid "Choose how the links will open."
383
- msgstr ""
384
-
385
- #: views/settings.php:365
386
- msgid "Contact"
387
- msgstr "Contact"
388
-
389
- #: views/settings.php:370
390
- msgid "Show contact?"
391
- msgstr "Afficher le formulaire de contact ?"
392
-
393
- #: views/settings.php:379
394
- msgid "Email address"
395
- msgstr "Adresse email"
396
-
397
- #: views/settings.php:385
398
- msgid "Effects"
399
- msgstr "Animation"
400
-
401
- #: views/settings.php:388
402
- msgid "Move top - Move bottom"
403
- msgstr ""
404
-
405
- #: views/settings.php:389
406
- msgid "Zoom - Zoomed"
407
- msgstr ""
408
-
409
- #: views/settings.php:390
410
- msgid "Fold - Unfold"
411
- msgstr ""
412
-
413
- #: views/settings.php:397
414
- msgid "Google Analytics"
415
- msgstr ""
416
-
417
- #: views/settings.php:402
418
- msgid "Use Google Analytics?"
419
- msgstr ""
420
-
421
- #: views/settings.php:411
422
- msgid "Tracking code"
423
- msgstr ""
424
-
425
- #: views/sidebar.php:3
426
- msgid "Plugin Info"
427
- msgstr "Informations sur le Plugin"
428
-
429
- #: views/sidebar.php:13
430
- msgid "Author"
431
- msgstr "Auteur"
432
-
433
- #: views/sidebar.php:14
434
- msgid "Website"
435
- msgstr "Site Web"
436
-
437
- #: views/sidebar.php:15
438
- msgid "Twitter"
439
- msgstr "Twitter"
440
-
441
- #: views/sidebar.php:16
442
- msgid "GitHub"
443
- msgstr "GitHub"
444
-
445
- #: views/sidebar.php:22
446
- msgid "WordPress Themes"
447
- msgstr ""
448
-
449
- #: views/sidebar.php:31
450
- msgid "Resources"
451
- msgstr "Resources"
452
-
453
- #~ msgid "Developed by <a href=\"%s\">Designmodo</a>"
454
- #~ msgstr "Développé par <a href=\"%s\">Designmodo</a>"
455
-
456
- #~ msgid "Subscribe now for early access to new WordPress themes."
457
- #~ msgstr ""
458
- #~ "Abonnez-vous maintenant pour avoir facilement accès aux nouveaux thèmes "
459
- #~ "WordPress."
460
-
461
- #~ msgid "Enter your email address"
462
- #~ msgstr "Entrez votre adresse email"
463
-
464
- #~ msgid "News"
465
- #~ msgstr "Actualités"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ msgid ""
2
+ msgstr ""
3
+ "Project-Id-Version: WP Maintenance Mode 2.0.4\n"
4
+ "POT-Creation-Date: 2016-06-17 03:19+0300\n"
5
+ "PO-Revision-Date: 2016-06-17 03:19+0300\n"
6
+ "Last-Translator: Florian TIAR <tflorian91@hotmail.fr>\n"
7
+ "Language-Team: Designmodo <info@designmodo.com>\n"
8
+ "Language: fr\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.8.8\n"
13
+ "X-Poedit-Basepath: ..\n"
14
+ "Plural-Forms: nplurals=2; plural=(n != 1);\n"
15
+ "X-Poedit-SourceCharset: UTF-8\n"
16
+ "X-Poedit-KeywordsList: __;_e;__ngettext:1,2;_n:1,2;__ngettext_noop:1,2;"
17
+ "_n_noop:1,2;_c,_nc:4c,1,2;_x:1,2c;_ex:1,2c;_nx:4c,1,2;_nx_noop:4c,1,2;"
18
+ "esc_attr__;esc_attr_e;esc_attr_x:1,2c;esc_html__;esc_html_e;"
19
+ "esc_html_x:1,2c\n"
20
+ "X-Poedit-SearchPath-0: .\n"
21
+ "X-Poedit-SearchPath-1: includes/classes\n"
22
+ "X-Poedit-SearchPath-2: views\n"
23
+
24
+ #: includes/classes/wp-maintenance-mode-admin.php:121
25
+ #: includes/classes/wp-maintenance-mode-admin.php:159
26
+ #: includes/classes/wp-maintenance-mode-admin.php:181
27
+ msgid "You do not have access to this resource."
28
+ msgstr ""
29
+
30
+ #: includes/classes/wp-maintenance-mode-admin.php:165 views/settings.php:295
31
+ #, php-format
32
+ msgid "You have %d subscriber(s)"
33
+ msgstr "Vous avez %d abonné(s)"
34
+
35
+ #: includes/classes/wp-maintenance-mode-admin.php:186
36
+ msgid "The tab slug must not be empty."
37
+ msgstr ""
38
+
39
+ #: includes/classes/wp-maintenance-mode-admin.php:191
40
+ msgid "The tab slug must exist."
41
+ msgstr ""
42
+
43
+ #: includes/classes/wp-maintenance-mode-admin.php:211
44
+ msgid "WP Maintenance Mode"
45
+ msgstr "WP Maintenance Mode"
46
+
47
+ #: includes/classes/wp-maintenance-mode-admin.php:425
48
+ msgid "Settings"
49
+ msgstr "Options"
50
+
51
+ #: includes/classes/wp-maintenance-mode-admin.php:444
52
+ #, php-format
53
+ msgid ""
54
+ "The Maintenance Mode is <strong>active</strong>. Please don't forget to <a "
55
+ "href=\"%s\">deactivate</a> as soon as you are done."
56
+ msgstr ""
57
+ "Le mode Maintenance est <strong>actif</strong>. N'oubliez pas de le <a href="
58
+ "\"%s\">désactiver</a> dès que vous avez terminé."
59
+
60
+ #: includes/classes/wp-maintenance-mode-admin.php:481
61
+ msgid "Notice key cannot be empty."
62
+ msgstr ""
63
+
64
+ #: includes/classes/wp-maintenance-mode.php:103
65
+ #: includes/classes/wp-maintenance-mode.php:104
66
+ msgid "Maintenance mode"
67
+ msgstr "Mode Maintenance"
68
+
69
+ #: includes/classes/wp-maintenance-mode.php:106
70
+ msgid ""
71
+ "<p>Sorry for the inconvenience.<br />Our website is currently undergoing "
72
+ "scheduled maintenance.<br />Thank you for your understanding.</p>"
73
+ msgstr ""
74
+ "<p>Excusez-nous pour la gêne occasionnée.<br />Notre site web est "
75
+ "actuellement en maintenance.<br />Merci de votre compréhension.</p>"
76
+
77
+ #: includes/classes/wp-maintenance-mode.php:124
78
+ msgid "Notify me when it's ready"
79
+ msgstr "Me notifier quand c'est prêt"
80
+
81
+ #: includes/classes/wp-maintenance-mode.php:259
82
+ #, php-format
83
+ msgid ""
84
+ "WP Maintenance Mode plugin was relaunched and you MUST revise <a href=\"%s"
85
+ "\">settings</a>."
86
+ msgstr ""
87
+ "Le plugin WP Maintenance Mode a été relancé et vous devez redéfinir les <a "
88
+ "href=\"%s\">options</a>."
89
+
90
+ #: includes/classes/wp-maintenance-mode.php:449
91
+ #: includes/classes/wp-maintenance-mode.php:463
92
+ msgid "Maintenance Mode"
93
+ msgstr "Maintenance Mode"
94
+
95
+ #: includes/classes/wp-maintenance-mode.php:687
96
+ #: includes/classes/wp-maintenance-mode.php:721 views/maintenance.php:85
97
+ msgid "Please enter a valid email address."
98
+ msgstr "Veuillez entrer une adresse email valide s'il vous plait."
99
+
100
+ #: includes/classes/wp-maintenance-mode.php:699
101
+ msgid "You successfully subscribed. Thanks!"
102
+ msgstr ""
103
+
104
+ #: includes/classes/wp-maintenance-mode.php:717
105
+ msgid "All fields required."
106
+ msgstr "Tous les champs requis."
107
+
108
+ #: includes/classes/wp-maintenance-mode.php:726
109
+ msgid "Message via contact"
110
+ msgstr "Message via contact"
111
+
112
+ #: includes/classes/wp-maintenance-mode.php:738
113
+ msgid "Your email was sent to the website administrator. Thanks!"
114
+ msgstr "Merci ! Votre email a été envoyé au webmaster du site."
115
+
116
+ #: views/contact.php:34
117
+ #, php-format
118
+ msgid "You have been contacted via %s."
119
+ msgstr ""
120
+
121
+ #: views/contact.php:50
122
+ msgid "Name:"
123
+ msgstr ""
124
+
125
+ #: views/contact.php:62
126
+ msgid "Email:"
127
+ msgstr ""
128
+
129
+ #: views/contact.php:74
130
+ msgid "Content:"
131
+ msgstr ""
132
+
133
+ #: views/loginform.php:8
134
+ msgid "Login"
135
+ msgstr ""
136
+
137
+ #: views/maintenance.php:42
138
+ msgid "your e-mail..."
139
+ msgstr "votre e-mail"
140
+
141
+ #: views/maintenance.php:43 views/settings.php:270
142
+ msgid "Subscribe"
143
+ msgstr "Abonnement Newsletter"
144
+
145
+ #: views/maintenance.php:84 views/sidebar.php:7
146
+ msgid "Name"
147
+ msgstr "Nom"
148
+
149
+ #: views/maintenance.php:84 views/maintenance.php:85 views/maintenance.php:87
150
+ msgid "This field is required."
151
+ msgstr ""
152
+
153
+ #: views/maintenance.php:85
154
+ msgid "E-mail"
155
+ msgstr "E-mail"
156
+
157
+ #: views/maintenance.php:87
158
+ msgid "Your message"
159
+ msgstr "Votre message"
160
+
161
+ #: views/maintenance.php:88
162
+ msgid "Send"
163
+ msgstr "Envoyer"
164
+
165
+ #: views/maintenance.php:93
166
+ msgid "Contact us"
167
+ msgstr "Contactez-nous"
168
+
169
+ #: views/maintenance.php:98
170
+ msgid "Dashboard"
171
+ msgstr ""
172
+
173
+ #: views/settings.php:6
174
+ msgid "Settings saved."
175
+ msgstr "Options sauvegardés"
176
+
177
+ #: views/settings.php:13
178
+ msgid "General"
179
+ msgstr "Général"
180
+
181
+ #: views/settings.php:14
182
+ msgid "Design"
183
+ msgstr "Design"
184
+
185
+ #: views/settings.php:15
186
+ msgid "Modules"
187
+ msgstr "Modules"
188
+
189
+ #: views/settings.php:24
190
+ msgid "Status"
191
+ msgstr "Etat"
192
+
193
+ #: views/settings.php:26
194
+ msgid "Activated"
195
+ msgstr "Activé"
196
+
197
+ #: views/settings.php:27
198
+ msgid "Deactivated"
199
+ msgstr "Désactivé"
200
+
201
+ #: views/settings.php:31
202
+ msgid "Bypass for Search Bots"
203
+ msgstr "Contournement pour les Robots"
204
+
205
+ #: views/settings.php:34 views/settings.php:104 views/settings.php:114
206
+ #: views/settings.php:242 views/settings.php:278 views/settings.php:316
207
+ #: views/settings.php:384 views/settings.php:416
208
+ msgid "Yes"
209
+ msgstr "Oui"
210
+
211
+ #: views/settings.php:35 views/settings.php:105 views/settings.php:115
212
+ #: views/settings.php:243 views/settings.php:279 views/settings.php:317
213
+ #: views/settings.php:385 views/settings.php:417
214
+ msgid "No"
215
+ msgstr "Non"
216
+
217
+ #: views/settings.php:37
218
+ msgid "Allow Search Bots to bypass maintenance mode?"
219
+ msgstr "Autoriser les robots à contourner le mode maintenance ?"
220
+
221
+ #: views/settings.php:41
222
+ msgid "Backend Role"
223
+ msgstr "Rôle utilisateur du Panel d'Administration"
224
+
225
+ #: views/settings.php:43 views/settings.php:59
226
+ msgid "Select role(s)"
227
+ msgstr ""
228
+
229
+ #: views/settings.php:53
230
+ msgid ""
231
+ "Which user role is allowed to access the backend of this blog? "
232
+ "Administrators will always have access."
233
+ msgstr ""
234
+
235
+ #: views/settings.php:57
236
+ msgid "Frontend Role"
237
+ msgstr "Rôle utilisateur du Site Web"
238
+
239
+ #: views/settings.php:69
240
+ msgid ""
241
+ "Which user role is allowed to access the frontend of this blog? "
242
+ "Administrators will always have access."
243
+ msgstr ""
244
+
245
+ #: views/settings.php:73
246
+ msgid "Robots Meta Tag"
247
+ msgstr "Balise Meta de Robots"
248
+
249
+ #: views/settings.php:79
250
+ msgid ""
251
+ "The robots meta tag lets you use a granular, page-specific approach to "
252
+ "control how an individual page should be indexed and served to users in "
253
+ "search results."
254
+ msgstr ""
255
+ "La balise meta de robots vous permet d'utiliser un granulaire, chemin de "
256
+ "page spécifique pour contrôler comment une page individuelle peut être "
257
+ "indexé et servi aux utilisateurs dans les résultats de recherche."
258
+
259
+ #: views/settings.php:83
260
+ msgid "Redirection"
261
+ msgstr "Redirection"
262
+
263
+ #: views/settings.php:86
264
+ msgid ""
265
+ "If you want to redirect a user (with no access to Dashboard/Backend) to a "
266
+ "URL (different from WordPress Dashboard URL) after login, then define a URL "
267
+ "(incl. http://)"
268
+ msgstr ""
269
+
270
+ #: views/settings.php:90
271
+ msgid "Exclude"
272
+ msgstr "Exclure"
273
+
274
+ #: views/settings.php:97
275
+ msgid ""
276
+ "Exclude feed, pages, archives or IPs from maintenance mode. Add one slug / "
277
+ "IP per line!"
278
+ msgstr ""
279
+ "Exclure les flux, pages, archives ou adresses IP du mode maintenance. "
280
+ "Ajouter une exclusion par ligne."
281
+
282
+ #: views/settings.php:101
283
+ msgid "Notice"
284
+ msgstr "Notification"
285
+
286
+ #: views/settings.php:107
287
+ msgid "Do you want to see notices when maintenance mode is activated?"
288
+ msgstr ""
289
+ "Souhaitez-vous voir une notification quand le mode maintenance est activé ?"
290
+
291
+ #: views/settings.php:111
292
+ msgid "Dashboard link"
293
+ msgstr ""
294
+
295
+ #: views/settings.php:117
296
+ msgid ""
297
+ "Do you want to add a link to the dashboard on your maintenance mode page?"
298
+ msgstr ""
299
+
300
+ #: views/settings.php:125 views/settings.php:228 views/settings.php:432
301
+ msgid "Save settings"
302
+ msgstr ""
303
+
304
+ #: views/settings.php:126 views/settings.php:229 views/settings.php:433
305
+ msgid "Reset settings"
306
+ msgstr ""
307
+
308
+ #: views/settings.php:131
309
+ msgid "Content"
310
+ msgstr "Contenu"
311
+
312
+ #: views/settings.php:136
313
+ msgid "Title (HTML tag)"
314
+ msgstr "Title (balise meta HTML)"
315
+
316
+ #: views/settings.php:142
317
+ msgid "Heading"
318
+ msgstr "En-tête (titre)"
319
+
320
+ #: views/settings.php:149 views/settings.php:284
321
+ msgid "Text"
322
+ msgstr "Texte"
323
+
324
+ #: views/settings.php:169
325
+ msgid "Background"
326
+ msgstr "Fond d'écran"
327
+
328
+ #: views/settings.php:174
329
+ msgid "Choose type"
330
+ msgstr "Choix du type"
331
+
332
+ #: views/settings.php:177
333
+ msgid "Custom color"
334
+ msgstr "Couleur personnalisée"
335
+
336
+ #: views/settings.php:178
337
+ msgid "Uploaded background"
338
+ msgstr "Fond d'écran uploadé"
339
+
340
+ #: views/settings.php:179
341
+ msgid "Predefined background"
342
+ msgstr "Fond d'écran prédéfini"
343
+
344
+ #: views/settings.php:184
345
+ msgid "Choose color"
346
+ msgstr "Choix de la couleur"
347
+
348
+ #: views/settings.php:190
349
+ msgid "Upload background"
350
+ msgstr "Uploader le fond d'écran"
351
+
352
+ #: views/settings.php:194
353
+ msgid "Backgrounds should have 1920x1280 px size."
354
+ msgstr "Le fond d'écran doit avoir une taille de 1920x1280px."
355
+
356
+ #: views/settings.php:199
357
+ msgid "Choose background"
358
+ msgstr "Choix du fond d'écran"
359
+
360
+ #: views/settings.php:201
361
+ #, php-format
362
+ msgid "source <a href=\"%s\" target=\"_blank\">Free Photos</a>"
363
+ msgstr ""
364
+
365
+ #: views/settings.php:234
366
+ msgid "Countdown"
367
+ msgstr "Compte à rebours"
368
+
369
+ #: views/settings.php:239
370
+ msgid "Show countdown?"
371
+ msgstr "Afficher le compte à rebours ?"
372
+
373
+ #: views/settings.php:248
374
+ msgid "Start date"
375
+ msgstr "Date de départ"
376
+
377
+ #: views/settings.php:254
378
+ msgid "Countdown (remaining time)"
379
+ msgstr "Compte à rebours (temps restant)"
380
+
381
+ #: views/settings.php:256
382
+ msgid "Days"
383
+ msgstr "Jours"
384
+
385
+ #: views/settings.php:257
386
+ msgid "Hours"
387
+ msgstr "Heures"
388
+
389
+ #: views/settings.php:258
390
+ msgid "Minutes"
391
+ msgstr "Minutes"
392
+
393
+ #: views/settings.php:262
394
+ msgid "Color"
395
+ msgstr "Couleur"
396
+
397
+ #: views/settings.php:275
398
+ msgid "Show subscribe?"
399
+ msgstr "Afficher l'abonnement (newsletter) ?"
400
+
401
+ #: views/settings.php:291
402
+ msgid "Stats"
403
+ msgstr "Statistiques"
404
+
405
+ #: views/settings.php:300
406
+ msgid "Export as CSV"
407
+ msgstr "Exporter en CSV"
408
+
409
+ #: views/settings.php:301
410
+ msgid "Empty subscribers list"
411
+ msgstr ""
412
+
413
+ #: views/settings.php:308
414
+ msgid "Social Networks"
415
+ msgstr "Réseaux Sociaux"
416
+
417
+ #: views/settings.php:313
418
+ msgid "Show social networks?"
419
+ msgstr "Afficher les réseaux sociaux ?"
420
+
421
+ #: views/settings.php:322
422
+ msgid "Links target?"
423
+ msgstr ""
424
+
425
+ #: views/settings.php:325
426
+ msgid "New page"
427
+ msgstr ""
428
+
429
+ #: views/settings.php:326
430
+ msgid "Same page"
431
+ msgstr ""
432
+
433
+ #: views/settings.php:328
434
+ msgid "Choose how the links will open."
435
+ msgstr ""
436
+
437
+ #: views/settings.php:376
438
+ msgid "Contact"
439
+ msgstr "Contact"
440
+
441
+ #: views/settings.php:381
442
+ msgid "Show contact?"
443
+ msgstr "Afficher le formulaire de contact ?"
444
+
445
+ #: views/settings.php:390
446
+ msgid "Email address"
447
+ msgstr "Adresse email"
448
+
449
+ #: views/settings.php:396
450
+ msgid "Effects"
451
+ msgstr "Animation"
452
+
453
+ #: views/settings.php:399
454
+ msgid "Move top - Move bottom"
455
+ msgstr ""
456
+
457
+ #: views/settings.php:400
458
+ msgid "Zoom - Zoomed"
459
+ msgstr ""
460
+
461
+ #: views/settings.php:401
462
+ msgid "Fold - Unfold"
463
+ msgstr ""
464
+
465
+ #: views/settings.php:408
466
+ msgid "Google Analytics"
467
+ msgstr ""
468
+
469
+ #: views/settings.php:413
470
+ msgid "Use Google Analytics?"
471
+ msgstr ""
472
+
473
+ #: views/settings.php:422
474
+ msgid "Tracking code"
475
+ msgstr ""
476
+
477
+ #: views/sidebar.php:3
478
+ msgid "Plugin Info"
479
+ msgstr "Informations sur le Plugin"
480
+
481
+ #: views/sidebar.php:13
482
+ msgid "Author"
483
+ msgstr "Auteur"
484
+
485
+ #: views/sidebar.php:14
486
+ msgid "Website"
487
+ msgstr "Site Web"
488
+
489
+ #: views/sidebar.php:15
490
+ msgid "Twitter"
491
+ msgstr "Twitter"
492
+
493
+ #: views/sidebar.php:16
494
+ msgid "GitHub"
495
+ msgstr "GitHub"
496
+
497
+ #: views/sidebar.php:27
498
+ msgid "Other products"
499
+ msgstr ""
500
+
501
+ #: views/sidebar.php:44
502
+ msgid "Resources"
503
+ msgstr "Resources"
504
+
505
+ #~ msgid "You successfuly subscribed. Thanks!"
506
+ #~ msgstr "Merci ! Vous vous êtes abonné avec succès."
507
+
508
+ #~ msgid "Which user role is allowed to access the backend of this blog?"
509
+ #~ msgstr ""
510
+ #~ "Quel rôle d'utilisateur est autorisé à avoir accès au panel "
511
+ #~ "d'administration ?"
512
+
513
+ #~ msgid "Which user role is allowed to access the frontend of this blog?"
514
+ #~ msgstr "Quel rôle d'utilisateur est autorisé à avoir accès au Site Web ?"
515
+
516
+ #~ msgid ""
517
+ #~ "If you want to redirect a user to a URL (which is not the WordPress "
518
+ #~ "dashboard) after login, then define a URL (incl. http://)"
519
+ #~ msgstr ""
520
+ #~ "Si vous souhaitez rediriger un utilisateur vers une URL spécifique (qui "
521
+ #~ "n'est pas celle de votre site) après connexion (inclure : http://)"
522
+
523
+ #~ msgid "Developed by <a href=\"%s\">Designmodo</a>"
524
+ #~ msgstr "Développé par <a href=\"%s\">Designmodo</a>"
525
+
526
+ #~ msgid "Subscribe now for early access to new WordPress themes."
527
+ #~ msgstr ""
528
+ #~ "Abonnez-vous maintenant pour avoir facilement accès aux nouveaux thèmes "
529
+ #~ "WordPress."
530
+
531
+ #~ msgid "Enter your email address"
532
+ #~ msgstr "Entrez votre adresse email"
533
+
534
+ #~ msgid "News"
535
+ #~ msgstr "Actualités"
languages/wp-maintenance-mode-it_IT.mo ADDED
Binary file
languages/wp-maintenance-mode-it_IT.po ADDED
@@ -0,0 +1,528 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ msgid ""
2
+ msgstr ""
3
+ "Project-Id-Version: WP Maintenance Mode 2.0.4\n"
4
+ "POT-Creation-Date: 2016-06-17 03:21+0300\n"
5
+ "PO-Revision-Date: 2016-06-17 03:22+0300\n"
6
+ "Last-Translator: Massimiliano Losego <massimiliano@losego.it>\n"
7
+ "Language-Team: Losego Massimiliano <massimiliano@losego.it>\n"
8
+ "Language: it\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.8.8\n"
13
+ "X-Poedit-Basepath: ..\n"
14
+ "Plural-Forms: nplurals=2; plural=(n != 1);\n"
15
+ "X-Poedit-SourceCharset: UTF-8\n"
16
+ "X-Poedit-KeywordsList: __;_e;__ngettext:1,2;_n:1,2;__ngettext_noop:1,2;"
17
+ "_n_noop:1,2;_c,_nc:4c,1,2;_x:1,2c;_ex:1,2c;_nx:4c,1,2;_nx_noop:4c,1,2;"
18
+ "esc_attr__;esc_attr_e;esc_attr_x:1,2c;esc_html__;esc_html_e;esc_html_x:1,2c\n"
19
+ "X-Poedit-SearchPath-0: .\n"
20
+ "X-Poedit-SearchPath-1: includes/classes\n"
21
+ "X-Poedit-SearchPath-2: views\n"
22
+
23
+ #: includes/classes/wp-maintenance-mode-admin.php:121
24
+ #: includes/classes/wp-maintenance-mode-admin.php:159
25
+ #: includes/classes/wp-maintenance-mode-admin.php:181
26
+ msgid "You do not have access to this resource."
27
+ msgstr ""
28
+
29
+ #: includes/classes/wp-maintenance-mode-admin.php:165 views/settings.php:295
30
+ #, php-format
31
+ msgid "You have %d subscriber(s)"
32
+ msgstr "Hai %d iscritti"
33
+
34
+ #: includes/classes/wp-maintenance-mode-admin.php:186
35
+ msgid "The tab slug must not be empty."
36
+ msgstr ""
37
+
38
+ #: includes/classes/wp-maintenance-mode-admin.php:191
39
+ msgid "The tab slug must exist."
40
+ msgstr ""
41
+
42
+ #: includes/classes/wp-maintenance-mode-admin.php:211
43
+ msgid "WP Maintenance Mode"
44
+ msgstr "WP Maintenance Mode"
45
+
46
+ #: includes/classes/wp-maintenance-mode-admin.php:425
47
+ msgid "Settings"
48
+ msgstr "Impotazioni"
49
+
50
+ #: includes/classes/wp-maintenance-mode-admin.php:444
51
+ #, php-format
52
+ msgid ""
53
+ "The Maintenance Mode is <strong>active</strong>. Please don't forget to <a "
54
+ "href=\"%s\">deactivate</a> as soon as you are done."
55
+ msgstr ""
56
+ "La Modalità Manutenzione è <strong>attiva</strong>. Non dimenticarti di <a "
57
+ "href=\"%s\">disattivarla</a> appena avrai finito."
58
+
59
+ #: includes/classes/wp-maintenance-mode-admin.php:481
60
+ msgid "Notice key cannot be empty."
61
+ msgstr ""
62
+
63
+ #: includes/classes/wp-maintenance-mode.php:103
64
+ #: includes/classes/wp-maintenance-mode.php:104
65
+ msgid "Maintenance mode"
66
+ msgstr "Modalità Manutenzione"
67
+
68
+ #: includes/classes/wp-maintenance-mode.php:106
69
+ msgid ""
70
+ "<p>Sorry for the inconvenience.<br />Our website is currently undergoing "
71
+ "scheduled maintenance.<br />Thank you for your understanding.</p>"
72
+ msgstr ""
73
+ "<p>Ci scusiamo per l'inconveniente.<br />Il nostro sito è attualmente in "
74
+ "manutenzione.<br />Grazie per la comprensione.</p>"
75
+
76
+ #: includes/classes/wp-maintenance-mode.php:124
77
+ msgid "Notify me when it's ready"
78
+ msgstr "Informatemi quando sarà pronto"
79
+
80
+ #: includes/classes/wp-maintenance-mode.php:259
81
+ #, php-format
82
+ msgid ""
83
+ "WP Maintenance Mode plugin was relaunched and you MUST revise <a href=\"%s"
84
+ "\">settings</a>."
85
+ msgstr ""
86
+ "WP Maintenance Mode plugin è stato ri-lanciato e DOVRAI rivedere le <a href="
87
+ "\"%s\">impostazioni</a>."
88
+
89
+ #: includes/classes/wp-maintenance-mode.php:449
90
+ #: includes/classes/wp-maintenance-mode.php:463
91
+ msgid "Maintenance Mode"
92
+ msgstr "Modalità Manutenzione"
93
+
94
+ #: includes/classes/wp-maintenance-mode.php:687
95
+ #: includes/classes/wp-maintenance-mode.php:721 views/maintenance.php:85
96
+ msgid "Please enter a valid email address."
97
+ msgstr "Per favore inserisci in email corretta."
98
+
99
+ #: includes/classes/wp-maintenance-mode.php:699
100
+ msgid "You successfully subscribed. Thanks!"
101
+ msgstr ""
102
+
103
+ #: includes/classes/wp-maintenance-mode.php:717
104
+ msgid "All fields required."
105
+ msgstr "Sono richiesti tutti i campi."
106
+
107
+ #: includes/classes/wp-maintenance-mode.php:726
108
+ msgid "Message via contact"
109
+ msgstr "Messaggio via contatto"
110
+
111
+ #: includes/classes/wp-maintenance-mode.php:738
112
+ msgid "Your email was sent to the website administrator. Thanks!"
113
+ msgstr "La tua email è stata spedita all'amministratore del sito. Grazie!"
114
+
115
+ #: views/contact.php:34
116
+ #, php-format
117
+ msgid "You have been contacted via %s."
118
+ msgstr ""
119
+
120
+ #: views/contact.php:50
121
+ msgid "Name:"
122
+ msgstr ""
123
+
124
+ #: views/contact.php:62
125
+ msgid "Email:"
126
+ msgstr ""
127
+
128
+ #: views/contact.php:74
129
+ msgid "Content:"
130
+ msgstr ""
131
+
132
+ #: views/loginform.php:8
133
+ msgid "Login"
134
+ msgstr "Login"
135
+
136
+ #: views/maintenance.php:42
137
+ msgid "your e-mail..."
138
+ msgstr "la tua e-mail..."
139
+
140
+ #: views/maintenance.php:43 views/settings.php:270
141
+ msgid "Subscribe"
142
+ msgstr "Iscriviti"
143
+
144
+ #: views/maintenance.php:84 views/sidebar.php:7
145
+ msgid "Name"
146
+ msgstr "Nome"
147
+
148
+ #: views/maintenance.php:84 views/maintenance.php:85 views/maintenance.php:87
149
+ msgid "This field is required."
150
+ msgstr ""
151
+
152
+ #: views/maintenance.php:85
153
+ msgid "E-mail"
154
+ msgstr "E-mail"
155
+
156
+ #: views/maintenance.php:87
157
+ msgid "Your message"
158
+ msgstr "Il tuo messaggio"
159
+
160
+ #: views/maintenance.php:88
161
+ msgid "Send"
162
+ msgstr "Spedisci"
163
+
164
+ #: views/maintenance.php:93
165
+ msgid "Contact us"
166
+ msgstr "Contattaci"
167
+
168
+ #: views/maintenance.php:98
169
+ msgid "Dashboard"
170
+ msgstr "Dashboard"
171
+
172
+ #: views/settings.php:6
173
+ msgid "Settings saved."
174
+ msgstr "Impostazioni salvate."
175
+
176
+ #: views/settings.php:13
177
+ msgid "General"
178
+ msgstr "Generale"
179
+
180
+ #: views/settings.php:14
181
+ msgid "Design"
182
+ msgstr "Design"
183
+
184
+ #: views/settings.php:15
185
+ msgid "Modules"
186
+ msgstr "Moduli"
187
+
188
+ #: views/settings.php:24
189
+ msgid "Status"
190
+ msgstr "Stato"
191
+
192
+ #: views/settings.php:26
193
+ msgid "Activated"
194
+ msgstr "Attivato"
195
+
196
+ #: views/settings.php:27
197
+ msgid "Deactivated"
198
+ msgstr "Disattivato"
199
+
200
+ #: views/settings.php:31
201
+ msgid "Bypass for Search Bots"
202
+ msgstr "Bypass per Bot di ricerca"
203
+
204
+ #: views/settings.php:34 views/settings.php:104 views/settings.php:114
205
+ #: views/settings.php:242 views/settings.php:278 views/settings.php:316
206
+ #: views/settings.php:384 views/settings.php:416
207
+ msgid "Yes"
208
+ msgstr "Si"
209
+
210
+ #: views/settings.php:35 views/settings.php:105 views/settings.php:115
211
+ #: views/settings.php:243 views/settings.php:279 views/settings.php:317
212
+ #: views/settings.php:385 views/settings.php:417
213
+ msgid "No"
214
+ msgstr "No"
215
+
216
+ #: views/settings.php:37
217
+ msgid "Allow Search Bots to bypass maintenance mode?"
218
+ msgstr "Permetti ai Bot di ricerca di bypassare la modalità manutenzione?"
219
+
220
+ #: views/settings.php:41
221
+ msgid "Backend Role"
222
+ msgstr "Ruolo Backend"
223
+
224
+ #: views/settings.php:43 views/settings.php:59
225
+ msgid "Select role(s)"
226
+ msgstr ""
227
+
228
+ #: views/settings.php:53
229
+ msgid ""
230
+ "Which user role is allowed to access the backend of this blog? "
231
+ "Administrators will always have access."
232
+ msgstr ""
233
+
234
+ #: views/settings.php:57
235
+ msgid "Frontend Role"
236
+ msgstr "Ruolo Frontend"
237
+
238
+ #: views/settings.php:69
239
+ msgid ""
240
+ "Which user role is allowed to access the frontend of this blog? "
241
+ "Administrators will always have access."
242
+ msgstr ""
243
+
244
+ #: views/settings.php:73
245
+ msgid "Robots Meta Tag"
246
+ msgstr "Meta Tag Robots"
247
+
248
+ #: views/settings.php:79
249
+ msgid ""
250
+ "The robots meta tag lets you use a granular, page-specific approach to "
251
+ "control how an individual page should be indexed and served to users in "
252
+ "search results."
253
+ msgstr ""
254
+ "I metatag per i robot ti permettono di usare un approccio granulare, "
255
+ "specifico per la pagina per controllare come ogni pagina potrà essere "
256
+ "indicizzata e servita agli utenti nei risultati di ricerca."
257
+
258
+ #: views/settings.php:83
259
+ msgid "Redirection"
260
+ msgstr "Redirezione"
261
+
262
+ #: views/settings.php:86
263
+ msgid ""
264
+ "If you want to redirect a user (with no access to Dashboard/Backend) to a "
265
+ "URL (different from WordPress Dashboard URL) after login, then define a URL "
266
+ "(incl. http://)"
267
+ msgstr ""
268
+
269
+ #: views/settings.php:90
270
+ msgid "Exclude"
271
+ msgstr "Escludi"
272
+
273
+ #: views/settings.php:97
274
+ msgid ""
275
+ "Exclude feed, pages, archives or IPs from maintenance mode. Add one slug / "
276
+ "IP per line!"
277
+ msgstr ""
278
+ "Escludi feed, pagine, archivi o IPs dalla modalità manutenzione, Aggiungi un "
279
+ "valore/IP per linea!"
280
+
281
+ #: views/settings.php:101
282
+ msgid "Notice"
283
+ msgstr "Avviso"
284
+
285
+ #: views/settings.php:107
286
+ msgid "Do you want to see notices when maintenance mode is activated?"
287
+ msgstr ""
288
+ "Vuoi vedere gli avvisi quando viene attivata la modalità di manutenzione?"
289
+
290
+ #: views/settings.php:111
291
+ msgid "Dashboard link"
292
+ msgstr "Link Dashboard"
293
+
294
+ #: views/settings.php:117
295
+ msgid ""
296
+ "Do you want to add a link to the dashboard on your maintenance mode page?"
297
+ msgstr ""
298
+ "Vuoi aggiungere un collegamento alla dashboard sulla tua pagina modalità di "
299
+ "manutenzione?"
300
+
301
+ #: views/settings.php:125 views/settings.php:228 views/settings.php:432
302
+ msgid "Save settings"
303
+ msgstr "Salva impostazioni"
304
+
305
+ #: views/settings.php:126 views/settings.php:229 views/settings.php:433
306
+ msgid "Reset settings"
307
+ msgstr "Resetta impostazioni"
308
+
309
+ #: views/settings.php:131
310
+ msgid "Content"
311
+ msgstr "Contenuto"
312
+
313
+ #: views/settings.php:136
314
+ msgid "Title (HTML tag)"
315
+ msgstr "Titolo (HTML tag)"
316
+
317
+ #: views/settings.php:142
318
+ msgid "Heading"
319
+ msgstr "Intestazione"
320
+
321
+ #: views/settings.php:149 views/settings.php:284
322
+ msgid "Text"
323
+ msgstr "Testo"
324
+
325
+ #: views/settings.php:169
326
+ msgid "Background"
327
+ msgstr "Sfondo"
328
+
329
+ #: views/settings.php:174
330
+ msgid "Choose type"
331
+ msgstr "Scegli il tipo"
332
+
333
+ #: views/settings.php:177
334
+ msgid "Custom color"
335
+ msgstr "Colore Custom"
336
+
337
+ #: views/settings.php:178
338
+ msgid "Uploaded background"
339
+ msgstr "Background caricato"
340
+
341
+ #: views/settings.php:179
342
+ msgid "Predefined background"
343
+ msgstr "Background predefinito"
344
+
345
+ #: views/settings.php:184
346
+ msgid "Choose color"
347
+ msgstr "Scegli il colore"
348
+
349
+ #: views/settings.php:190
350
+ msgid "Upload background"
351
+ msgstr "Carica uno Sfondo"
352
+
353
+ #: views/settings.php:194
354
+ msgid "Backgrounds should have 1920x1280 px size."
355
+ msgstr "Gli Sfondi dovrebbero avere una dimensione di 1920x1280 px."
356
+
357
+ #: views/settings.php:199
358
+ msgid "Choose background"
359
+ msgstr "Scegli lo sfondo"
360
+
361
+ #: views/settings.php:201
362
+ #, php-format
363
+ msgid "source <a href=\"%s\" target=\"_blank\">Free Photos</a>"
364
+ msgstr ""
365
+
366
+ #: views/settings.php:234
367
+ msgid "Countdown"
368
+ msgstr "Conto alla rovescia"
369
+
370
+ #: views/settings.php:239
371
+ msgid "Show countdown?"
372
+ msgstr "Mostra il conto alla rovescia?"
373
+
374
+ #: views/settings.php:248
375
+ msgid "Start date"
376
+ msgstr "Data di inizio"
377
+
378
+ #: views/settings.php:254
379
+ msgid "Countdown (remaining time)"
380
+ msgstr "Conto alla rovescia (tempo rimanente)"
381
+
382
+ #: views/settings.php:256
383
+ msgid "Days"
384
+ msgstr "Giorni"
385
+
386
+ #: views/settings.php:257
387
+ msgid "Hours"
388
+ msgstr "Ore"
389
+
390
+ #: views/settings.php:258
391
+ msgid "Minutes"
392
+ msgstr "Minuti"
393
+
394
+ #: views/settings.php:262
395
+ msgid "Color"
396
+ msgstr "Colore"
397
+
398
+ #: views/settings.php:275
399
+ msgid "Show subscribe?"
400
+ msgstr "Mostra Sottoscrivi?"
401
+
402
+ #: views/settings.php:291
403
+ msgid "Stats"
404
+ msgstr "Statistiche"
405
+
406
+ #: views/settings.php:300
407
+ msgid "Export as CSV"
408
+ msgstr "Esporta come CSV"
409
+
410
+ #: views/settings.php:301
411
+ msgid "Empty subscribers list"
412
+ msgstr ""
413
+
414
+ #: views/settings.php:308
415
+ msgid "Social Networks"
416
+ msgstr "Social Networks"
417
+
418
+ #: views/settings.php:313
419
+ msgid "Show social networks?"
420
+ msgstr "Mostra Social Networks?"
421
+
422
+ #: views/settings.php:322
423
+ msgid "Links target?"
424
+ msgstr "Link di destinazione?"
425
+
426
+ #: views/settings.php:325
427
+ msgid "New page"
428
+ msgstr "Nuova Pagina"
429
+
430
+ #: views/settings.php:326
431
+ msgid "Same page"
432
+ msgstr "Stessa Pagina"
433
+
434
+ #: views/settings.php:328
435
+ msgid "Choose how the links will open."
436
+ msgstr "Scegli come si apriranno i link."
437
+
438
+ #: views/settings.php:376
439
+ msgid "Contact"
440
+ msgstr "Contatti"
441
+
442
+ #: views/settings.php:381
443
+ msgid "Show contact?"
444
+ msgstr "Mostra Contatti?"
445
+
446
+ #: views/settings.php:390
447
+ msgid "Email address"
448
+ msgstr "Indirizzo Email"
449
+
450
+ #: views/settings.php:396
451
+ msgid "Effects"
452
+ msgstr "Effetti"
453
+
454
+ #: views/settings.php:399
455
+ msgid "Move top - Move bottom"
456
+ msgstr "Muovi Su - Giù"
457
+
458
+ #: views/settings.php:400
459
+ msgid "Zoom - Zoomed"
460
+ msgstr "Zoom - Zoomato"
461
+
462
+ #: views/settings.php:401
463
+ msgid "Fold - Unfold"
464
+ msgstr "Chiudere - Aprire"
465
+
466
+ #: views/settings.php:408
467
+ msgid "Google Analytics"
468
+ msgstr "Google Analytics"
469
+
470
+ #: views/settings.php:413
471
+ msgid "Use Google Analytics?"
472
+ msgstr "Usa Google Analytics?"
473
+
474
+ #: views/settings.php:422
475
+ msgid "Tracking code"
476
+ msgstr "Codice di tracciamento"
477
+
478
+ #: views/sidebar.php:3
479
+ msgid "Plugin Info"
480
+ msgstr "Info sul Plugin"
481
+
482
+ #: views/sidebar.php:13
483
+ msgid "Author"
484
+ msgstr "Autore"
485
+
486
+ #: views/sidebar.php:14
487
+ msgid "Website"
488
+ msgstr "Sito"
489
+
490
+ #: views/sidebar.php:15
491
+ msgid "Twitter"
492
+ msgstr "Twitter"
493
+
494
+ #: views/sidebar.php:16
495
+ msgid "GitHub"
496
+ msgstr "GitHub"
497
+
498
+ #: views/sidebar.php:27
499
+ msgid "Other products"
500
+ msgstr ""
501
+
502
+ #: views/sidebar.php:44
503
+ msgid "Resources"
504
+ msgstr "Risorse"
505
+
506
+ #~ msgid "You successfuly subscribed. Thanks!"
507
+ #~ msgstr "Ti sei iscritto con successo. Grazie!"
508
+
509
+ #~ msgid "Which user role is allowed to access the backend of this blog?"
510
+ #~ msgstr ""
511
+ #~ "Che ruolo utente è abilitato all'accesso nel backend di questo blog?"
512
+
513
+ #~ msgid "Which user role is allowed to access the frontend of this blog?"
514
+ #~ msgstr ""
515
+ #~ "Che ruolo utente è abilitato all'accesso nel frontend di questo blog?"
516
+
517
+ #~ msgid ""
518
+ #~ "If you want to redirect a user to a URL (which is not the WordPress "
519
+ #~ "dashboard) after login, then define a URL (incl. http://)"
520
+ #~ msgstr ""
521
+ #~ "Se vuoi reindirizzare un utente ad un URL (che non sia la dashboard "
522
+ #~ "WordPress dopo il login, allora definisci un URL includendo http://)"
523
+
524
+ #~ msgid "source <a href=\"%\" target=\"_blank\">Free Photos</a>"
525
+ #~ msgstr "sorgente <a href=\"%\" target=\"_blank\">Foto Free</a>"
526
+
527
+ #~ msgid "WordPress Themes"
528
+ #~ msgstr "Temi WordPress"
languages/wp-maintenance-mode-nb_NO.mo ADDED
Binary file
languages/wp-maintenance-mode-nb_NO.po ADDED
@@ -0,0 +1,527 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ msgid ""
2
+ msgstr ""
3
+ "Project-Id-Version: WP Maintenance Mode 2.0.4\n"
4
+ "POT-Creation-Date: 2016-06-17 03:22+0300\n"
5
+ "PO-Revision-Date: 2016-06-17 03:22+0300\n"
6
+ "Last-Translator: Fredrik Hugås <fhugas@gmail.com>\n"
7
+ "Language-Team: Designmodo <info@designmodo.com>\n"
8
+ "Language: nb\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.8.8\n"
13
+ "X-Poedit-Basepath: ..\n"
14
+ "Plural-Forms: nplurals=2; plural=(n != 1);\n"
15
+ "X-Poedit-SourceCharset: UTF-8\n"
16
+ "X-Poedit-KeywordsList: __;_e;__ngettext:1,2;_n:1,2;__ngettext_noop:1,2;"
17
+ "_n_noop:1,2;_c,_nc:4c,1,2;_x:1,2c;_ex:1,2c;_nx:4c,1,2;_nx_noop:4c,1,2;"
18
+ "esc_attr__;esc_attr_e;esc_attr_x:1,2c;esc_html__;esc_html_e;"
19
+ "esc_html_x:1,2c\n"
20
+ "X-Poedit-SearchPath-0: .\n"
21
+ "X-Poedit-SearchPath-1: includes/classes\n"
22
+ "X-Poedit-SearchPath-2: views\n"
23
+
24
+ #: includes/classes/wp-maintenance-mode-admin.php:121
25
+ #: includes/classes/wp-maintenance-mode-admin.php:159
26
+ #: includes/classes/wp-maintenance-mode-admin.php:181
27
+ msgid "You do not have access to this resource."
28
+ msgstr ""
29
+
30
+ #: includes/classes/wp-maintenance-mode-admin.php:165 views/settings.php:295
31
+ #, php-format
32
+ msgid "You have %d subscriber(s)"
33
+ msgstr "Du har %d personer som ønsker oppdatering"
34
+
35
+ #: includes/classes/wp-maintenance-mode-admin.php:186
36
+ msgid "The tab slug must not be empty."
37
+ msgstr ""
38
+
39
+ #: includes/classes/wp-maintenance-mode-admin.php:191
40
+ msgid "The tab slug must exist."
41
+ msgstr ""
42
+
43
+ #: includes/classes/wp-maintenance-mode-admin.php:211
44
+ msgid "WP Maintenance Mode"
45
+ msgstr "WP Vedlikeholdsmodus"
46
+
47
+ #: includes/classes/wp-maintenance-mode-admin.php:425
48
+ msgid "Settings"
49
+ msgstr "Innstillinger"
50
+
51
+ #: includes/classes/wp-maintenance-mode-admin.php:444
52
+ #, php-format
53
+ msgid ""
54
+ "The Maintenance Mode is <strong>active</strong>. Please don't forget to <a "
55
+ "href=\"%s\">deactivate</a> as soon as you are done."
56
+ msgstr ""
57
+ "Vedlikeholdsmodus er <strong>aktivert</strong>. Husk å <a href=\"%s"
58
+ "\">deaktiver vedlikeholdsmodus</a> når du er ferdig."
59
+
60
+ #: includes/classes/wp-maintenance-mode-admin.php:481
61
+ msgid "Notice key cannot be empty."
62
+ msgstr ""
63
+
64
+ #: includes/classes/wp-maintenance-mode.php:103
65
+ #: includes/classes/wp-maintenance-mode.php:104
66
+ msgid "Maintenance mode"
67
+ msgstr "Vedlikehold pågår"
68
+
69
+ #: includes/classes/wp-maintenance-mode.php:106
70
+ msgid ""
71
+ "<p>Sorry for the inconvenience.<br />Our website is currently undergoing "
72
+ "scheduled maintenance.<br />Thank you for your understanding.</p>"
73
+ msgstr ""
74
+ "<p>Nettsiden gjennomgår for tiden et planlagt vedlikehold.<br />Vi beklager "
75
+ "nedetiden dette medfører.<br />Takk for din forståelse.</p>"
76
+
77
+ #: includes/classes/wp-maintenance-mode.php:124
78
+ msgid "Notify me when it's ready"
79
+ msgstr "Varsle meg når den er klar"
80
+
81
+ #: includes/classes/wp-maintenance-mode.php:259
82
+ #, php-format
83
+ msgid ""
84
+ "WP Maintenance Mode plugin was relaunched and you MUST revise <a href=\"%s"
85
+ "\">settings</a>."
86
+ msgstr ""
87
+ "Utvidelsen WP Maintanance Mode er oppdatert og du må <a href=\"%s\">se "
88
+ "igjennom innstillingene</a>"
89
+
90
+ #: includes/classes/wp-maintenance-mode.php:449
91
+ #: includes/classes/wp-maintenance-mode.php:463
92
+ msgid "Maintenance Mode"
93
+ msgstr "Vedlikehold pågår"
94
+
95
+ #: includes/classes/wp-maintenance-mode.php:687
96
+ #: includes/classes/wp-maintenance-mode.php:721 views/maintenance.php:85
97
+ msgid "Please enter a valid email address."
98
+ msgstr "Vennligst oppgi en gyldig epostadresse."
99
+
100
+ #: includes/classes/wp-maintenance-mode.php:699
101
+ msgid "You successfully subscribed. Thanks!"
102
+ msgstr ""
103
+
104
+ #: includes/classes/wp-maintenance-mode.php:717
105
+ msgid "All fields required."
106
+ msgstr "Alle felt er påkrevd."
107
+
108
+ #: includes/classes/wp-maintenance-mode.php:726
109
+ msgid "Message via contact"
110
+ msgstr "Melding via kontakt"
111
+
112
+ #: includes/classes/wp-maintenance-mode.php:738
113
+ msgid "Your email was sent to the website administrator. Thanks!"
114
+ msgstr "Din epost ble sendt til administratoren for nettstedet. Takk!"
115
+
116
+ #: views/contact.php:34
117
+ #, php-format
118
+ msgid "You have been contacted via %s."
119
+ msgstr ""
120
+
121
+ #: views/contact.php:50
122
+ msgid "Name:"
123
+ msgstr ""
124
+
125
+ #: views/contact.php:62
126
+ msgid "Email:"
127
+ msgstr ""
128
+
129
+ #: views/contact.php:74
130
+ msgid "Content:"
131
+ msgstr ""
132
+
133
+ #: views/loginform.php:8
134
+ msgid "Login"
135
+ msgstr "Logg inn"
136
+
137
+ #: views/maintenance.php:42
138
+ msgid "your e-mail..."
139
+ msgstr "Din epostadresse..."
140
+
141
+ #: views/maintenance.php:43 views/settings.php:270
142
+ msgid "Subscribe"
143
+ msgstr "Få varsling"
144
+
145
+ #: views/maintenance.php:84 views/sidebar.php:7
146
+ msgid "Name"
147
+ msgstr "Navn"
148
+
149
+ #: views/maintenance.php:84 views/maintenance.php:85 views/maintenance.php:87
150
+ msgid "This field is required."
151
+ msgstr ""
152
+
153
+ #: views/maintenance.php:85
154
+ msgid "E-mail"
155
+ msgstr "Epost"
156
+
157
+ #: views/maintenance.php:87
158
+ msgid "Your message"
159
+ msgstr "Din melding"
160
+
161
+ #: views/maintenance.php:88
162
+ msgid "Send"
163
+ msgstr "Send"
164
+
165
+ #: views/maintenance.php:93
166
+ msgid "Contact us"
167
+ msgstr "Kontakt oss"
168
+
169
+ #: views/maintenance.php:98
170
+ msgid "Dashboard"
171
+ msgstr "Kontrollpanel"
172
+
173
+ #: views/settings.php:6
174
+ msgid "Settings saved."
175
+ msgstr "Innstillingene ble lagret."
176
+
177
+ #: views/settings.php:13
178
+ msgid "General"
179
+ msgstr "Generelt"
180
+
181
+ #: views/settings.php:14
182
+ msgid "Design"
183
+ msgstr "Utseende"
184
+
185
+ #: views/settings.php:15
186
+ msgid "Modules"
187
+ msgstr "Moduler"
188
+
189
+ #: views/settings.php:24
190
+ msgid "Status"
191
+ msgstr "Status"
192
+
193
+ #: views/settings.php:26
194
+ msgid "Activated"
195
+ msgstr "Aktivert"
196
+
197
+ #: views/settings.php:27
198
+ msgid "Deactivated"
199
+ msgstr "Deaktivert"
200
+
201
+ #: views/settings.php:31
202
+ msgid "Bypass for Search Bots"
203
+ msgstr "Slipp igjennom søkemotorer"
204
+
205
+ #: views/settings.php:34 views/settings.php:104 views/settings.php:114
206
+ #: views/settings.php:242 views/settings.php:278 views/settings.php:316
207
+ #: views/settings.php:384 views/settings.php:416
208
+ msgid "Yes"
209
+ msgstr "Ja"
210
+
211
+ #: views/settings.php:35 views/settings.php:105 views/settings.php:115
212
+ #: views/settings.php:243 views/settings.php:279 views/settings.php:317
213
+ #: views/settings.php:385 views/settings.php:417
214
+ msgid "No"
215
+ msgstr "Nei"
216
+
217
+ #: views/settings.php:37
218
+ msgid "Allow Search Bots to bypass maintenance mode?"
219
+ msgstr "La søkemotorer slippe forbi vedlikeholdsmodus"
220
+
221
+ #: views/settings.php:41
222
+ msgid "Backend Role"
223
+ msgstr "Backend Rolle"
224
+
225
+ #: views/settings.php:43 views/settings.php:59
226
+ msgid "Select role(s)"
227
+ msgstr ""
228
+
229
+ #: views/settings.php:53
230
+ msgid ""
231
+ "Which user role is allowed to access the backend of this blog? "
232
+ "Administrators will always have access."
233
+ msgstr ""
234
+
235
+ #: views/settings.php:57
236
+ msgid "Frontend Role"
237
+ msgstr "Frontend Rolle"
238
+
239
+ #: views/settings.php:69
240
+ msgid ""
241
+ "Which user role is allowed to access the frontend of this blog? "
242
+ "Administrators will always have access."
243
+ msgstr ""
244
+
245
+ #: views/settings.php:73
246
+ msgid "Robots Meta Tag"
247
+ msgstr "Robots Meta Tag"
248
+
249
+ #: views/settings.php:79
250
+ msgid ""
251
+ "The robots meta tag lets you use a granular, page-specific approach to "
252
+ "control how an individual page should be indexed and served to users in "
253
+ "search results."
254
+ msgstr ""
255
+ "Meta Tagger for roboter lar deg bruke et detaljert, side-spesifikk metode "
256
+ "for å kontrollere hvordan den enkelte siden skal indekseres og vises til "
257
+ "brukere i søkeresultatene."
258
+
259
+ #: views/settings.php:83
260
+ msgid "Redirection"
261
+ msgstr "Omdirigering"
262
+
263
+ #: views/settings.php:86
264
+ msgid ""
265
+ "If you want to redirect a user (with no access to Dashboard/Backend) to a "
266
+ "URL (different from WordPress Dashboard URL) after login, then define a URL "
267
+ "(incl. http://)"
268
+ msgstr ""
269
+
270
+ #: views/settings.php:90
271
+ msgid "Exclude"
272
+ msgstr "Eksluder"
273
+
274
+ #: views/settings.php:97
275
+ msgid ""
276
+ "Exclude feed, pages, archives or IPs from maintenance mode. Add one slug / "
277
+ "IP per line!"
278
+ msgstr ""
279
+ "Eksluder feed, sider, arkiv eller IP-er fra vedlikeholdsmodus. Legg inn en "
280
+ "slug / IP per linje."
281
+
282
+ #: views/settings.php:101
283
+ msgid "Notice"
284
+ msgstr "Notis"
285
+
286
+ #: views/settings.php:107
287
+ msgid "Do you want to see notices when maintenance mode is activated?"
288
+ msgstr "Ønsker du å se en notis når vedlikeholdsmodus er aktivert?"
289
+
290
+ #: views/settings.php:111
291
+ msgid "Dashboard link"
292
+ msgstr "Link i kontrollpanelet"
293
+
294
+ #: views/settings.php:117
295
+ msgid ""
296
+ "Do you want to add a link to the dashboard on your maintenance mode page?"
297
+ msgstr ""
298
+ "Ønsker du å legge inn en link til kontrollpanelet på siden for "
299
+ "vedlikeholdsmodus?"
300
+
301
+ #: views/settings.php:125 views/settings.php:228 views/settings.php:432
302
+ msgid "Save settings"
303
+ msgstr "Lagre innstillinger"
304
+
305
+ #: views/settings.php:126 views/settings.php:229 views/settings.php:433
306
+ msgid "Reset settings"
307
+ msgstr "Tilbakestill innstillinger"
308
+
309
+ #: views/settings.php:131
310
+ msgid "Content"
311
+ msgstr "Innhold"
312
+
313
+ #: views/settings.php:136
314
+ msgid "Title (HTML tag)"
315
+ msgstr "Tittel (HTML title tag)"
316
+
317
+ #: views/settings.php:142
318
+ msgid "Heading"
319
+ msgstr "Overskrift"
320
+
321
+ #: views/settings.php:149 views/settings.php:284
322
+ msgid "Text"
323
+ msgstr "Tekst"
324
+
325
+ #: views/settings.php:169
326
+ msgid "Background"
327
+ msgstr "Bakgrunn"
328
+
329
+ #: views/settings.php:174
330
+ msgid "Choose type"
331
+ msgstr "Velg type"
332
+
333
+ #: views/settings.php:177
334
+ msgid "Custom color"
335
+ msgstr "Egendefinert farge"
336
+
337
+ #: views/settings.php:178
338
+ msgid "Uploaded background"
339
+ msgstr "Opplastet bilde"
340
+
341
+ #: views/settings.php:179
342
+ msgid "Predefined background"
343
+ msgstr "Forhåndsdefinert bilde"
344
+
345
+ #: views/settings.php:184
346
+ msgid "Choose color"
347
+ msgstr "Velg farge"
348
+
349
+ #: views/settings.php:190
350
+ msgid "Upload background"
351
+ msgstr "Last opp bakgrunn"
352
+
353
+ #: views/settings.php:194
354
+ msgid "Backgrounds should have 1920x1280 px size."
355
+ msgstr "Bakgrunnen må være minst 1929x1280px i størrelse."
356
+
357
+ #: views/settings.php:199
358
+ msgid "Choose background"
359
+ msgstr "Velg bakgrunn"
360
+
361
+ #: views/settings.php:201
362
+ #, php-format
363
+ msgid "source <a href=\"%s\" target=\"_blank\">Free Photos</a>"
364
+ msgstr ""
365
+
366
+ #: views/settings.php:234
367
+ msgid "Countdown"
368
+ msgstr "Nedtelling"
369
+
370
+ #: views/settings.php:239
371
+ msgid "Show countdown?"
372
+ msgstr "Vis nedtelling?"
373
+
374
+ #: views/settings.php:248
375
+ msgid "Start date"
376
+ msgstr "Dato for start"
377
+
378
+ #: views/settings.php:254
379
+ msgid "Countdown (remaining time)"
380
+ msgstr "Nedtelling (gjenstående tid)"
381
+
382
+ #: views/settings.php:256
383
+ msgid "Days"
384
+ msgstr "Dager"
385
+
386
+ #: views/settings.php:257
387
+ msgid "Hours"
388
+ msgstr "Timer"
389
+
390
+ #: views/settings.php:258
391
+ msgid "Minutes"
392
+ msgstr "Minutter"
393
+
394
+ #: views/settings.php:262
395
+ msgid "Color"
396
+ msgstr "Farge"
397
+
398
+ #: views/settings.php:275
399
+ msgid "Show subscribe?"
400
+ msgstr "Vis abboner"
401
+
402
+ #: views/settings.php:291
403
+ msgid "Stats"
404
+ msgstr "Ønsker oppdatering"
405
+
406
+ #: views/settings.php:300
407
+ msgid "Export as CSV"
408
+ msgstr "Eksporter som CSV"
409
+
410
+ #: views/settings.php:301
411
+ msgid "Empty subscribers list"
412
+ msgstr ""
413
+
414
+ #: views/settings.php:308
415
+ msgid "Social Networks"
416
+ msgstr "Sosiale nettverk"
417
+
418
+ #: views/settings.php:313
419
+ msgid "Show social networks?"
420
+ msgstr "Vis sosiale nettverk?"
421
+
422
+ #: views/settings.php:322
423
+ msgid "Links target?"
424
+ msgstr "Lenkemål"
425
+
426
+ #: views/settings.php:325
427
+ msgid "New page"
428
+ msgstr "Ny side"
429
+
430
+ #: views/settings.php:326
431
+ msgid "Same page"
432
+ msgstr "Samme side"
433
+
434
+ #: views/settings.php:328
435
+ msgid "Choose how the links will open."
436
+ msgstr "Velg hvordan side lenken skal åpnes i."
437
+
438
+ #: views/settings.php:376
439
+ msgid "Contact"
440
+ msgstr "Kontakt"
441
+
442
+ #: views/settings.php:381
443
+ msgid "Show contact?"
444
+ msgstr "Vis kontakt?"
445
+
446
+ #: views/settings.php:390
447
+ msgid "Email address"
448
+ msgstr "Epost adresse"
449
+
450
+ #: views/settings.php:396
451
+ msgid "Effects"
452
+ msgstr "Effekt"
453
+
454
+ #: views/settings.php:399
455
+ msgid "Move top - Move bottom"
456
+ msgstr "Flytt til toppen - Flytt til bunnen"
457
+
458
+ #: views/settings.php:400
459
+ msgid "Zoom - Zoomed"
460
+ msgstr "Zoom - Zoomet"
461
+
462
+ #: views/settings.php:401
463
+ msgid "Fold - Unfold"
464
+ msgstr "Brett - Brett ut"
465
+
466
+ #: views/settings.php:408
467
+ msgid "Google Analytics"
468
+ msgstr "Google Analytics"
469
+
470
+ #: views/settings.php:413
471
+ msgid "Use Google Analytics?"
472
+ msgstr "Bruk Google Analytics?"
473
+
474
+ #: views/settings.php:422
475
+ msgid "Tracking code"
476
+ msgstr "Sporingskode"
477
+
478
+ #: views/sidebar.php:3
479
+ msgid "Plugin Info"
480
+ msgstr "Informasjon om utvidelsen"
481
+
482
+ #: views/sidebar.php:13
483
+ msgid "Author"
484
+ msgstr "Forfatter"
485
+
486
+ #: views/sidebar.php:14
487
+ msgid "Website"
488
+ msgstr "Nettside"
489
+
490
+ #: views/sidebar.php:15
491
+ msgid "Twitter"
492
+ msgstr "Twitter"
493
+
494
+ #: views/sidebar.php:16
495
+ msgid "GitHub"
496
+ msgstr "GitHub"
497
+
498
+ #: views/sidebar.php:27
499
+ msgid "Other products"
500
+ msgstr ""
501
+
502
+ #: views/sidebar.php:44
503
+ msgid "Resources"
504
+ msgstr "Resurser"
505
+
506
+ #~ msgid "You successfuly subscribed. Thanks!"
507
+ #~ msgstr "Du vil nå få oppdateringer om siden. Takk!"
508
+
509
+ #~ msgid "Which user role is allowed to access the backend of this blog?"
510
+ #~ msgstr "Hvilken rolle har tilgang til backend på denne nettsiden?"
511
+
512
+ #~ msgid "Which user role is allowed to access the frontend of this blog?"
513
+ #~ msgstr "Hvilken rolle har tilgang til frontend på denne nettsiden?"
514
+
515
+ #~ msgid ""
516
+ #~ "If you want to redirect a user to a URL (which is not the WordPress "
517
+ #~ "dashboard) after login, then define a URL (incl. http://)"
518
+ #~ msgstr ""
519
+ #~ "Hvis du ønsker å omdirigere brukeren til en URL (som ikke er WordPress "
520
+ #~ "kontrollpanelet) etter innlogging, så må denne defineres her (inkluder "
521
+ #~ "http://)"
522
+
523
+ #~ msgid "source <a href=\"%\" target=\"_blank\">Free Photos</a>"
524
+ #~ msgstr "kilde <a href=\"%\" target=\"_blank\">Gratis bilder</a>"
525
+
526
+ #~ msgid "WordPress Themes"
527
+ #~ msgstr "WordPress Temaer"
languages/wp-maintenance-mode-nl_NL.mo CHANGED
Binary file
languages/wp-maintenance-mode-nl_NL.po CHANGED
@@ -1,460 +1,532 @@
1
- msgid ""
2
- msgstr ""
3
- "Project-Id-Version: WP Maintenance Mode 2.0.0\n"
4
- "POT-Creation-Date: 2014-09-26 19:03+0200\n"
5
- "PO-Revision-Date: 2014-09-26 19:03+0200\n"
6
- "Last-Translator: Dennis Hunink <dennishunink@me.com>\n"
7
- "Language-Team: Designmodo <info@designmodo.com>\n"
8
- "Language: nl\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.7\n"
13
- "X-Poedit-Basepath: ../\n"
14
- "Plural-Forms: nplurals=2; plural=(n != 1);\n"
15
- "X-Poedit-SourceCharset: UTF-8\n"
16
- "X-Poedit-KeywordsList: __;_e\n"
17
- "X-Poedit-SearchPath-0: .\n"
18
- "X-Poedit-SearchPath-1: includes/classes\n"
19
- "X-Poedit-SearchPath-2: views\n"
20
-
21
- #: includes/classes/wp-maintenance-mode-admin.php:154
22
- msgid "WP Maintenance Mode"
23
- msgstr "WP Maintenance Mode"
24
-
25
- #: includes/classes/wp-maintenance-mode-admin.php:358
26
- msgid "Settings"
27
- msgstr "Instellingen"
28
-
29
- #: includes/classes/wp-maintenance-mode-admin.php:377
30
- #, php-format
31
- msgid ""
32
- "The Maintenance Mode is <strong>active</strong>. Please don't forget to <a "
33
- "href=\"%s\">deactivate</a> as soon as you are done."
34
- msgstr ""
35
- "De Onderhoudsmodus is <strong>actief</strong>. Vergeet niet om hem <a href="
36
- "\"%s\">uit te schakelen</a> wanneer je klaar bent."
37
-
38
- #: includes/classes/wp-maintenance-mode.php:100
39
- #: includes/classes/wp-maintenance-mode.php:101
40
- msgid "Maintenance mode"
41
- msgstr "Onderhoudsmodus"
42
-
43
- #: includes/classes/wp-maintenance-mode.php:103
44
- msgid ""
45
- "<p>Sorry for the inconvenience.<br />Our website is currently undergoing "
46
- "scheduled maintenance.<br />Thank you for your understanding.</p>"
47
- msgstr ""
48
- "<p>Excuus voor het ongemak.<br />Onze website ondergaat op dit moment "
49
- "gepland onderhoud.<br/>Bedankt voor uw begrip.</p>"
50
-
51
- #: includes/classes/wp-maintenance-mode.php:121
52
- msgid "Notify me when it's ready"
53
- msgstr "Informeer mij wanneer het is afgerond"
54
-
55
- #: includes/classes/wp-maintenance-mode.php:249
56
- #, php-format
57
- msgid ""
58
- "WP Maintenance Mode plugin was relaunched and you MUST revise <a href=\"%s"
59
- "\">settings</a>."
60
- msgstr ""
61
- "De WP Maintenance Mode Plugin is opnieuw opgestart en je MOET de <a href=\"%s"
62
- "\">instellingen</a> opnieuw bekijken."
63
-
64
- #: includes/classes/wp-maintenance-mode.php:425
65
- #: includes/classes/wp-maintenance-mode.php:439
66
- msgid "Maintenance Mode"
67
- msgstr "Onderhousmodus"
68
-
69
- #: includes/classes/wp-maintenance-mode.php:630
70
- #: includes/classes/wp-maintenance-mode.php:658
71
- msgid "Please enter a valid email address."
72
- msgstr "Voer een geldig e-mailadres in."
73
-
74
- #: includes/classes/wp-maintenance-mode.php:641
75
- msgid "You successfuly subscribed. Thanks!"
76
- msgstr "Je bent succesvol aangemeld, dankjewel!"
77
-
78
- #: includes/classes/wp-maintenance-mode.php:654
79
- msgid "All fields required."
80
- msgstr "Alle velden zijn verplicht."
81
-
82
- #: includes/classes/wp-maintenance-mode.php:675
83
- msgid "Message via contact"
84
- msgstr "Bericht via contact"
85
-
86
- #: includes/classes/wp-maintenance-mode.php:679
87
- msgid "Your email was sent to the website administrator. Thanks!"
88
- msgstr "Je bericht is verstuurd naar de beheerder. Dankjewel!"
89
-
90
- #: views/loginform.php:8
91
- msgid "Login"
92
- msgstr ""
93
-
94
- #: views/maintenance.php:41
95
- msgid "your e-mail..."
96
- msgstr "e-mailadres..."
97
-
98
- #: views/maintenance.php:42 views/settings.php:260
99
- msgid "Subscribe"
100
- msgstr "Aanmelden"
101
-
102
- #: views/maintenance.php:83 views/sidebar.php:7
103
- msgid "Name"
104
- msgstr "Naam"
105
-
106
- #: views/maintenance.php:84
107
- msgid "E-mail"
108
- msgstr "E-mailadres"
109
-
110
- #: views/maintenance.php:86
111
- msgid "Your message"
112
- msgstr "Je bericht"
113
-
114
- #: views/maintenance.php:87
115
- msgid "Send"
116
- msgstr "Verstuur"
117
-
118
- #: views/maintenance.php:92
119
- msgid "Contact us"
120
- msgstr "Neem contact met ons op"
121
-
122
- #: views/maintenance.php:97
123
- msgid "Dashboard"
124
- msgstr ""
125
-
126
- #: views/settings.php:6
127
- msgid "Settings saved."
128
- msgstr "Instellingen opgeslagen"
129
-
130
- #: views/settings.php:13
131
- msgid "General"
132
- msgstr "Algemeen"
133
-
134
- #: views/settings.php:14
135
- msgid "Design"
136
- msgstr "Ontwerp"
137
-
138
- #: views/settings.php:15
139
- msgid "Modules"
140
- msgstr "Modules"
141
-
142
- #: views/settings.php:24
143
- msgid "Status"
144
- msgstr "Status"
145
-
146
- #: views/settings.php:26
147
- msgid "Activated"
148
- msgstr "Geactiveerd"
149
-
150
- #: views/settings.php:27
151
- msgid "Deactivated"
152
- msgstr "Gedeactiveerd"
153
-
154
- #: views/settings.php:31
155
- msgid "Bypass for Search Bots"
156
- msgstr "Omleiding voor zoekmachine robots"
157
-
158
- #: views/settings.php:34 views/settings.php:94 views/settings.php:104
159
- #: views/settings.php:232 views/settings.php:268 views/settings.php:305
160
- #: views/settings.php:373 views/settings.php:405
161
- msgid "Yes"
162
- msgstr "Ja"
163
-
164
- #: views/settings.php:35 views/settings.php:95 views/settings.php:105
165
- #: views/settings.php:233 views/settings.php:269 views/settings.php:306
166
- #: views/settings.php:374 views/settings.php:406
167
- msgid "No"
168
- msgstr "Nee"
169
-
170
- #: views/settings.php:37
171
- msgid "Allow Search Bots to bypass maintenance mode?"
172
- msgstr "Mogen zoekmachine robots de onderhoudsmodus omzeilen?"
173
-
174
- #: views/settings.php:41
175
- msgid "Backend Role"
176
- msgstr "Backend rol"
177
-
178
- #: views/settings.php:48
179
- msgid "Which user role is allowed to access the backend of this blog?"
180
- msgstr "Welke gebruikersrollen mogen de backend van dit blog bereiken?"
181
-
182
- #: views/settings.php:52
183
- msgid "Frontend Role"
184
- msgstr "Frontend rol"
185
-
186
- #: views/settings.php:59
187
- msgid "Which user role is allowed to access the frontend of this blog?"
188
- msgstr "Welke gebruikersrollen mogen de voorkant van dit blog bereiken?"
189
-
190
- #: views/settings.php:63
191
- msgid "Robots Meta Tag"
192
- msgstr "Robots Meta Tag"
193
-
194
- #: views/settings.php:69
195
- msgid ""
196
- "The robots meta tag lets you use a granular, page-specific approach to "
197
- "control how an individual page should be indexed and served to users in "
198
- "search results."
199
- msgstr ""
200
- "De Robots Meta Tag maakt het mogelijk om per pagina te bepalen hoe deze "
201
- "pagina's geïndexeerd en getoond moeten worden in zoekresultaten."
202
-
203
- #: views/settings.php:73
204
- msgid "Redirection"
205
- msgstr "Doorverwijzing"
206
-
207
- #: views/settings.php:76
208
- msgid ""
209
- "If you want to redirect a user to a URL (which is not the WordPress "
210
- "dashboard) after login, then define a URL (incl. http://)"
211
- msgstr ""
212
- "Als je gebruikers na het inloggen wilt doorverwijzen naar een URL (anders "
213
- "dan het WordPress Dashboard), stel deze dan hier in (inclusief http://)."
214
-
215
- #: views/settings.php:80
216
- msgid "Exclude"
217
- msgstr "Uitsluiten"
218
-
219
- #: views/settings.php:87
220
- msgid ""
221
- "Exclude feed, pages, archives or IPs from maintenance mode. Add one slug / "
222
- "IP per line!"
223
- msgstr ""
224
- "Sluit Feeds, pagina's, archieven of IP-adressen uit van de Onderhoudsmodus. "
225
- "Voer één slug of IP in per regel!"
226
-
227
- #: views/settings.php:91
228
- msgid "Notice"
229
- msgstr "Kennisgeving"
230
-
231
- #: views/settings.php:97
232
- msgid "Do you want to see notices when maintenance mode is activated?"
233
- msgstr "Wil je een bericht zien wanneer de onderhoudsmodus actief is?"
234
-
235
- #: views/settings.php:101
236
- msgid "Dashboard link"
237
- msgstr ""
238
-
239
- #: views/settings.php:107
240
- msgid ""
241
- "Do you want to add a link to the dashboard on your maintenance mode page?"
242
- msgstr ""
243
-
244
- #: views/settings.php:115 views/settings.php:218 views/settings.php:421
245
- msgid "Save settings"
246
- msgstr "Instellingen opslaan"
247
-
248
- #: views/settings.php:116 views/settings.php:219 views/settings.php:422
249
- msgid "Reset settings"
250
- msgstr "Instellingen herstellen"
251
-
252
- #: views/settings.php:121
253
- msgid "Content"
254
- msgstr "Inhoud"
255
-
256
- #: views/settings.php:126
257
- msgid "Title (HTML tag)"
258
- msgstr "Titel (HTML tag)"
259
-
260
- #: views/settings.php:132
261
- msgid "Heading"
262
- msgstr "Titel"
263
-
264
- #: views/settings.php:139 views/settings.php:274
265
- msgid "Text"
266
- msgstr "Tekst"
267
-
268
- #: views/settings.php:159
269
- msgid "Background"
270
- msgstr "Achtergrond"
271
-
272
- #: views/settings.php:164
273
- msgid "Choose type"
274
- msgstr "Kies type"
275
-
276
- #: views/settings.php:167
277
- msgid "Custom color"
278
- msgstr "Aangepaste kleur"
279
-
280
- #: views/settings.php:168
281
- msgid "Uploaded background"
282
- msgstr "Upload achtergrond"
283
-
284
- #: views/settings.php:169
285
- msgid "Predefined background"
286
- msgstr "Vooraf gedefineerde achtergrond"
287
-
288
- #: views/settings.php:174
289
- msgid "Choose color"
290
- msgstr "Kies kleur"
291
-
292
- #: views/settings.php:180
293
- msgid "Upload background"
294
- msgstr "Upload achtergrond"
295
-
296
- #: views/settings.php:184
297
- msgid "Backgrounds should have 1920x1280 px size."
298
- msgstr "Achtergronden moeten een afmeting van 1920x1280 px hebben."
299
-
300
- #: views/settings.php:189
301
- msgid "Choose background"
302
- msgstr "Kies achtergrond"
303
-
304
- #: views/settings.php:191
305
- msgid "source <a href=\"%\" target=\"_blank\">Free Photos</a>"
306
- msgstr "bron <a href=\"%\" target=\"_blank\">Free Photos</a>"
307
-
308
- #: views/settings.php:224
309
- msgid "Countdown"
310
- msgstr "Countdown"
311
-
312
- #: views/settings.php:229
313
- msgid "Show countdown?"
314
- msgstr "Countdown tonen?"
315
-
316
- #: views/settings.php:238
317
- msgid "Start date"
318
- msgstr "Start datum"
319
-
320
- #: views/settings.php:244
321
- msgid "Countdown (remaining time)"
322
- msgstr "Countdown (resterende tijd)"
323
-
324
- #: views/settings.php:246
325
- msgid "Days"
326
- msgstr "Dagen"
327
-
328
- #: views/settings.php:247
329
- msgid "Hours"
330
- msgstr "Uren"
331
-
332
- #: views/settings.php:248
333
- msgid "Minutes"
334
- msgstr "Minuten"
335
-
336
- #: views/settings.php:252
337
- msgid "Color"
338
- msgstr "Kleur"
339
-
340
- #: views/settings.php:265
341
- msgid "Show subscribe?"
342
- msgstr "Toon aanmelden e-mail?"
343
-
344
- #: views/settings.php:281
345
- msgid "Stats"
346
- msgstr "Statistieken"
347
-
348
- #: views/settings.php:285
349
- #, php-format
350
- msgid "You have %d subscriber(s)"
351
- msgstr "Je hebt %d abonnee(s)"
352
-
353
- #: views/settings.php:290
354
- msgid "Export as CSV"
355
- msgstr "Exporteren als CSV"
356
-
357
- #: views/settings.php:297
358
- msgid "Social Networks"
359
- msgstr "Sociale netwerken"
360
-
361
- #: views/settings.php:302
362
- msgid "Show social networks?"
363
- msgstr "Toon sociale netwerken?"
364
-
365
- #: views/settings.php:311
366
- msgid "Links target?"
367
- msgstr ""
368
-
369
- #: views/settings.php:314
370
- msgid "New page"
371
- msgstr ""
372
-
373
- #: views/settings.php:315
374
- msgid "Same page"
375
- msgstr ""
376
-
377
- #: views/settings.php:317
378
- msgid "Choose how the links will open."
379
- msgstr ""
380
-
381
- #: views/settings.php:365
382
- msgid "Contact"
383
- msgstr "Contact"
384
-
385
- #: views/settings.php:370
386
- msgid "Show contact?"
387
- msgstr "Toon contact?"
388
-
389
- #: views/settings.php:379
390
- msgid "Email address"
391
- msgstr "E-mailadres"
392
-
393
- #: views/settings.php:385
394
- msgid "Effects"
395
- msgstr "Effecten"
396
-
397
- #: views/settings.php:388
398
- msgid "Move top - Move bottom"
399
- msgstr "Naar top - Naar beneden"
400
-
401
- #: views/settings.php:389
402
- msgid "Zoom - Zoomed"
403
- msgstr "Zoom - Ingezoomd"
404
-
405
- #: views/settings.php:390
406
- msgid "Fold - Unfold"
407
- msgstr "Vouwen - Opvouwen"
408
-
409
- #: views/settings.php:397
410
- msgid "Google Analytics"
411
- msgstr ""
412
-
413
- #: views/settings.php:402
414
- msgid "Use Google Analytics?"
415
- msgstr ""
416
-
417
- #: views/settings.php:411
418
- msgid "Tracking code"
419
- msgstr ""
420
-
421
- #: views/sidebar.php:3
422
- msgid "Plugin Info"
423
- msgstr "Plugin Info"
424
-
425
- #: views/sidebar.php:13
426
- msgid "Author"
427
- msgstr "Auteur"
428
-
429
- #: views/sidebar.php:14
430
- msgid "Website"
431
- msgstr "Website"
432
-
433
- #: views/sidebar.php:15
434
- msgid "Twitter"
435
- msgstr "Twitter"
436
-
437
- #: views/sidebar.php:16
438
- msgid "GitHub"
439
- msgstr "GitHub"
440
-
441
- #: views/sidebar.php:22
442
- msgid "WordPress Themes"
443
- msgstr ""
444
-
445
- #: views/sidebar.php:31
446
- msgid "Resources"
447
- msgstr "Ondersteuning"
448
-
449
- #~ msgid "Subscribe now for early access to new WordPress themes."
450
- #~ msgstr ""
451
- #~ "Meld je nu aan om eerder toegang te krijgen tot nieuw WordPress thema's."
452
-
453
- #~ msgid "Enter your email address"
454
- #~ msgstr "Voer je e-mailadres in"
455
-
456
- #~ msgid "News"
457
- #~ msgstr "Nieuws"
458
-
459
- #~ msgid "Developed by <a href=\"%s\">Designmodo</a>"
460
- #~ msgstr "Ontwikkeld door <a href=\"%s\">Designmodo</a>"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ msgid ""
2
+ msgstr ""
3
+ "Project-Id-Version: WP Maintenance Mode 2.0.4\n"
4
+ "POT-Creation-Date: 2016-06-17 03:24+0300\n"
5
+ "PO-Revision-Date: 2016-06-17 03:24+0300\n"
6
+ "Last-Translator: Dennis Hunink <dennishunink@me.com>\n"
7
+ "Language-Team: Designmodo <info@designmodo.com>\n"
8
+ "Language: nl\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.8.8\n"
13
+ "X-Poedit-Basepath: ..\n"
14
+ "Plural-Forms: nplurals=2; plural=(n != 1);\n"
15
+ "X-Poedit-SourceCharset: UTF-8\n"
16
+ "X-Poedit-KeywordsList: __;_e;__ngettext:1,2;_n:1,2;__ngettext_noop:1,2;"
17
+ "_n_noop:1,2;_c,_nc:4c,1,2;_x:1,2c;_ex:1,2c;_nx:4c,1,2;_nx_noop:4c,1,2;"
18
+ "esc_attr__;esc_attr_e;esc_attr_x:1,2c;esc_html__;esc_html_e;esc_html_x:1,2c\n"
19
+ "X-Poedit-SearchPath-0: .\n"
20
+ "X-Poedit-SearchPath-1: includes/classes\n"
21
+ "X-Poedit-SearchPath-2: views\n"
22
+
23
+ #: includes/classes/wp-maintenance-mode-admin.php:121
24
+ #: includes/classes/wp-maintenance-mode-admin.php:159
25
+ #: includes/classes/wp-maintenance-mode-admin.php:181
26
+ msgid "You do not have access to this resource."
27
+ msgstr ""
28
+
29
+ #: includes/classes/wp-maintenance-mode-admin.php:165 views/settings.php:295
30
+ #, php-format
31
+ msgid "You have %d subscriber(s)"
32
+ msgstr "Je hebt %d abonnee(s)"
33
+
34
+ #: includes/classes/wp-maintenance-mode-admin.php:186
35
+ msgid "The tab slug must not be empty."
36
+ msgstr ""
37
+
38
+ #: includes/classes/wp-maintenance-mode-admin.php:191
39
+ msgid "The tab slug must exist."
40
+ msgstr ""
41
+
42
+ #: includes/classes/wp-maintenance-mode-admin.php:211
43
+ msgid "WP Maintenance Mode"
44
+ msgstr "WP Maintenance Mode"
45
+
46
+ #: includes/classes/wp-maintenance-mode-admin.php:425
47
+ msgid "Settings"
48
+ msgstr "Instellingen"
49
+
50
+ #: includes/classes/wp-maintenance-mode-admin.php:444
51
+ #, php-format
52
+ msgid ""
53
+ "The Maintenance Mode is <strong>active</strong>. Please don't forget to <a "
54
+ "href=\"%s\">deactivate</a> as soon as you are done."
55
+ msgstr ""
56
+ "De Onderhoudsmodus is <strong>actief</strong>. Vergeet niet om hem <a href="
57
+ "\"%s\">uit te schakelen</a> wanneer je klaar bent."
58
+
59
+ #: includes/classes/wp-maintenance-mode-admin.php:481
60
+ msgid "Notice key cannot be empty."
61
+ msgstr ""
62
+
63
+ #: includes/classes/wp-maintenance-mode.php:103
64
+ #: includes/classes/wp-maintenance-mode.php:104
65
+ msgid "Maintenance mode"
66
+ msgstr "Onderhoudsmodus"
67
+
68
+ #: includes/classes/wp-maintenance-mode.php:106
69
+ msgid ""
70
+ "<p>Sorry for the inconvenience.<br />Our website is currently undergoing "
71
+ "scheduled maintenance.<br />Thank you for your understanding.</p>"
72
+ msgstr ""
73
+ "<p>Excuus voor het ongemak.<br />Onze website ondergaat op dit moment "
74
+ "gepland onderhoud.<br/>Bedankt voor uw begrip.</p>"
75
+
76
+ #: includes/classes/wp-maintenance-mode.php:124
77
+ msgid "Notify me when it's ready"
78
+ msgstr "Informeer mij wanneer het is afgerond"
79
+
80
+ #: includes/classes/wp-maintenance-mode.php:259
81
+ #, php-format
82
+ msgid ""
83
+ "WP Maintenance Mode plugin was relaunched and you MUST revise <a href=\"%s"
84
+ "\">settings</a>."
85
+ msgstr ""
86
+ "De WP Maintenance Mode Plugin is opnieuw opgestart en je MOET de <a href=\"%s"
87
+ "\">instellingen</a> opnieuw bekijken."
88
+
89
+ #: includes/classes/wp-maintenance-mode.php:449
90
+ #: includes/classes/wp-maintenance-mode.php:463
91
+ msgid "Maintenance Mode"
92
+ msgstr "Onderhousmodus"
93
+
94
+ #: includes/classes/wp-maintenance-mode.php:687
95
+ #: includes/classes/wp-maintenance-mode.php:721 views/maintenance.php:85
96
+ msgid "Please enter a valid email address."
97
+ msgstr "Voer een geldig e-mailadres in."
98
+
99
+ #: includes/classes/wp-maintenance-mode.php:699
100
+ msgid "You successfully subscribed. Thanks!"
101
+ msgstr ""
102
+
103
+ #: includes/classes/wp-maintenance-mode.php:717
104
+ msgid "All fields required."
105
+ msgstr "Alle velden zijn verplicht."
106
+
107
+ #: includes/classes/wp-maintenance-mode.php:726
108
+ msgid "Message via contact"
109
+ msgstr "Bericht via contact"
110
+
111
+ #: includes/classes/wp-maintenance-mode.php:738
112
+ msgid "Your email was sent to the website administrator. Thanks!"
113
+ msgstr "Je bericht is verstuurd naar de beheerder. Dankjewel!"
114
+
115
+ #: views/contact.php:34
116
+ #, php-format
117
+ msgid "You have been contacted via %s."
118
+ msgstr ""
119
+
120
+ #: views/contact.php:50
121
+ msgid "Name:"
122
+ msgstr ""
123
+
124
+ #: views/contact.php:62
125
+ msgid "Email:"
126
+ msgstr ""
127
+
128
+ #: views/contact.php:74
129
+ msgid "Content:"
130
+ msgstr ""
131
+
132
+ #: views/loginform.php:8
133
+ msgid "Login"
134
+ msgstr ""
135
+
136
+ #: views/maintenance.php:42
137
+ msgid "your e-mail..."
138
+ msgstr "e-mailadres..."
139
+
140
+ #: views/maintenance.php:43 views/settings.php:270
141
+ msgid "Subscribe"
142
+ msgstr "Aanmelden"
143
+
144
+ #: views/maintenance.php:84 views/sidebar.php:7
145
+ msgid "Name"
146
+ msgstr "Naam"
147
+
148
+ #: views/maintenance.php:84 views/maintenance.php:85 views/maintenance.php:87
149
+ msgid "This field is required."
150
+ msgstr ""
151
+
152
+ #: views/maintenance.php:85
153
+ msgid "E-mail"
154
+ msgstr "E-mailadres"
155
+
156
+ #: views/maintenance.php:87
157
+ msgid "Your message"
158
+ msgstr "Je bericht"
159
+
160
+ #: views/maintenance.php:88
161
+ msgid "Send"
162
+ msgstr "Verstuur"
163
+
164
+ #: views/maintenance.php:93
165
+ msgid "Contact us"
166
+ msgstr "Neem contact met ons op"
167
+
168
+ #: views/maintenance.php:98
169
+ msgid "Dashboard"
170
+ msgstr ""
171
+
172
+ #: views/settings.php:6
173
+ msgid "Settings saved."
174
+ msgstr "Instellingen opgeslagen"
175
+
176
+ #: views/settings.php:13
177
+ msgid "General"
178
+ msgstr "Algemeen"
179
+
180
+ #: views/settings.php:14
181
+ msgid "Design"
182
+ msgstr "Ontwerp"
183
+
184
+ #: views/settings.php:15
185
+ msgid "Modules"
186
+ msgstr "Modules"
187
+
188
+ #: views/settings.php:24
189
+ msgid "Status"
190
+ msgstr "Status"
191
+
192
+ #: views/settings.php:26
193
+ msgid "Activated"
194
+ msgstr "Geactiveerd"
195
+
196
+ #: views/settings.php:27
197
+ msgid "Deactivated"
198
+ msgstr "Gedeactiveerd"
199
+
200
+ #: views/settings.php:31
201
+ msgid "Bypass for Search Bots"
202
+ msgstr "Omleiding voor zoekmachine robots"
203
+
204
+ #: views/settings.php:34 views/settings.php:104 views/settings.php:114
205
+ #: views/settings.php:242 views/settings.php:278 views/settings.php:316
206
+ #: views/settings.php:384 views/settings.php:416
207
+ msgid "Yes"
208
+ msgstr "Ja"
209
+
210
+ #: views/settings.php:35 views/settings.php:105 views/settings.php:115
211
+ #: views/settings.php:243 views/settings.php:279 views/settings.php:317
212
+ #: views/settings.php:385 views/settings.php:417
213
+ msgid "No"
214
+ msgstr "Nee"
215
+
216
+ #: views/settings.php:37
217
+ msgid "Allow Search Bots to bypass maintenance mode?"
218
+ msgstr "Mogen zoekmachine robots de onderhoudsmodus omzeilen?"
219
+
220
+ #: views/settings.php:41
221
+ msgid "Backend Role"
222
+ msgstr "Backend rol"
223
+
224
+ #: views/settings.php:43 views/settings.php:59
225
+ msgid "Select role(s)"
226
+ msgstr ""
227
+
228
+ #: views/settings.php:53
229
+ msgid ""
230
+ "Which user role is allowed to access the backend of this blog? "
231
+ "Administrators will always have access."
232
+ msgstr ""
233
+
234
+ #: views/settings.php:57
235
+ msgid "Frontend Role"
236
+ msgstr "Frontend rol"
237
+
238
+ #: views/settings.php:69
239
+ msgid ""
240
+ "Which user role is allowed to access the frontend of this blog? "
241
+ "Administrators will always have access."
242
+ msgstr ""
243
+
244
+ #: views/settings.php:73
245
+ msgid "Robots Meta Tag"
246
+ msgstr "Robots Meta Tag"
247
+
248
+ #: views/settings.php:79
249
+ msgid ""
250
+ "The robots meta tag lets you use a granular, page-specific approach to "
251
+ "control how an individual page should be indexed and served to users in "
252
+ "search results."
253
+ msgstr ""
254
+ "De Robots Meta Tag maakt het mogelijk om per pagina te bepalen hoe deze "
255
+ "pagina's geïndexeerd en getoond moeten worden in zoekresultaten."
256
+
257
+ #: views/settings.php:83
258
+ msgid "Redirection"
259
+ msgstr "Doorverwijzing"
260
+
261
+ #: views/settings.php:86
262
+ msgid ""
263
+ "If you want to redirect a user (with no access to Dashboard/Backend) to a "
264
+ "URL (different from WordPress Dashboard URL) after login, then define a URL "
265
+ "(incl. http://)"
266
+ msgstr ""
267
+
268
+ #: views/settings.php:90
269
+ msgid "Exclude"
270
+ msgstr "Uitsluiten"
271
+
272
+ #: views/settings.php:97
273
+ msgid ""
274
+ "Exclude feed, pages, archives or IPs from maintenance mode. Add one slug / "
275
+ "IP per line!"
276
+ msgstr ""
277
+ "Sluit Feeds, pagina's, archieven of IP-adressen uit van de Onderhoudsmodus. "
278
+ "Voer één slug of IP in per regel!"
279
+
280
+ #: views/settings.php:101
281
+ msgid "Notice"
282
+ msgstr "Kennisgeving"
283
+
284
+ #: views/settings.php:107
285
+ msgid "Do you want to see notices when maintenance mode is activated?"
286
+ msgstr "Wil je een bericht zien wanneer de onderhoudsmodus actief is?"
287
+
288
+ #: views/settings.php:111
289
+ msgid "Dashboard link"
290
+ msgstr ""
291
+
292
+ #: views/settings.php:117
293
+ msgid ""
294
+ "Do you want to add a link to the dashboard on your maintenance mode page?"
295
+ msgstr ""
296
+
297
+ #: views/settings.php:125 views/settings.php:228 views/settings.php:432
298
+ msgid "Save settings"
299
+ msgstr "Instellingen opslaan"
300
+
301
+ #: views/settings.php:126 views/settings.php:229 views/settings.php:433
302
+ msgid "Reset settings"
303
+ msgstr "Instellingen herstellen"
304
+
305
+ #: views/settings.php:131
306
+ msgid "Content"
307
+ msgstr "Inhoud"
308
+
309
+ #: views/settings.php:136
310
+ msgid "Title (HTML tag)"
311
+ msgstr "Titel (HTML tag)"
312
+
313
+ #: views/settings.php:142
314
+ msgid "Heading"
315
+ msgstr "Titel"
316
+
317
+ #: views/settings.php:149 views/settings.php:284
318
+ msgid "Text"
319
+ msgstr "Tekst"
320
+
321
+ #: views/settings.php:169
322
+ msgid "Background"
323
+ msgstr "Achtergrond"
324
+
325
+ #: views/settings.php:174
326
+ msgid "Choose type"
327
+ msgstr "Kies type"
328
+
329
+ #: views/settings.php:177
330
+ msgid "Custom color"
331
+ msgstr "Aangepaste kleur"
332
+
333
+ #: views/settings.php:178
334
+ msgid "Uploaded background"
335
+ msgstr "Upload achtergrond"
336
+
337
+ #: views/settings.php:179
338
+ msgid "Predefined background"
339
+ msgstr "Vooraf gedefineerde achtergrond"
340
+
341
+ #: views/settings.php:184
342
+ msgid "Choose color"
343
+ msgstr "Kies kleur"
344
+
345
+ #: views/settings.php:190
346
+ msgid "Upload background"
347
+ msgstr "Upload achtergrond"
348
+
349
+ #: views/settings.php:194
350
+ msgid "Backgrounds should have 1920x1280 px size."
351
+ msgstr "Achtergronden moeten een afmeting van 1920x1280 px hebben."
352
+
353
+ #: views/settings.php:199
354
+ msgid "Choose background"
355
+ msgstr "Kies achtergrond"
356
+
357
+ #: views/settings.php:201
358
+ #, php-format
359
+ msgid "source <a href=\"%s\" target=\"_blank\">Free Photos</a>"
360
+ msgstr ""
361
+
362
+ #: views/settings.php:234
363
+ msgid "Countdown"
364
+ msgstr "Countdown"
365
+
366
+ #: views/settings.php:239
367
+ msgid "Show countdown?"
368
+ msgstr "Countdown tonen?"
369
+
370
+ #: views/settings.php:248
371
+ msgid "Start date"
372
+ msgstr "Start datum"
373
+
374
+ #: views/settings.php:254
375
+ msgid "Countdown (remaining time)"
376
+ msgstr "Countdown (resterende tijd)"
377
+
378
+ #: views/settings.php:256
379
+ msgid "Days"
380
+ msgstr "Dagen"
381
+
382
+ #: views/settings.php:257
383
+ msgid "Hours"
384
+ msgstr "Uren"
385
+
386
+ #: views/settings.php:258
387
+ msgid "Minutes"
388
+ msgstr "Minuten"
389
+
390
+ #: views/settings.php:262
391
+ msgid "Color"
392
+ msgstr "Kleur"
393
+
394
+ #: views/settings.php:275
395
+ msgid "Show subscribe?"
396
+ msgstr "Toon aanmelden e-mail?"
397
+
398
+ #: views/settings.php:291
399
+ msgid "Stats"
400
+ msgstr "Statistieken"
401
+
402
+ #: views/settings.php:300
403
+ msgid "Export as CSV"
404
+ msgstr "Exporteren als CSV"
405
+
406
+ #: views/settings.php:301
407
+ msgid "Empty subscribers list"
408
+ msgstr ""
409
+
410
+ #: views/settings.php:308
411
+ msgid "Social Networks"
412
+ msgstr "Sociale netwerken"
413
+
414
+ #: views/settings.php:313
415
+ msgid "Show social networks?"
416
+ msgstr "Toon sociale netwerken?"
417
+
418
+ #: views/settings.php:322
419
+ msgid "Links target?"
420
+ msgstr ""
421
+
422
+ #: views/settings.php:325
423
+ msgid "New page"
424
+ msgstr ""
425
+
426
+ #: views/settings.php:326
427
+ msgid "Same page"
428
+ msgstr ""
429
+
430
+ #: views/settings.php:328
431
+ msgid "Choose how the links will open."
432
+ msgstr ""
433
+
434
+ #: views/settings.php:376
435
+ msgid "Contact"
436
+ msgstr "Contact"
437
+
438
+ #: views/settings.php:381
439
+ msgid "Show contact?"
440
+ msgstr "Toon contact?"
441
+
442
+ #: views/settings.php:390
443
+ msgid "Email address"
444
+ msgstr "E-mailadres"
445
+
446
+ #: views/settings.php:396
447
+ msgid "Effects"
448
+ msgstr "Effecten"
449
+
450
+ #: views/settings.php:399
451
+ msgid "Move top - Move bottom"
452
+ msgstr "Naar top - Naar beneden"
453
+
454
+ #: views/settings.php:400
455
+ msgid "Zoom - Zoomed"
456
+ msgstr "Zoom - Ingezoomd"
457
+
458
+ #: views/settings.php:401
459
+ msgid "Fold - Unfold"
460
+ msgstr "Vouwen - Opvouwen"
461
+
462
+ #: views/settings.php:408
463
+ msgid "Google Analytics"
464
+ msgstr ""
465
+
466
+ #: views/settings.php:413
467
+ msgid "Use Google Analytics?"
468
+ msgstr ""
469
+
470
+ #: views/settings.php:422
471
+ msgid "Tracking code"
472
+ msgstr ""
473
+
474
+ #: views/sidebar.php:3
475
+ msgid "Plugin Info"
476
+ msgstr "Plugin Info"
477
+
478
+ #: views/sidebar.php:13
479
+ msgid "Author"
480
+ msgstr "Auteur"
481
+
482
+ #: views/sidebar.php:14
483
+ msgid "Website"
484
+ msgstr "Website"
485
+
486
+ #: views/sidebar.php:15
487
+ msgid "Twitter"
488
+ msgstr "Twitter"
489
+
490
+ #: views/sidebar.php:16
491
+ msgid "GitHub"
492
+ msgstr "GitHub"
493
+
494
+ #: views/sidebar.php:27
495
+ msgid "Other products"
496
+ msgstr ""
497
+
498
+ #: views/sidebar.php:44
499
+ msgid "Resources"
500
+ msgstr "Ondersteuning"
501
+
502
+ #~ msgid "You successfuly subscribed. Thanks!"
503
+ #~ msgstr "Je bent succesvol aangemeld, dankjewel!"
504
+
505
+ #~ msgid "Which user role is allowed to access the backend of this blog?"
506
+ #~ msgstr "Welke gebruikersrollen mogen de backend van dit blog bereiken?"
507
+
508
+ #~ msgid "Which user role is allowed to access the frontend of this blog?"
509
+ #~ msgstr "Welke gebruikersrollen mogen de voorkant van dit blog bereiken?"
510
+
511
+ #~ msgid ""
512
+ #~ "If you want to redirect a user to a URL (which is not the WordPress "
513
+ #~ "dashboard) after login, then define a URL (incl. http://)"
514
+ #~ msgstr ""
515
+ #~ "Als je gebruikers na het inloggen wilt doorverwijzen naar een URL (anders "
516
+ #~ "dan het WordPress Dashboard), stel deze dan hier in (inclusief http://)."
517
+
518
+ #~ msgid "source <a href=\"%\" target=\"_blank\">Free Photos</a>"
519
+ #~ msgstr "bron <a href=\"%\" target=\"_blank\">Free Photos</a>"
520
+
521
+ #~ msgid "Subscribe now for early access to new WordPress themes."
522
+ #~ msgstr ""
523
+ #~ "Meld je nu aan om eerder toegang te krijgen tot nieuw WordPress thema's."
524
+
525
+ #~ msgid "Enter your email address"
526
+ #~ msgstr "Voer je e-mailadres in"
527
+
528
+ #~ msgid "News"
529
+ #~ msgstr "Nieuws"
530
+
531
+ #~ msgid "Developed by <a href=\"%s\">Designmodo</a>"
532
+ #~ msgstr "Ontwikkeld door <a href=\"%s\">Designmodo</a>"
languages/wp-maintenance-mode-pl_PL.mo ADDED
Binary file
languages/wp-maintenance-mode-pl_PL.po ADDED
@@ -0,0 +1,530 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ msgid ""
2
+ msgstr ""
3
+ "Project-Id-Version: WP Maintenance Mode 2.0.4\n"
4
+ "POT-Creation-Date: 2016-06-17 03:26+0300\n"
5
+ "PO-Revision-Date: 2016-06-17 03:26+0300\n"
6
+ "Last-Translator: Maciej Gryniuk <maciejka45@gmail.com>\n"
7
+ "Language-Team: Maciej Gryniuk <maciejka45@gmail.com>\n"
8
+ "Language: pl\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.8.8\n"
13
+ "X-Poedit-Basepath: ..\n"
14
+ "Plural-Forms: nplurals=2; plural=(n != 1);\n"
15
+ "X-Poedit-SourceCharset: UTF-8\n"
16
+ "X-Poedit-KeywordsList: __;_e;__ngettext:1,2;_n:1,2;__ngettext_noop:1,2;"
17
+ "_n_noop:1,2;_c,_nc:4c,1,2;_x:1,2c;_ex:1,2c;_nx:4c,1,2;_nx_noop:4c,1,2;"
18
+ "esc_attr__;esc_attr_e;esc_attr_x:1,2c;esc_html__;esc_html_e;esc_html_x:1,2c\n"
19
+ "X-Poedit-SearchPath-0: .\n"
20
+ "X-Poedit-SearchPath-1: includes/classes\n"
21
+ "X-Poedit-SearchPath-2: views\n"
22
+
23
+ #: includes/classes/wp-maintenance-mode-admin.php:121
24
+ #: includes/classes/wp-maintenance-mode-admin.php:159
25
+ #: includes/classes/wp-maintenance-mode-admin.php:181
26
+ msgid "You do not have access to this resource."
27
+ msgstr ""
28
+
29
+ #: includes/classes/wp-maintenance-mode-admin.php:165 views/settings.php:295
30
+ #, php-format
31
+ msgid "You have %d subscriber(s)"
32
+ msgstr "Obecne subskrypcje: %d."
33
+
34
+ #: includes/classes/wp-maintenance-mode-admin.php:186
35
+ msgid "The tab slug must not be empty."
36
+ msgstr ""
37
+
38
+ #: includes/classes/wp-maintenance-mode-admin.php:191
39
+ msgid "The tab slug must exist."
40
+ msgstr ""
41
+
42
+ #: includes/classes/wp-maintenance-mode-admin.php:211
43
+ msgid "WP Maintenance Mode"
44
+ msgstr "WP Tryb Konserwacji"
45
+
46
+ #: includes/classes/wp-maintenance-mode-admin.php:425
47
+ msgid "Settings"
48
+ msgstr "Ustawienia"
49
+
50
+ #: includes/classes/wp-maintenance-mode-admin.php:444
51
+ #, php-format
52
+ msgid ""
53
+ "The Maintenance Mode is <strong>active</strong>. Please don't forget to <a "
54
+ "href=\"%s\">deactivate</a> as soon as you are done."
55
+ msgstr ""
56
+ "Tryb Konserwacji jest <strong>aktywny</strong>. Pamiętaj, aby go <a href=\"%s"
57
+ "\">wyłączyć</a>, kiedy skończysz.\v"
58
+
59
+ #: includes/classes/wp-maintenance-mode-admin.php:481
60
+ msgid "Notice key cannot be empty."
61
+ msgstr ""
62
+
63
+ #: includes/classes/wp-maintenance-mode.php:103
64
+ #: includes/classes/wp-maintenance-mode.php:104
65
+ msgid "Maintenance mode"
66
+ msgstr "Tryb konserwacji"
67
+
68
+ #: includes/classes/wp-maintenance-mode.php:106
69
+ msgid ""
70
+ "<p>Sorry for the inconvenience.<br />Our website is currently undergoing "
71
+ "scheduled maintenance.<br />Thank you for your understanding.</p>"
72
+ msgstr ""
73
+ "<p>Przepraszamy za niedogodności.<br />Nasza strona jest obecnie poddawana "
74
+ "pracom konserwacyjnym.<br />Dziękujemy za zrozumienie.</p>"
75
+
76
+ #: includes/classes/wp-maintenance-mode.php:124
77
+ msgid "Notify me when it's ready"
78
+ msgstr "Powiadom mnie po uruchomieniu strony"
79
+
80
+ #: includes/classes/wp-maintenance-mode.php:259
81
+ #, php-format
82
+ msgid ""
83
+ "WP Maintenance Mode plugin was relaunched and you MUST revise <a href=\"%s"
84
+ "\">settings</a>."
85
+ msgstr ""
86
+ "Wtyczka WP Tryb Konserwacji została ponownie uruchomiona i MUSISZ sprawdzić "
87
+ "<a href=\"%s\">ustawienia</a>.\v"
88
+
89
+ #: includes/classes/wp-maintenance-mode.php:449
90
+ #: includes/classes/wp-maintenance-mode.php:463
91
+ msgid "Maintenance Mode"
92
+ msgstr "Tryb Konserwacji"
93
+
94
+ #: includes/classes/wp-maintenance-mode.php:687
95
+ #: includes/classes/wp-maintenance-mode.php:721 views/maintenance.php:85
96
+ msgid "Please enter a valid email address."
97
+ msgstr "Proszę podać poprawny adres e-mail."
98
+
99
+ #: includes/classes/wp-maintenance-mode.php:699
100
+ msgid "You successfully subscribed. Thanks!"
101
+ msgstr ""
102
+
103
+ #: includes/classes/wp-maintenance-mode.php:717
104
+ msgid "All fields required."
105
+ msgstr "Wszystkie pola są wymagane"
106
+
107
+ #: includes/classes/wp-maintenance-mode.php:726
108
+ msgid "Message via contact"
109
+ msgstr "Wiadomość poprzez kontakt"
110
+
111
+ #: includes/classes/wp-maintenance-mode.php:738
112
+ msgid "Your email was sent to the website administrator. Thanks!"
113
+ msgstr "Twój adres e-mail został wysłany do administratora strony. Dzięki!"
114
+
115
+ #: views/contact.php:34
116
+ #, php-format
117
+ msgid "You have been contacted via %s."
118
+ msgstr ""
119
+
120
+ #: views/contact.php:50
121
+ msgid "Name:"
122
+ msgstr ""
123
+
124
+ #: views/contact.php:62
125
+ msgid "Email:"
126
+ msgstr ""
127
+
128
+ #: views/contact.php:74
129
+ msgid "Content:"
130
+ msgstr ""
131
+
132
+ #: views/loginform.php:8
133
+ msgid "Login"
134
+ msgstr "Login"
135
+
136
+ #: views/maintenance.php:42
137
+ msgid "your e-mail..."
138
+ msgstr "Twój e-mail..."
139
+
140
+ #: views/maintenance.php:43 views/settings.php:270
141
+ msgid "Subscribe"
142
+ msgstr "Subskrybuj"
143
+
144
+ #: views/maintenance.php:84 views/sidebar.php:7
145
+ msgid "Name"
146
+ msgstr "Nazwa"
147
+
148
+ #: views/maintenance.php:84 views/maintenance.php:85 views/maintenance.php:87
149
+ msgid "This field is required."
150
+ msgstr ""
151
+
152
+ #: views/maintenance.php:85
153
+ msgid "E-mail"
154
+ msgstr "E-mail"
155
+
156
+ #: views/maintenance.php:87
157
+ msgid "Your message"
158
+ msgstr "Twoja wiadomość"
159
+
160
+ #: views/maintenance.php:88
161
+ msgid "Send"
162
+ msgstr "Wyślij"
163
+
164
+ #: views/maintenance.php:93
165
+ msgid "Contact us"
166
+ msgstr "Skontaktuj się z nami"
167
+
168
+ #: views/maintenance.php:98
169
+ msgid "Dashboard"
170
+ msgstr "Kokpit"
171
+
172
+ #: views/settings.php:6
173
+ msgid "Settings saved."
174
+ msgstr "Ustawienia zapisane"
175
+
176
+ #: views/settings.php:13
177
+ msgid "General"
178
+ msgstr "Ogólne"
179
+
180
+ #: views/settings.php:14
181
+ msgid "Design"
182
+ msgstr "Wygląd"
183
+
184
+ #: views/settings.php:15
185
+ msgid "Modules"
186
+ msgstr "Moduły"
187
+
188
+ #: views/settings.php:24
189
+ msgid "Status"
190
+ msgstr "Status"
191
+
192
+ #: views/settings.php:26
193
+ msgid "Activated"
194
+ msgstr "Aktywny"
195
+
196
+ #: views/settings.php:27
197
+ msgid "Deactivated"
198
+ msgstr "Zdezaktywowany"
199
+
200
+ #: views/settings.php:31
201
+ msgid "Bypass for Search Bots"
202
+ msgstr "Wstęp dla wyszukiwarek"
203
+
204
+ #: views/settings.php:34 views/settings.php:104 views/settings.php:114
205
+ #: views/settings.php:242 views/settings.php:278 views/settings.php:316
206
+ #: views/settings.php:384 views/settings.php:416
207
+ msgid "Yes"
208
+ msgstr "Tak"
209
+
210
+ #: views/settings.php:35 views/settings.php:105 views/settings.php:115
211
+ #: views/settings.php:243 views/settings.php:279 views/settings.php:317
212
+ #: views/settings.php:385 views/settings.php:417
213
+ msgid "No"
214
+ msgstr "Nie"
215
+
216
+ #: views/settings.php:37
217
+ msgid "Allow Search Bots to bypass maintenance mode?"
218
+ msgstr "Umożliwić wyszukiwarkom pominięcie trybu konserwacji?"
219
+
220
+ #: views/settings.php:41
221
+ msgid "Backend Role"
222
+ msgstr "Rola back-end"
223
+
224
+ #: views/settings.php:43 views/settings.php:59
225
+ msgid "Select role(s)"
226
+ msgstr ""
227
+
228
+ #: views/settings.php:53
229
+ msgid ""
230
+ "Which user role is allowed to access the backend of this blog? "
231
+ "Administrators will always have access."
232
+ msgstr ""
233
+
234
+ #: views/settings.php:57
235
+ msgid "Frontend Role"
236
+ msgstr "Rola front-end"
237
+
238
+ #: views/settings.php:69
239
+ msgid ""
240
+ "Which user role is allowed to access the frontend of this blog? "
241
+ "Administrators will always have access."
242
+ msgstr ""
243
+
244
+ #: views/settings.php:73
245
+ msgid "Robots Meta Tag"
246
+ msgstr "Metatag Robots"
247
+
248
+ #: views/settings.php:79
249
+ msgid ""
250
+ "The robots meta tag lets you use a granular, page-specific approach to "
251
+ "control how an individual page should be indexed and served to users in "
252
+ "search results."
253
+ msgstr ""
254
+ "Znacznik meta robots pozwala ci sprecyzować, jak poszczególne strony powinny "
255
+ "być indeksowane i widoczne dla użytkowników w wynikach wyszukiwarkek "
256
+ "internetowych."
257
+
258
+ #: views/settings.php:83
259
+ msgid "Redirection"
260
+ msgstr "Przekierowanie"
261
+
262
+ #: views/settings.php:86
263
+ msgid ""
264
+ "If you want to redirect a user (with no access to Dashboard/Backend) to a "
265
+ "URL (different from WordPress Dashboard URL) after login, then define a URL "
266
+ "(incl. http://)"
267
+ msgstr ""
268
+
269
+ #: views/settings.php:90
270
+ msgid "Exclude"
271
+ msgstr "Wyklucz"
272
+
273
+ #: views/settings.php:97
274
+ msgid ""
275
+ "Exclude feed, pages, archives or IPs from maintenance mode. Add one slug / "
276
+ "IP per line!"
277
+ msgstr ""
278
+ "Zezwól na dostęp podczas trybu konserwacji do kanałów internetowych, stron, "
279
+ "archiwów lub adresów IP. Podaj jeden wpis / IP na linię!"
280
+
281
+ #: views/settings.php:101
282
+ msgid "Notice"
283
+ msgstr "Powiadomienie"
284
+
285
+ #: views/settings.php:107
286
+ msgid "Do you want to see notices when maintenance mode is activated?"
287
+ msgstr "Chcesz widzieć powiadomienia podczas aktywnego trybu konserwacji?"
288
+
289
+ #: views/settings.php:111
290
+ msgid "Dashboard link"
291
+ msgstr "Link do kokpitu"
292
+
293
+ #: views/settings.php:117
294
+ msgid ""
295
+ "Do you want to add a link to the dashboard on your maintenance mode page?"
296
+ msgstr "Chcesz dodać link do kokpitu na stronie trybu konserwacyjnego?"
297
+
298
+ #: views/settings.php:125 views/settings.php:228 views/settings.php:432
299
+ msgid "Save settings"
300
+ msgstr "Zapisz ustawienia"
301
+
302
+ #: views/settings.php:126 views/settings.php:229 views/settings.php:433
303
+ msgid "Reset settings"
304
+ msgstr "Zresetuj ustawienia"
305
+
306
+ #: views/settings.php:131
307
+ msgid "Content"
308
+ msgstr "Zawartość"
309
+
310
+ #: views/settings.php:136
311
+ msgid "Title (HTML tag)"
312
+ msgstr "Tytuł (tag HTML)"
313
+
314
+ #: views/settings.php:142
315
+ msgid "Heading"
316
+ msgstr "Nagłówek"
317
+
318
+ #: views/settings.php:149 views/settings.php:284
319
+ msgid "Text"
320
+ msgstr "Tekst"
321
+
322
+ #: views/settings.php:169
323
+ msgid "Background"
324
+ msgstr "Tło"
325
+
326
+ #: views/settings.php:174
327
+ msgid "Choose type"
328
+ msgstr "Wybierz rodzaj"
329
+
330
+ #: views/settings.php:177
331
+ msgid "Custom color"
332
+ msgstr "Własny kolor"
333
+
334
+ #: views/settings.php:178
335
+ msgid "Uploaded background"
336
+ msgstr "Przesłane tło"
337
+
338
+ #: views/settings.php:179
339
+ msgid "Predefined background"
340
+ msgstr "Uprzednio zdefiniowane tło"
341
+
342
+ #: views/settings.php:184
343
+ msgid "Choose color"
344
+ msgstr "Wybierz kolor"
345
+
346
+ #: views/settings.php:190
347
+ msgid "Upload background"
348
+ msgstr "Prześlij tło"
349
+
350
+ #: views/settings.php:194
351
+ msgid "Backgrounds should have 1920x1280 px size."
352
+ msgstr "Tło powinno mieć rozmiar 1920x1280 px."
353
+
354
+ #: views/settings.php:199
355
+ msgid "Choose background"
356
+ msgstr "Wybierz tło"
357
+
358
+ #: views/settings.php:201
359
+ #, php-format
360
+ msgid "source <a href=\"%s\" target=\"_blank\">Free Photos</a>"
361
+ msgstr ""
362
+
363
+ #: views/settings.php:234
364
+ msgid "Countdown"
365
+ msgstr "Odliczanie"
366
+
367
+ #: views/settings.php:239
368
+ msgid "Show countdown?"
369
+ msgstr "Pokazać odliczanie?"
370
+
371
+ #: views/settings.php:248
372
+ msgid "Start date"
373
+ msgstr "Początkowa data"
374
+
375
+ #: views/settings.php:254
376
+ msgid "Countdown (remaining time)"
377
+ msgstr "Odliczanie (pozostały czas)"
378
+
379
+ #: views/settings.php:256
380
+ msgid "Days"
381
+ msgstr "Dni"
382
+
383
+ #: views/settings.php:257
384
+ msgid "Hours"
385
+ msgstr "Godzin"
386
+
387
+ #: views/settings.php:258
388
+ msgid "Minutes"
389
+ msgstr "Minut"
390
+
391
+ #: views/settings.php:262
392
+ msgid "Color"
393
+ msgstr "Kolor"
394
+
395
+ #: views/settings.php:275
396
+ msgid "Show subscribe?"
397
+ msgstr "Umożliwić subskrypcję?"
398
+
399
+ #: views/settings.php:291
400
+ msgid "Stats"
401
+ msgstr "Statystyki"
402
+
403
+ #: views/settings.php:300
404
+ msgid "Export as CSV"
405
+ msgstr "Eksportuj jako CSV"
406
+
407
+ #: views/settings.php:301
408
+ msgid "Empty subscribers list"
409
+ msgstr ""
410
+
411
+ #: views/settings.php:308
412
+ msgid "Social Networks"
413
+ msgstr "Serwisy społecznościowe"
414
+
415
+ #: views/settings.php:313
416
+ msgid "Show social networks?"
417
+ msgstr "Pokazać serwisy społecznościowe?"
418
+
419
+ #: views/settings.php:322
420
+ msgid "Links target?"
421
+ msgstr "Cel linków?"
422
+
423
+ #: views/settings.php:325
424
+ msgid "New page"
425
+ msgstr "Nowa karta"
426
+
427
+ #: views/settings.php:326
428
+ msgid "Same page"
429
+ msgstr "Ta sama karta"
430
+
431
+ #: views/settings.php:328
432
+ msgid "Choose how the links will open."
433
+ msgstr "Wybierz, w jakim miejscu powinny zostać otwierane linki."
434
+
435
+ #: views/settings.php:376
436
+ msgid "Contact"
437
+ msgstr "Kontakt"
438
+
439
+ #: views/settings.php:381
440
+ msgid "Show contact?"
441
+ msgstr "Pokazać kontakt?"
442
+
443
+ #: views/settings.php:390
444
+ msgid "Email address"
445
+ msgstr "Adres e-mail"
446
+
447
+ #: views/settings.php:396
448
+ msgid "Effects"
449
+ msgstr "Efekty"
450
+
451
+ #: views/settings.php:399
452
+ msgid "Move top - Move bottom"
453
+ msgstr "Wejście z góry - w dół"
454
+
455
+ #: views/settings.php:400
456
+ msgid "Zoom - Zoomed"
457
+ msgstr "Przybliżenie - przybliżone"
458
+
459
+ #: views/settings.php:401
460
+ msgid "Fold - Unfold"
461
+ msgstr "Obrót - obrócone"
462
+
463
+ #: views/settings.php:408
464
+ msgid "Google Analytics"
465
+ msgstr "Google Analytics"
466
+
467
+ #: views/settings.php:413
468
+ msgid "Use Google Analytics?"
469
+ msgstr "Używać Google Analytics?"
470
+
471
+ #: views/settings.php:422
472
+ msgid "Tracking code"
473
+ msgstr "Kod śledzenia"
474
+
475
+ #: views/sidebar.php:3
476
+ msgid "Plugin Info"
477
+ msgstr "Informacje o wtyczce"
478
+
479
+ #: views/sidebar.php:13
480
+ msgid "Author"
481
+ msgstr "Autor"
482
+
483
+ #: views/sidebar.php:14
484
+ msgid "Website"
485
+ msgstr "Strona internetowa"
486
+
487
+ #: views/sidebar.php:15
488
+ msgid "Twitter"
489
+ msgstr "Twitter"
490
+
491
+ #: views/sidebar.php:16
492
+ msgid "GitHub"
493
+ msgstr "GitHub"
494
+
495
+ #: views/sidebar.php:27
496
+ msgid "Other products"
497
+ msgstr ""
498
+
499
+ #: views/sidebar.php:44
500
+ msgid "Resources"
501
+ msgstr "Źródła"
502
+
503
+ #~ msgid ""
504
+ #~ "Adds a splash page to your site that lets visitors know your site is down "
505
+ #~ "for maintenance. It's perfect for a coming soon page."
506
+ #~ msgstr ""
507
+ #~ "Dodaje stronę informującą odwiedzających o konserwacji witryny. Idealna "
508
+ #~ "dla wkrótce otwieranych stron."
509
+
510
+ #~ msgid "You successfuly subscribed. Thanks!"
511
+ #~ msgstr "Pomyślnie zapisano do subskrypcji. Dzięki!"
512
+
513
+ #~ msgid "Which user role is allowed to access the backend of this blog?"
514
+ #~ msgstr "Jacy użytkownicy mają dostęp do panelu administracyjnego strony?"
515
+
516
+ #~ msgid "Which user role is allowed to access the frontend of this blog?"
517
+ #~ msgstr "Jacy użytkownicy mają dostęp do właściwej części strony?"
518
+
519
+ #~ msgid ""
520
+ #~ "If you want to redirect a user to a URL (which is not the WordPress "
521
+ #~ "dashboard) after login, then define a URL (incl. http://)"
522
+ #~ msgstr ""
523
+ #~ "Jeżeli chcesz przekierować użytkownika po zalogowaniu do adresu URL "
524
+ #~ "innego niż kokpit WordPress'a, podaj adres URL (wraz z http://)."
525
+
526
+ #~ msgid "source <a href=\"%\" target=\"_blank\">Free Photos</a>"
527
+ #~ msgstr "źródło <a href=\"%\" target=\"_blank\">Free Photos</a>"
528
+
529
+ #~ msgid "WordPress Themes"
530
+ #~ msgstr "Motywy WordPress"
languages/wp-maintenance-mode-pt_BR.mo CHANGED
Binary file
languages/wp-maintenance-mode-pt_BR.po CHANGED
@@ -1,535 +1,605 @@
1
- msgid ""
2
- msgstr ""
3
- "Project-Id-Version: WP Maintenance Mode v2.0.2\n"
4
- "Report-Msgid-Bugs-To: \n"
5
- "POT-Creation-Date: 2014-09-26 19:04+0200\n"
6
- "PO-Revision-Date: 2014-09-26 19:04+0200\n"
7
- "Last-Translator: Jônatas Araújo <jonatasaraujos@live.com>\n"
8
- "Language-Team: \n"
9
- "Language: pt_BR\n"
10
- "MIME-Version: 1.0\n"
11
- "Content-Type: text/plain; charset=UTF-8\n"
12
- "Content-Transfer-Encoding: 8bit\n"
13
- "Plural-Forms: nplurals=2; plural=n != 1;\n"
14
- "X-Generator: Poedit 1.6.7\n"
15
- "X-Poedit-SourceCharset: utf-8\n"
16
- "X-Poedit-KeywordsList: __;_e;__ngettext:1,2;_n:1,2;__ngettext_noop:1,2;"
17
- "_n_noop:1,2;_c,_nc:4c,1,2;_x:1,2c;_ex:1,2c;_nx:4c,1,2;_nx_noop:4c,1,2\n"
18
- "X-Poedit-Basepath: ../\n"
19
- "X-Textdomain-Support: yes\n"
20
- "X-Poedit-SearchPath-0: .\n"
21
-
22
- # @ wp-maintenance-mode
23
- #: includes/classes/wp-maintenance-mode-admin.php:154
24
- msgid "WP Maintenance Mode"
25
- msgstr "Manutenção Site"
26
-
27
- # @ wp-maintenance-mode
28
- #: includes/classes/wp-maintenance-mode-admin.php:358
29
- msgid "Settings"
30
- msgstr "Configurações"
31
-
32
- # @ wp-maintenance-mode
33
- #: includes/classes/wp-maintenance-mode-admin.php:377
34
- #, php-format
35
- msgid ""
36
- "The Maintenance Mode is <strong>active</strong>. Please don't forget to <a "
37
- "href=\"%s\">deactivate</a> as soon as you are done."
38
- msgstr ""
39
- "O modo de manutenção está <strong>ativo</strong>. Por favor, não se esqueça "
40
- "de<a href=\"%s\"> desativar</a> assim que estiver pronto."
41
-
42
- # @ wp-maintenance-mode
43
- #: includes/classes/wp-maintenance-mode.php:100
44
- #: includes/classes/wp-maintenance-mode.php:101
45
- msgid "Maintenance mode"
46
- msgstr "Modo manutenção"
47
-
48
- # @ wp-maintenance-mode
49
- #: includes/classes/wp-maintenance-mode.php:103
50
- msgid ""
51
- "<p>Sorry for the inconvenience.<br />Our website is currently undergoing "
52
- "scheduled maintenance.<br />Thank you for your understanding.</p>"
53
- msgstr ""
54
- "<p>Desculpe pela inconveniência.<br/>Nosso site está passando por manutenção "
55
- "programada.<br/>Obrigado por sua compreensão.</p>"
56
-
57
- # @ wp-maintenance-mode
58
- #: includes/classes/wp-maintenance-mode.php:121
59
- msgid "Notify me when it's ready"
60
- msgstr "Notifique-me quando estiver pronto"
61
-
62
- # @ wp-maintenance-mode
63
- #: includes/classes/wp-maintenance-mode.php:249
64
- #, php-format
65
- msgid ""
66
- "WP Maintenance Mode plugin was relaunched and you MUST revise <a href=\"%s"
67
- "\">settings</a>."
68
- msgstr ""
69
- "Plugin WP Modo de Manutenção foi relançada e você deve rever as <a href=\"%s"
70
- "\">configurações</a>."
71
-
72
- # @ wp-maintenance-mode
73
- #: includes/classes/wp-maintenance-mode.php:425
74
- #: includes/classes/wp-maintenance-mode.php:439
75
- msgid "Maintenance Mode"
76
- msgstr "Modo de Manutenção"
77
-
78
- # @ wp-maintenance-mode
79
- #: includes/classes/wp-maintenance-mode.php:630
80
- #: includes/classes/wp-maintenance-mode.php:658
81
- msgid "Please enter a valid email address."
82
- msgstr "Por favor insira um endereço de e-mail válido."
83
-
84
- # @ wp-maintenance-mode
85
- #: includes/classes/wp-maintenance-mode.php:641
86
- msgid "You successfuly subscribed. Thanks!"
87
- msgstr "Você foi inscrito com sucesso. Obrigado!"
88
-
89
- # @ wp-maintenance-mode
90
- #: includes/classes/wp-maintenance-mode.php:654
91
- msgid "All fields required."
92
- msgstr "Todos os campos são obrigatórios."
93
-
94
- # @ wp-maintenance-mode
95
- #: includes/classes/wp-maintenance-mode.php:675
96
- msgid "Message via contact"
97
- msgstr "Mensagem via contato"
98
-
99
- # @ wp-maintenance-mode
100
- #: includes/classes/wp-maintenance-mode.php:679
101
- msgid "Your email was sent to the website administrator. Thanks!"
102
- msgstr "Seu e-mail foi enviado ao administrador do site. Obrigado!"
103
-
104
- #: views/loginform.php:8
105
- msgid "Login"
106
- msgstr ""
107
-
108
- # @ wp-maintenance-mode
109
- #: views/maintenance.php:41
110
- msgid "your e-mail..."
111
- msgstr "digite seu e-mail..."
112
-
113
- # @ wp-maintenance-mode
114
- #: views/maintenance.php:42 views/settings.php:260
115
- msgid "Subscribe"
116
- msgstr "Assinante"
117
-
118
- # @ wp-maintenance-mode
119
- #: views/maintenance.php:83 views/sidebar.php:7
120
- msgid "Name"
121
- msgstr "Nome"
122
-
123
- # @ wp-maintenance-mode
124
- #: views/maintenance.php:84
125
- msgid "E-mail"
126
- msgstr "E-mail"
127
-
128
- # @ wp-maintenance-mode
129
- #: views/maintenance.php:86
130
- msgid "Your message"
131
- msgstr "Sua mensagem"
132
-
133
- # @ wp-maintenance-mode
134
- #: views/maintenance.php:87
135
- msgid "Send"
136
- msgstr "Enviar"
137
-
138
- # @ wp-maintenance-mode
139
- #: views/maintenance.php:92
140
- msgid "Contact us"
141
- msgstr "Contato"
142
-
143
- #: views/maintenance.php:97
144
- msgid "Dashboard"
145
- msgstr ""
146
-
147
- # @ wp-maintenance-mode
148
- #: views/settings.php:6
149
- msgid "Settings saved."
150
- msgstr "Configurações salva."
151
-
152
- # @ wp-maintenance-mode
153
- #: views/settings.php:13
154
- msgid "General"
155
- msgstr "Geral"
156
-
157
- # @ wp-maintenance-mode
158
- #: views/settings.php:14
159
- msgid "Design"
160
- msgstr "Visual"
161
-
162
- # @ wp-maintenance-mode
163
- #: views/settings.php:15
164
- msgid "Modules"
165
- msgstr "Módulos"
166
-
167
- # @ wp-maintenance-mode
168
- #: views/settings.php:24
169
- msgid "Status"
170
- msgstr "Status"
171
-
172
- # @ wp-maintenance-mode
173
- #: views/settings.php:26
174
- msgid "Activated"
175
- msgstr "Ativado"
176
-
177
- # @ wp-maintenance-mode
178
- #: views/settings.php:27
179
- msgid "Deactivated"
180
- msgstr "Desativado"
181
-
182
- # @ wp-maintenance-mode
183
- #: views/settings.php:31
184
- msgid "Bypass for Search Bots"
185
- msgstr "Bypass para robôs de busca"
186
-
187
- # @ wp-maintenance-mode
188
- #: views/settings.php:34 views/settings.php:94 views/settings.php:104
189
- #: views/settings.php:232 views/settings.php:268 views/settings.php:305
190
- #: views/settings.php:373 views/settings.php:405
191
- msgid "Yes"
192
- msgstr "Sim"
193
-
194
- # @ wp-maintenance-mode
195
- #: views/settings.php:35 views/settings.php:95 views/settings.php:105
196
- #: views/settings.php:233 views/settings.php:269 views/settings.php:306
197
- #: views/settings.php:374 views/settings.php:406
198
- msgid "No"
199
- msgstr "Não"
200
-
201
- # @ wp-maintenance-mode
202
- #: views/settings.php:37
203
- msgid "Allow Search Bots to bypass maintenance mode?"
204
- msgstr "Deixe que os robôs para ignorar o modo de manutenção?"
205
-
206
- # @ wp-maintenance-mode
207
- #: views/settings.php:41
208
- msgid "Backend Role"
209
- msgstr ""
210
-
211
- # @ wp-maintenance-mode
212
- #: views/settings.php:48
213
- msgid "Which user role is allowed to access the backend of this blog?"
214
- msgstr ""
215
- "Qual o papel do usuário tem permissão para acessar o backend deste blog?"
216
-
217
- # @ wp-maintenance-mode
218
- #: views/settings.php:52
219
- msgid "Frontend Role"
220
- msgstr ""
221
-
222
- # @ wp-maintenance-mode
223
- #: views/settings.php:59
224
- msgid "Which user role is allowed to access the frontend of this blog?"
225
- msgstr ""
226
- "Qual o papel do usuário tem permissão para acessar a interface deste blog?"
227
-
228
- # @ wp-maintenance-mode
229
- #: views/settings.php:63
230
- msgid "Robots Meta Tag"
231
- msgstr "Meta Tag Robots "
232
-
233
- # @ wp-maintenance-mode
234
- #: views/settings.php:69
235
- msgid ""
236
- "The robots meta tag lets you use a granular, page-specific approach to "
237
- "control how an individual page should be indexed and served to users in "
238
- "search results."
239
- msgstr ""
240
- "A meta tag robots permite que você use um granular, abordagem específica "
241
- "páginas para controlar como uma página individual devem ser indexados e "
242
- "serviu para os usuários em resultados de pesquisa."
243
-
244
- # @ wp-maintenance-mode
245
- #: views/settings.php:73
246
- msgid "Redirection"
247
- msgstr "Redirecionamento"
248
-
249
- # @ wp-maintenance-mode
250
- #: views/settings.php:76
251
- msgid ""
252
- "If you want to redirect a user to a URL (which is not the WordPress "
253
- "dashboard) after login, then define a URL (incl. http://)"
254
- msgstr ""
255
- "Se você deseja redirecionar o usuário para uma URL (que não é o painel "
256
- "administrativo) após o login, em seguida, definir uma URL (incluindo "
257
- "http:. //)"
258
-
259
- # @ wp-maintenance-mode
260
- #: views/settings.php:80
261
- msgid "Exclude"
262
- msgstr "Excluir"
263
-
264
- # @ wp-maintenance-mode
265
- #: views/settings.php:87
266
- msgid ""
267
- "Exclude feed, pages, archives or IPs from maintenance mode. Add one slug / "
268
- "IP per line!"
269
- msgstr ""
270
- "Excluir alimentação, páginas, arquivos ou IPs a partir do modo de "
271
- "manutenção. Adicionar uma lesma / IP por linha!"
272
-
273
- # @ wp-maintenance-mode
274
- #: views/settings.php:91
275
- msgid "Notice"
276
- msgstr "Aviso"
277
-
278
- # @ wp-maintenance-mode
279
- #: views/settings.php:97
280
- msgid "Do you want to see notices when maintenance mode is activated?"
281
- msgstr "Você quer ver os avisos de quando o modo de manutenção está ativado?"
282
-
283
- #: views/settings.php:101
284
- msgid "Dashboard link"
285
- msgstr ""
286
-
287
- # @ wp-maintenance-mode
288
- #: views/settings.php:107
289
- msgid ""
290
- "Do you want to add a link to the dashboard on your maintenance mode page?"
291
- msgstr ""
292
-
293
- # @ wp-maintenance-mode
294
- #: views/settings.php:115 views/settings.php:218 views/settings.php:421
295
- msgid "Save settings"
296
- msgstr ""
297
-
298
- # @ wp-maintenance-mode
299
- #: views/settings.php:116 views/settings.php:219 views/settings.php:422
300
- msgid "Reset settings"
301
- msgstr ""
302
-
303
- # @ wp-maintenance-mode
304
- #: views/settings.php:121
305
- msgid "Content"
306
- msgstr "Conteúdo"
307
-
308
- # @ wp-maintenance-mode
309
- #: views/settings.php:126
310
- msgid "Title (HTML tag)"
311
- msgstr "Título (HTML Tag)"
312
-
313
- # @ wp-maintenance-mode
314
- #: views/settings.php:132
315
- msgid "Heading"
316
- msgstr "Título H1 da Página"
317
-
318
- # @ wp-maintenance-mode
319
- #: views/settings.php:139 views/settings.php:274
320
- msgid "Text"
321
- msgstr "Mensagem"
322
-
323
- # @ wp-maintenance-mode
324
- #: views/settings.php:159
325
- msgid "Background"
326
- msgstr "Fundo"
327
-
328
- # @ wp-maintenance-mode
329
- #: views/settings.php:164
330
- msgid "Choose type"
331
- msgstr "Escolha o tipo de"
332
-
333
- # @ wp-maintenance-mode
334
- #: views/settings.php:167
335
- msgid "Custom color"
336
- msgstr "Cor personalizada"
337
-
338
- # @ wp-maintenance-mode
339
- #: views/settings.php:168
340
- msgid "Uploaded background"
341
- msgstr "Enviar Imagem Fundo"
342
-
343
- # @ wp-maintenance-mode
344
- #: views/settings.php:169
345
- msgid "Predefined background"
346
- msgstr "Imagem Pré-definida"
347
-
348
- # @ wp-maintenance-mode
349
- #: views/settings.php:174
350
- msgid "Choose color"
351
- msgstr "Escolha cor"
352
-
353
- # @ wp-maintenance-mode
354
- #: views/settings.php:180
355
- msgid "Upload background"
356
- msgstr "Enviar Imagem de Fundo"
357
-
358
- # @ wp-maintenance-mode
359
- #: views/settings.php:184
360
- msgid "Backgrounds should have 1920x1280 px size."
361
- msgstr "A Imagem devem ter tamanho 1920x1280px."
362
-
363
- # @ wp-maintenance-mode
364
- #: views/settings.php:189
365
- msgid "Choose background"
366
- msgstr "Escolha o fundo"
367
-
368
- #: views/settings.php:191
369
- msgid "source <a href=\"%\" target=\"_blank\">Free Photos</a>"
370
- msgstr ""
371
-
372
- # @ wp-maintenance-mode
373
- #: views/settings.php:224
374
- msgid "Countdown"
375
- msgstr "Contagem Regressiva"
376
-
377
- # @ wp-maintenance-mode
378
- #: views/settings.php:229
379
- msgid "Show countdown?"
380
- msgstr "Mostrar contagem regressiva?"
381
-
382
- # @ wp-maintenance-mode
383
- #: views/settings.php:238
384
- msgid "Start date"
385
- msgstr "Data Inicial"
386
-
387
- # @ wp-maintenance-mode
388
- #: views/settings.php:244
389
- msgid "Countdown (remaining time)"
390
- msgstr "Contagem regressiva (tempo restante)"
391
-
392
- # @ wp-maintenance-mode
393
- #: views/settings.php:246
394
- msgid "Days"
395
- msgstr "Dias"
396
-
397
- # @ wp-maintenance-mode
398
- #: views/settings.php:247
399
- msgid "Hours"
400
- msgstr "Horas"
401
-
402
- # @ wp-maintenance-mode
403
- #: views/settings.php:248
404
- msgid "Minutes"
405
- msgstr "Minutos"
406
-
407
- # @ wp-maintenance-mode
408
- #: views/settings.php:252
409
- msgid "Color"
410
- msgstr "Cor"
411
-
412
- # @ wp-maintenance-mode
413
- #: views/settings.php:265
414
- msgid "Show subscribe?"
415
- msgstr "Mostrar Assinatura?"
416
-
417
- # @ wp-maintenance-mode
418
- #: views/settings.php:281
419
- msgid "Stats"
420
- msgstr "Estatísticas"
421
-
422
- # @ wp-maintenance-mode
423
- #: views/settings.php:285
424
- #, php-format
425
- msgid "You have %d subscriber(s)"
426
- msgstr "Você tem %d assinante(s)"
427
-
428
- # @ wp-maintenance-mode
429
- #: views/settings.php:290
430
- msgid "Export as CSV"
431
- msgstr "Exportar para CSV"
432
-
433
- # @ wp-maintenance-mode
434
- #: views/settings.php:297
435
- msgid "Social Networks"
436
- msgstr "Rede Sociais"
437
-
438
- # @ wp-maintenance-mode
439
- #: views/settings.php:302
440
- msgid "Show social networks?"
441
- msgstr "Mostrar Rede Sociais?"
442
-
443
- #: views/settings.php:311
444
- msgid "Links target?"
445
- msgstr ""
446
-
447
- #: views/settings.php:314
448
- msgid "New page"
449
- msgstr ""
450
-
451
- #: views/settings.php:315
452
- msgid "Same page"
453
- msgstr ""
454
-
455
- #: views/settings.php:317
456
- msgid "Choose how the links will open."
457
- msgstr ""
458
-
459
- # @ wp-maintenance-mode
460
- #: views/settings.php:365
461
- msgid "Contact"
462
- msgstr "Contato"
463
-
464
- # @ wp-maintenance-mode
465
- #: views/settings.php:370
466
- msgid "Show contact?"
467
- msgstr "Mostrar Contato?"
468
-
469
- # @ wp-maintenance-mode
470
- #: views/settings.php:379
471
- msgid "Email address"
472
- msgstr "Endereço de E-mail"
473
-
474
- # @ wp-maintenance-mode
475
- #: views/settings.php:385
476
- msgid "Effects"
477
- msgstr "Efeitos"
478
-
479
- #: views/settings.php:388
480
- msgid "Move top - Move bottom"
481
- msgstr ""
482
-
483
- #: views/settings.php:389
484
- msgid "Zoom - Zoomed"
485
- msgstr ""
486
-
487
- #: views/settings.php:390
488
- msgid "Fold - Unfold"
489
- msgstr ""
490
-
491
- #: views/settings.php:397
492
- msgid "Google Analytics"
493
- msgstr ""
494
-
495
- #: views/settings.php:402
496
- msgid "Use Google Analytics?"
497
- msgstr ""
498
-
499
- #: views/settings.php:411
500
- msgid "Tracking code"
501
- msgstr ""
502
-
503
- # @ wp-maintenance-mode
504
- #: views/sidebar.php:3
505
- msgid "Plugin Info"
506
- msgstr "Informações do Plugin"
507
-
508
- # @ wp-maintenance-mode
509
- #: views/sidebar.php:13
510
- msgid "Author"
511
- msgstr "Autor"
512
-
513
- # @ wp-maintenance-mode
514
- #: views/sidebar.php:14
515
- msgid "Website"
516
- msgstr "Site"
517
-
518
- # @ wp-maintenance-mode
519
- #: views/sidebar.php:15
520
- msgid "Twitter"
521
- msgstr "Twitter"
522
-
523
- # @ wp-maintenance-mode
524
- #: views/sidebar.php:16
525
- msgid "GitHub"
526
- msgstr "GitHub"
527
-
528
- #: views/sidebar.php:22
529
- msgid "WordPress Themes"
530
- msgstr ""
531
-
532
- # @ wp-maintenance-mode
533
- #: views/sidebar.php:31
534
- msgid "Resources"
535
- msgstr "Recursos"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ msgid ""
2
+ msgstr ""
3
+ "Project-Id-Version: WP Maintenance Mode v2.0.4\n"
4
+ "Report-Msgid-Bugs-To: \n"
5
+ "POT-Creation-Date: 2016-06-17 03:27+0300\n"
6
+ "PO-Revision-Date: 2016-06-17 03:27+0300\n"
7
+ "Last-Translator: Jônatas Araújo <jonatasaraujos@live.com>\n"
8
+ "Language-Team: \n"
9
+ "Language: pt_BR\n"
10
+ "MIME-Version: 1.0\n"
11
+ "Content-Type: text/plain; charset=UTF-8\n"
12
+ "Content-Transfer-Encoding: 8bit\n"
13
+ "Plural-Forms: nplurals=2; plural=(n > 1);\n"
14
+ "X-Generator: Poedit 1.8.8\n"
15
+ "X-Poedit-SourceCharset: UTF-8\n"
16
+ "X-Poedit-KeywordsList: __;_e;__ngettext:1,2;_n:1,2;__ngettext_noop:1,2;"
17
+ "_n_noop:1,2;_c,_nc:4c,1,2;_x:1,2c;_ex:1,2c;_nx:4c,1,2;_nx_noop:4c,1,2;"
18
+ "esc_attr__;esc_attr_e;esc_attr_x:1,2c;esc_html__;esc_html_e;esc_html_x:1,2c\n"
19
+ "X-Poedit-Basepath: ..\n"
20
+ "X-Textdomain-Support: yes\n"
21
+ "X-Poedit-SearchPath-0: .\n"
22
+ "X-Poedit-SearchPath-1: views\n"
23
+ "X-Poedit-SearchPath-2: includes/classes\n"
24
+
25
+ #: includes/classes/wp-maintenance-mode-admin.php:121
26
+ #: includes/classes/wp-maintenance-mode-admin.php:159
27
+ #: includes/classes/wp-maintenance-mode-admin.php:181
28
+ msgid "You do not have access to this resource."
29
+ msgstr ""
30
+
31
+ # @ wp-maintenance-mode
32
+ #: includes/classes/wp-maintenance-mode-admin.php:165 views/settings.php:295
33
+ #, php-format
34
+ msgid "You have %d subscriber(s)"
35
+ msgstr "Você tem %d assinante(s)"
36
+
37
+ #: includes/classes/wp-maintenance-mode-admin.php:186
38
+ msgid "The tab slug must not be empty."
39
+ msgstr ""
40
+
41
+ #: includes/classes/wp-maintenance-mode-admin.php:191
42
+ msgid "The tab slug must exist."
43
+ msgstr ""
44
+
45
+ # @ wp-maintenance-mode
46
+ #: includes/classes/wp-maintenance-mode-admin.php:211
47
+ msgid "WP Maintenance Mode"
48
+ msgstr "Manutenção Site"
49
+
50
+ # @ wp-maintenance-mode
51
+ #: includes/classes/wp-maintenance-mode-admin.php:425
52
+ msgid "Settings"
53
+ msgstr "Configurações"
54
+
55
+ # @ wp-maintenance-mode
56
+ #: includes/classes/wp-maintenance-mode-admin.php:444
57
+ #, php-format
58
+ msgid ""
59
+ "The Maintenance Mode is <strong>active</strong>. Please don't forget to <a "
60
+ "href=\"%s\">deactivate</a> as soon as you are done."
61
+ msgstr ""
62
+ "O modo de manutenção está <strong>ativo</strong>. Por favor, não se esqueça "
63
+ "de<a href=\"%s\"> desativar</a> assim que estiver pronto."
64
+
65
+ #: includes/classes/wp-maintenance-mode-admin.php:481
66
+ msgid "Notice key cannot be empty."
67
+ msgstr ""
68
+
69
+ # @ wp-maintenance-mode
70
+ #: includes/classes/wp-maintenance-mode.php:103
71
+ #: includes/classes/wp-maintenance-mode.php:104
72
+ msgid "Maintenance mode"
73
+ msgstr "Modo manutenção"
74
+
75
+ # @ wp-maintenance-mode
76
+ #: includes/classes/wp-maintenance-mode.php:106
77
+ msgid ""
78
+ "<p>Sorry for the inconvenience.<br />Our website is currently undergoing "
79
+ "scheduled maintenance.<br />Thank you for your understanding.</p>"
80
+ msgstr ""
81
+ "<p>Desculpe pela inconveniência.<br/>Nosso site está passando por manutenção "
82
+ "programada.<br/>Obrigado por sua compreensão.</p>"
83
+
84
+ # @ wp-maintenance-mode
85
+ #: includes/classes/wp-maintenance-mode.php:124
86
+ msgid "Notify me when it's ready"
87
+ msgstr "Notifique-me quando estiver pronto"
88
+
89
+ # @ wp-maintenance-mode
90
+ #: includes/classes/wp-maintenance-mode.php:259
91
+ #, php-format
92
+ msgid ""
93
+ "WP Maintenance Mode plugin was relaunched and you MUST revise <a href=\"%s"
94
+ "\">settings</a>."
95
+ msgstr ""
96
+ "Plugin WP Modo de Manutenção foi relançada e você deve rever as <a href=\"%s"
97
+ "\">configurações</a>."
98
+
99
+ # @ wp-maintenance-mode
100
+ #: includes/classes/wp-maintenance-mode.php:449
101
+ #: includes/classes/wp-maintenance-mode.php:463
102
+ msgid "Maintenance Mode"
103
+ msgstr "Modo de Manutenção"
104
+
105
+ # @ wp-maintenance-mode
106
+ #: includes/classes/wp-maintenance-mode.php:687
107
+ #: includes/classes/wp-maintenance-mode.php:721 views/maintenance.php:85
108
+ msgid "Please enter a valid email address."
109
+ msgstr "Por favor insira um endereço de e-mail válido."
110
+
111
+ #: includes/classes/wp-maintenance-mode.php:699
112
+ msgid "You successfully subscribed. Thanks!"
113
+ msgstr ""
114
+
115
+ # @ wp-maintenance-mode
116
+ #: includes/classes/wp-maintenance-mode.php:717
117
+ msgid "All fields required."
118
+ msgstr "Todos os campos são obrigatórios."
119
+
120
+ # @ wp-maintenance-mode
121
+ #: includes/classes/wp-maintenance-mode.php:726
122
+ msgid "Message via contact"
123
+ msgstr "Mensagem via contato"
124
+
125
+ # @ wp-maintenance-mode
126
+ #: includes/classes/wp-maintenance-mode.php:738
127
+ msgid "Your email was sent to the website administrator. Thanks!"
128
+ msgstr "Seu e-mail foi enviado ao administrador do site. Obrigado!"
129
+
130
+ #: views/contact.php:34
131
+ #, php-format
132
+ msgid "You have been contacted via %s."
133
+ msgstr ""
134
+
135
+ #: views/contact.php:50
136
+ msgid "Name:"
137
+ msgstr ""
138
+
139
+ #: views/contact.php:62
140
+ msgid "Email:"
141
+ msgstr ""
142
+
143
+ #: views/contact.php:74
144
+ msgid "Content:"
145
+ msgstr ""
146
+
147
+ #: views/loginform.php:8
148
+ msgid "Login"
149
+ msgstr ""
150
+
151
+ # @ wp-maintenance-mode
152
+ #: views/maintenance.php:42
153
+ msgid "your e-mail..."
154
+ msgstr "digite seu e-mail..."
155
+
156
+ # @ wp-maintenance-mode
157
+ #: views/maintenance.php:43 views/settings.php:270
158
+ msgid "Subscribe"
159
+ msgstr "Assinante"
160
+
161
+ # @ wp-maintenance-mode
162
+ #: views/maintenance.php:84 views/sidebar.php:7
163
+ msgid "Name"
164
+ msgstr "Nome"
165
+
166
+ #: views/maintenance.php:84 views/maintenance.php:85 views/maintenance.php:87
167
+ msgid "This field is required."
168
+ msgstr ""
169
+
170
+ # @ wp-maintenance-mode
171
+ #: views/maintenance.php:85
172
+ msgid "E-mail"
173
+ msgstr "E-mail"
174
+
175
+ # @ wp-maintenance-mode
176
+ #: views/maintenance.php:87
177
+ msgid "Your message"
178
+ msgstr "Sua mensagem"
179
+
180
+ # @ wp-maintenance-mode
181
+ #: views/maintenance.php:88
182
+ msgid "Send"
183
+ msgstr "Enviar"
184
+
185
+ # @ wp-maintenance-mode
186
+ #: views/maintenance.php:93
187
+ msgid "Contact us"
188
+ msgstr "Contato"
189
+
190
+ #: views/maintenance.php:98
191
+ msgid "Dashboard"
192
+ msgstr ""
193
+
194
+ # @ wp-maintenance-mode
195
+ #: views/settings.php:6
196
+ msgid "Settings saved."
197
+ msgstr "Configurações salva."
198
+
199
+ # @ wp-maintenance-mode
200
+ #: views/settings.php:13
201
+ msgid "General"
202
+ msgstr "Geral"
203
+
204
+ # @ wp-maintenance-mode
205
+ #: views/settings.php:14
206
+ msgid "Design"
207
+ msgstr "Visual"
208
+
209
+ # @ wp-maintenance-mode
210
+ #: views/settings.php:15
211
+ msgid "Modules"
212
+ msgstr "Módulos"
213
+
214
+ # @ wp-maintenance-mode
215
+ #: views/settings.php:24
216
+ msgid "Status"
217
+ msgstr "Status"
218
+
219
+ # @ wp-maintenance-mode
220
+ #: views/settings.php:26
221
+ msgid "Activated"
222
+ msgstr "Ativado"
223
+
224
+ # @ wp-maintenance-mode
225
+ #: views/settings.php:27
226
+ msgid "Deactivated"
227
+ msgstr "Desativado"
228
+
229
+ # @ wp-maintenance-mode
230
+ #: views/settings.php:31
231
+ msgid "Bypass for Search Bots"
232
+ msgstr "Bypass para robôs de busca"
233
+
234
+ # @ wp-maintenance-mode
235
+ #: views/settings.php:34 views/settings.php:104 views/settings.php:114
236
+ #: views/settings.php:242 views/settings.php:278 views/settings.php:316
237
+ #: views/settings.php:384 views/settings.php:416
238
+ msgid "Yes"
239
+ msgstr "Sim"
240
+
241
+ # @ wp-maintenance-mode
242
+ #: views/settings.php:35 views/settings.php:105 views/settings.php:115
243
+ #: views/settings.php:243 views/settings.php:279 views/settings.php:317
244
+ #: views/settings.php:385 views/settings.php:417
245
+ msgid "No"
246
+ msgstr "Não"
247
+
248
+ # @ wp-maintenance-mode
249
+ #: views/settings.php:37
250
+ msgid "Allow Search Bots to bypass maintenance mode?"
251
+ msgstr "Deixe que os robôs para ignorar o modo de manutenção?"
252
+
253
+ # @ wp-maintenance-mode
254
+ #: views/settings.php:41
255
+ msgid "Backend Role"
256
+ msgstr ""
257
+
258
+ #: views/settings.php:43 views/settings.php:59
259
+ msgid "Select role(s)"
260
+ msgstr ""
261
+
262
+ #: views/settings.php:53
263
+ msgid ""
264
+ "Which user role is allowed to access the backend of this blog? "
265
+ "Administrators will always have access."
266
+ msgstr ""
267
+
268
+ # @ wp-maintenance-mode
269
+ #: views/settings.php:57
270
+ msgid "Frontend Role"
271
+ msgstr ""
272
+
273
+ #: views/settings.php:69
274
+ msgid ""
275
+ "Which user role is allowed to access the frontend of this blog? "
276
+ "Administrators will always have access."
277
+ msgstr ""
278
+
279
+ # @ wp-maintenance-mode
280
+ #: views/settings.php:73
281
+ msgid "Robots Meta Tag"
282
+ msgstr "Meta Tag Robots "
283
+
284
+ # @ wp-maintenance-mode
285
+ #: views/settings.php:79
286
+ msgid ""
287
+ "The robots meta tag lets you use a granular, page-specific approach to "
288
+ "control how an individual page should be indexed and served to users in "
289
+ "search results."
290
+ msgstr ""
291
+ "A meta tag robots permite que você use um granular, abordagem específica "
292
+ "páginas para controlar como uma página individual devem ser indexados e "
293
+ "serviu para os usuários em resultados de pesquisa."
294
+
295
+ # @ wp-maintenance-mode
296
+ #: views/settings.php:83
297
+ msgid "Redirection"
298
+ msgstr "Redirecionamento"
299
+
300
+ #: views/settings.php:86
301
+ msgid ""
302
+ "If you want to redirect a user (with no access to Dashboard/Backend) to a "
303
+ "URL (different from WordPress Dashboard URL) after login, then define a URL "
304
+ "(incl. http://)"
305
+ msgstr ""
306
+
307
+ # @ wp-maintenance-mode
308
+ #: views/settings.php:90
309
+ msgid "Exclude"
310
+ msgstr "Excluir"
311
+
312
+ # @ wp-maintenance-mode
313
+ #: views/settings.php:97
314
+ msgid ""
315
+ "Exclude feed, pages, archives or IPs from maintenance mode. Add one slug / "
316
+ "IP per line!"
317
+ msgstr ""
318
+ "Excluir alimentação, páginas, arquivos ou IPs a partir do modo de "
319
+ "manutenção. Adicionar uma lesma / IP por linha!"
320
+
321
+ # @ wp-maintenance-mode
322
+ #: views/settings.php:101
323
+ msgid "Notice"
324
+ msgstr "Aviso"
325
+
326
+ # @ wp-maintenance-mode
327
+ #: views/settings.php:107
328
+ msgid "Do you want to see notices when maintenance mode is activated?"
329
+ msgstr "Você quer ver os avisos de quando o modo de manutenção está ativado?"
330
+
331
+ #: views/settings.php:111
332
+ msgid "Dashboard link"
333
+ msgstr ""
334
+
335
+ # @ wp-maintenance-mode
336
+ #: views/settings.php:117
337
+ msgid ""
338
+ "Do you want to add a link to the dashboard on your maintenance mode page?"
339
+ msgstr ""
340
+
341
+ # @ wp-maintenance-mode
342
+ #: views/settings.php:125 views/settings.php:228 views/settings.php:432
343
+ msgid "Save settings"
344
+ msgstr ""
345
+
346
+ # @ wp-maintenance-mode
347
+ #: views/settings.php:126 views/settings.php:229 views/settings.php:433
348
+ msgid "Reset settings"
349
+ msgstr ""
350
+
351
+ # @ wp-maintenance-mode
352
+ #: views/settings.php:131
353
+ msgid "Content"
354
+ msgstr "Conteúdo"
355
+
356
+ # @ wp-maintenance-mode
357
+ #: views/settings.php:136
358
+ msgid "Title (HTML tag)"
359
+ msgstr "Título (HTML Tag)"
360
+
361
+ # @ wp-maintenance-mode
362
+ #: views/settings.php:142
363
+ msgid "Heading"
364
+ msgstr "Título H1 da Página"
365
+
366
+ # @ wp-maintenance-mode
367
+ #: views/settings.php:149 views/settings.php:284
368
+ msgid "Text"
369
+ msgstr "Mensagem"
370
+
371
+ # @ wp-maintenance-mode
372
+ #: views/settings.php:169
373
+ msgid "Background"
374
+ msgstr "Fundo"
375
+
376
+ # @ wp-maintenance-mode
377
+ #: views/settings.php:174
378
+ msgid "Choose type"
379
+ msgstr "Escolha o tipo de"
380
+
381
+ # @ wp-maintenance-mode
382
+ #: views/settings.php:177
383
+ msgid "Custom color"
384
+ msgstr "Cor personalizada"
385
+
386
+ # @ wp-maintenance-mode
387
+ #: views/settings.php:178
388
+ msgid "Uploaded background"
389
+ msgstr "Enviar Imagem Fundo"
390
+
391
+ # @ wp-maintenance-mode
392
+ #: views/settings.php:179
393
+ msgid "Predefined background"
394
+ msgstr "Imagem Pré-definida"
395
+
396
+ # @ wp-maintenance-mode
397
+ #: views/settings.php:184
398
+ msgid "Choose color"
399
+ msgstr "Escolha cor"
400
+
401
+ # @ wp-maintenance-mode
402
+ #: views/settings.php:190
403
+ msgid "Upload background"
404
+ msgstr "Enviar Imagem de Fundo"
405
+
406
+ # @ wp-maintenance-mode
407
+ #: views/settings.php:194
408
+ msgid "Backgrounds should have 1920x1280 px size."
409
+ msgstr "A Imagem devem ter tamanho 1920x1280px."
410
+
411
+ # @ wp-maintenance-mode
412
+ #: views/settings.php:199
413
+ msgid "Choose background"
414
+ msgstr "Escolha o fundo"
415
+
416
+ #: views/settings.php:201
417
+ #, php-format
418
+ msgid "source <a href=\"%s\" target=\"_blank\">Free Photos</a>"
419
+ msgstr ""
420
+
421
+ # @ wp-maintenance-mode
422
+ #: views/settings.php:234
423
+ msgid "Countdown"
424
+ msgstr "Contagem Regressiva"
425
+
426
+ # @ wp-maintenance-mode
427
+ #: views/settings.php:239
428
+ msgid "Show countdown?"
429
+ msgstr "Mostrar contagem regressiva?"
430
+
431
+ # @ wp-maintenance-mode
432
+ #: views/settings.php:248
433
+ msgid "Start date"
434
+ msgstr "Data Inicial"
435
+
436
+ # @ wp-maintenance-mode
437
+ #: views/settings.php:254
438
+ msgid "Countdown (remaining time)"
439
+ msgstr "Contagem regressiva (tempo restante)"
440
+
441
+ # @ wp-maintenance-mode
442
+ #: views/settings.php:256
443
+ msgid "Days"
444
+ msgstr "Dias"
445
+
446
+ # @ wp-maintenance-mode
447
+ #: views/settings.php:257
448
+ msgid "Hours"
449
+ msgstr "Horas"
450
+
451
+ # @ wp-maintenance-mode
452
+ #: views/settings.php:258
453
+ msgid "Minutes"
454
+ msgstr "Minutos"
455
+
456
+ # @ wp-maintenance-mode
457
+ #: views/settings.php:262
458
+ msgid "Color"
459
+ msgstr "Cor"
460
+
461
+ # @ wp-maintenance-mode
462
+ #: views/settings.php:275
463
+ msgid "Show subscribe?"
464
+ msgstr "Mostrar Assinatura?"
465
+
466
+ # @ wp-maintenance-mode
467
+ #: views/settings.php:291
468
+ msgid "Stats"
469
+ msgstr "Estatísticas"
470
+
471
+ # @ wp-maintenance-mode
472
+ #: views/settings.php:300
473
+ msgid "Export as CSV"
474
+ msgstr "Exportar para CSV"
475
+
476
+ #: views/settings.php:301
477
+ msgid "Empty subscribers list"
478
+ msgstr ""
479
+
480
+ # @ wp-maintenance-mode
481
+ #: views/settings.php:308
482
+ msgid "Social Networks"
483
+ msgstr "Rede Sociais"
484
+
485
+ # @ wp-maintenance-mode
486
+ #: views/settings.php:313
487
+ msgid "Show social networks?"
488
+ msgstr "Mostrar Rede Sociais?"
489
+
490
+ #: views/settings.php:322
491
+ msgid "Links target?"
492
+ msgstr ""
493
+
494
+ #: views/settings.php:325
495
+ msgid "New page"
496
+ msgstr ""
497
+
498
+ #: views/settings.php:326
499
+ msgid "Same page"
500
+ msgstr ""
501
+
502
+ #: views/settings.php:328
503
+ msgid "Choose how the links will open."
504
+ msgstr ""
505
+
506
+ # @ wp-maintenance-mode
507
+ #: views/settings.php:376
508
+ msgid "Contact"
509
+ msgstr "Contato"
510
+
511
+ # @ wp-maintenance-mode
512
+ #: views/settings.php:381
513
+ msgid "Show contact?"
514
+ msgstr "Mostrar Contato?"
515
+
516
+ # @ wp-maintenance-mode
517
+ #: views/settings.php:390
518
+ msgid "Email address"
519
+ msgstr "Endereço de E-mail"
520
+
521
+ # @ wp-maintenance-mode
522
+ #: views/settings.php:396
523
+ msgid "Effects"
524
+ msgstr "Efeitos"
525
+
526
+ #: views/settings.php:399
527
+ msgid "Move top - Move bottom"
528
+ msgstr ""
529
+
530
+ #: views/settings.php:400
531
+ msgid "Zoom - Zoomed"
532
+ msgstr ""
533
+
534
+ #: views/settings.php:401
535
+ msgid "Fold - Unfold"
536
+ msgstr ""
537
+
538
+ #: views/settings.php:408
539
+ msgid "Google Analytics"
540
+ msgstr ""
541
+
542
+ #: views/settings.php:413
543
+ msgid "Use Google Analytics?"
544
+ msgstr ""
545
+
546
+ #: views/settings.php:422
547
+ msgid "Tracking code"
548
+ msgstr ""
549
+
550
+ # @ wp-maintenance-mode
551
+ #: views/sidebar.php:3
552
+ msgid "Plugin Info"
553
+ msgstr "Informações do Plugin"
554
+
555
+ # @ wp-maintenance-mode
556
+ #: views/sidebar.php:13
557
+ msgid "Author"
558
+ msgstr "Autor"
559
+
560
+ # @ wp-maintenance-mode
561
+ #: views/sidebar.php:14
562
+ msgid "Website"
563
+ msgstr "Site"
564
+
565
+ # @ wp-maintenance-mode
566
+ #: views/sidebar.php:15
567
+ msgid "Twitter"
568
+ msgstr "Twitter"
569
+
570
+ # @ wp-maintenance-mode
571
+ #: views/sidebar.php:16
572
+ msgid "GitHub"
573
+ msgstr "GitHub"
574
+
575
+ #: views/sidebar.php:27
576
+ msgid "Other products"
577
+ msgstr ""
578
+
579
+ # @ wp-maintenance-mode
580
+ #: views/sidebar.php:44
581
+ msgid "Resources"
582
+ msgstr "Recursos"
583
+
584
+ # @ wp-maintenance-mode
585
+ #~ msgid "You successfuly subscribed. Thanks!"
586
+ #~ msgstr "Você foi inscrito com sucesso. Obrigado!"
587
+
588
+ # @ wp-maintenance-mode
589
+ #~ msgid "Which user role is allowed to access the backend of this blog?"
590
+ #~ msgstr ""
591
+ #~ "Qual o papel do usuário tem permissão para acessar o backend deste blog?"
592
+
593
+ # @ wp-maintenance-mode
594
+ #~ msgid "Which user role is allowed to access the frontend of this blog?"
595
+ #~ msgstr ""
596
+ #~ "Qual o papel do usuário tem permissão para acessar a interface deste blog?"
597
+
598
+ # @ wp-maintenance-mode
599
+ #~ msgid ""
600
+ #~ "If you want to redirect a user to a URL (which is not the WordPress "
601
+ #~ "dashboard) after login, then define a URL (incl. http://)"
602
+ #~ msgstr ""
603
+ #~ "Se você deseja redirecionar o usuário para uma URL (que não é o painel "
604
+ #~ "administrativo) após o login, em seguida, definir uma URL (incluindo "
605
+ #~ "http:. //)"
languages/wp-maintenance-mode-pt_PT.mo CHANGED
Binary file
languages/wp-maintenance-mode-pt_PT.po CHANGED
@@ -1,463 +1,543 @@
1
- msgid ""
2
- msgstr ""
3
- "Project-Id-Version: WP Maintenance Mode 2.0.3\n"
4
- "POT-Creation-Date: 2014-09-26 19:03+0200\n"
5
- "PO-Revision-Date: 2014-09-26 19:52-0000\n"
6
- "Last-Translator: Pedro Mendonça <ped.gaspar@gmail.com>\n"
7
- "Language-Team: Pedro Mendonça <ped.gaspar@gmail.com>\n"
8
- "Language: pt_PT\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.4\n"
13
- "X-Poedit-Basepath: ../\n"
14
- "Plural-Forms: nplurals=2; plural=(n != 1);\n"
15
- "X-Poedit-SourceCharset: UTF-8\n"
16
- "X-Poedit-KeywordsList: __;_e\n"
17
-
18
- #: includes/classes/wp-maintenance-mode-admin.php:154
19
- msgid "WP Maintenance Mode"
20
- msgstr "WP Maintenance Mode"
21
-
22
- #: includes/classes/wp-maintenance-mode-admin.php:358
23
- msgid "Settings"
24
- msgstr "Configurações"
25
-
26
- #: includes/classes/wp-maintenance-mode-admin.php:377
27
- #, php-format
28
- msgid ""
29
- "The Maintenance Mode is <strong>active</strong>. Please don't forget to <a "
30
- "href=\"%s\">deactivate</a> as soon as you are done."
31
- msgstr ""
32
- "O Modo de Manutenção está <strong>activo</strong>. Por favor não se esqueça "
33
- "de <a href=\"%s\">desactivar</a> assim que termine."
34
-
35
- #: includes/classes/wp-maintenance-mode.php:100
36
- #: includes/classes/wp-maintenance-mode.php:101
37
- msgid "Maintenance mode"
38
- msgstr "Modo de manutenção"
39
-
40
- #: includes/classes/wp-maintenance-mode.php:103
41
- msgid ""
42
- "<p>Sorry for the inconvenience.<br />Our website is currently undergoing "
43
- "scheduled maintenance.<br />Thank you for your understanding.</p>"
44
- msgstr ""
45
- "<p>Pedimos desculpa pela inconveniência.<br />O site está neste momento numa "
46
- "manutenção agendada.<br />Obrigado pela sua compreensão.</p>"
47
-
48
- #: includes/classes/wp-maintenance-mode.php:121
49
- msgid "Notify me when it's ready"
50
- msgstr "Notificar-me quando estiver disponível."
51
-
52
- #: includes/classes/wp-maintenance-mode.php:249
53
- #, php-format
54
- msgid ""
55
- "WP Maintenance Mode plugin was relaunched and you MUST revise <a href=\"%s"
56
- "\">settings</a>."
57
- msgstr ""
58
- "O plugin WP Maintenance Mode foi reactivado e DEVE rever as suas <a href=\"%s"
59
- "\">configurações</a>."
60
-
61
- #: includes/classes/wp-maintenance-mode.php:425
62
- #: includes/classes/wp-maintenance-mode.php:439
63
- msgid "Maintenance Mode"
64
- msgstr "Modo de Manutenção"
65
-
66
- #: includes/classes/wp-maintenance-mode.php:630
67
- #: includes/classes/wp-maintenance-mode.php:658
68
- msgid "Please enter a valid email address."
69
- msgstr "Por favor insira um endereço de email válido."
70
-
71
- #: includes/classes/wp-maintenance-mode.php:641
72
- msgid "You successfuly subscribed. Thanks!"
73
- msgstr "Subscrito com sucesso. Obrigado!"
74
-
75
- #: includes/classes/wp-maintenance-mode.php:654
76
- msgid "All fields required."
77
- msgstr "Todos os campos necessários."
78
-
79
- #: includes/classes/wp-maintenance-mode.php:675
80
- msgid "Message via contact"
81
- msgstr "Mensagem via contacto"
82
-
83
- #: includes/classes/wp-maintenance-mode.php:679
84
- msgid "Your email was sent to the website administrator. Thanks!"
85
- msgstr "O email foi enviado ao administrador do site. Obrigado!"
86
-
87
- #: views/loginform.php:8
88
- msgid "Login"
89
- msgstr "Login"
90
-
91
- #: views/maintenance.php:41
92
- msgid "your e-mail..."
93
- msgstr "o seu email..."
94
-
95
- #: views/maintenance.php:42 views/settings.php:260
96
- msgid "Subscribe"
97
- msgstr "Subscrever"
98
-
99
- #: views/maintenance.php:83 views/sidebar.php:7
100
- msgid "Name"
101
- msgstr "Nome"
102
-
103
- #: views/maintenance.php:84
104
- msgid "E-mail"
105
- msgstr "Email"
106
-
107
- #: views/maintenance.php:86
108
- msgid "Your message"
109
- msgstr "A sua mensagem"
110
-
111
- #: views/maintenance.php:87
112
- msgid "Send"
113
- msgstr "Enviar"
114
-
115
- #: views/maintenance.php:92
116
- msgid "Contact us"
117
- msgstr "Contacte-nos"
118
-
119
- #: views/maintenance.php:97
120
- msgid "Dashboard"
121
- msgstr "Painel de Administração"
122
-
123
- #: views/settings.php:6
124
- msgid "Settings saved."
125
- msgstr "Configurações guardadas."
126
-
127
- #: views/settings.php:13
128
- msgid "General"
129
- msgstr "Geral"
130
-
131
- #: views/settings.php:14
132
- msgid "Design"
133
- msgstr "Design"
134
-
135
- #: views/settings.php:15
136
- msgid "Modules"
137
- msgstr "Módulos"
138
-
139
- #: views/settings.php:24
140
- msgid "Status"
141
- msgstr "Estado"
142
-
143
- #: views/settings.php:26
144
- msgid "Activated"
145
- msgstr "Activado"
146
-
147
- #: views/settings.php:27
148
- msgid "Deactivated"
149
- msgstr "Desactivado"
150
-
151
- #: views/settings.php:31
152
- msgid "Bypass for Search Bots"
153
- msgstr "Bypass para Robôs de Pesquisa"
154
-
155
- #: views/settings.php:34 views/settings.php:94 views/settings.php:104
156
- #: views/settings.php:232 views/settings.php:268 views/settings.php:305
157
- #: views/settings.php:373 views/settings.php:405
158
- msgid "Yes"
159
- msgstr "Sim"
160
-
161
- #: views/settings.php:35 views/settings.php:95 views/settings.php:105
162
- #: views/settings.php:233 views/settings.php:269 views/settings.php:306
163
- #: views/settings.php:374 views/settings.php:406
164
- msgid "No"
165
- msgstr "Não"
166
-
167
- #: views/settings.php:37
168
- msgid "Allow Search Bots to bypass maintenance mode?"
169
- msgstr "Permitir que os Robôs de Pesquisa ultrapassem o modo de manutenção?"
170
-
171
- #: views/settings.php:41
172
- msgid "Backend Role"
173
- msgstr "Perfil de utilizador do backend"
174
-
175
- #: views/settings.php:48
176
- msgid "Which user role is allowed to access the backend of this blog?"
177
- msgstr ""
178
- "Que perfil de utilizador tem permissão de acesso ao backend deste site?"
179
-
180
- #: views/settings.php:52
181
- msgid "Frontend Role"
182
- msgstr "Perfil de utilizador do frontend"
183
-
184
- #: views/settings.php:59
185
- msgid "Which user role is allowed to access the frontend of this blog?"
186
- msgstr ""
187
- "Que perfil de utilizador tem permissão de acesso ao frontend deste site?"
188
-
189
- #: views/settings.php:63
190
- msgid "Robots Meta Tag"
191
- msgstr "Meta Tag Robots"
192
-
193
- #: views/settings.php:69
194
- msgid ""
195
- "The robots meta tag lets you use a granular, page-specific approach to "
196
- "control how an individual page should be indexed and served to users in "
197
- "search results."
198
- msgstr ""
199
- "A meta tag Robots permite usar uma abordagem por página específica para "
200
- "controlar como cada página individual deve ser indexada e disponibilizada "
201
- "aos utilizadores nos seus resultados de pesquisa."
202
-
203
- #: views/settings.php:73
204
- msgid "Redirection"
205
- msgstr "Redireccionar"
206
-
207
- #: views/settings.php:76
208
- msgid ""
209
- "If you want to redirect a user to a URL (which is not the WordPress "
210
- "dashboard) after login, then define a URL (incl. http://)"
211
- msgstr ""
212
- "Se pretende redireccionar um utilizador para um URL (que não seja o painel "
213
- "do WordPress) após login, insira um URL (incluindo http://)"
214
-
215
- #: views/settings.php:80
216
- msgid "Exclude"
217
- msgstr "Excluir"
218
-
219
- #: views/settings.php:87
220
- msgid ""
221
- "Exclude feed, pages, archives or IPs from maintenance mode. Add one slug / "
222
- "IP per line!"
223
- msgstr ""
224
- "Excluir feeds, páginas, arquivos ou IPs do modo de manutenção. Adicionar um "
225
- "URL / IP por cada linha!"
226
-
227
- #: views/settings.php:91
228
- msgid "Notice"
229
- msgstr "Notificações"
230
-
231
- #: views/settings.php:97
232
- msgid "Do you want to see notices when maintenance mode is activated?"
233
- msgstr ""
234
- "Pretende ver notificações enquanto o modo de manutenção estiver activo?"
235
-
236
- #: views/settings.php:101
237
- msgid "Dashboard link"
238
- msgstr "Ligação para o Painel de Administração"
239
-
240
- #: views/settings.php:107
241
- msgid ""
242
- "Do you want to add a link to the dashboard on your maintenance mode page?"
243
- msgstr ""
244
- "Pretende deixar uma ligação para o painel de administração no seu mode de "
245
- "manutenção?"
246
-
247
- #: views/settings.php:115 views/settings.php:218 views/settings.php:421
248
- msgid "Save settings"
249
- msgstr "Guardar configurações"
250
-
251
- #: views/settings.php:116 views/settings.php:219 views/settings.php:422
252
- msgid "Reset settings"
253
- msgstr "Repor configurações"
254
-
255
- #: views/settings.php:121
256
- msgid "Content"
257
- msgstr "Conteúdo"
258
-
259
- #: views/settings.php:126
260
- msgid "Title (HTML tag)"
261
- msgstr "Título (etiqueta HTML)"
262
-
263
- #: views/settings.php:132
264
- msgid "Heading"
265
- msgstr "Cabeçalho"
266
-
267
- #: views/settings.php:139 views/settings.php:274
268
- msgid "Text"
269
- msgstr "Texto"
270
-
271
- #: views/settings.php:159
272
- msgid "Background"
273
- msgstr "Fundo"
274
-
275
- #: views/settings.php:164
276
- msgid "Choose type"
277
- msgstr "Escolher tipo"
278
-
279
- #: views/settings.php:167
280
- msgid "Custom color"
281
- msgstr "Cor personalizada"
282
-
283
- #: views/settings.php:168
284
- msgid "Uploaded background"
285
- msgstr "Fundo carregado"
286
-
287
- #: views/settings.php:169
288
- msgid "Predefined background"
289
- msgstr "Fundo predefinido"
290
-
291
- #: views/settings.php:174
292
- msgid "Choose color"
293
- msgstr "Escolher cor"
294
-
295
- #: views/settings.php:180
296
- msgid "Upload background"
297
- msgstr "Carregar fundo"
298
-
299
- #: views/settings.php:184
300
- msgid "Backgrounds should have 1920x1280 px size."
301
- msgstr "Fundos deverão ter 1920x1280 px de tamanho."
302
-
303
- #: views/settings.php:189
304
- msgid "Choose background"
305
- msgstr "Escolher fundo"
306
-
307
- #: views/settings.php:191
308
- msgid "source <a href=\"%\" target=\"_blank\">Free Photos</a>"
309
- msgstr "fonte <a href=\"%\" target=\"_blank\">Fotos Gratuitas</a>"
310
-
311
- #: views/settings.php:224
312
- msgid "Countdown"
313
- msgstr "Contagem decrescente"
314
-
315
- #: views/settings.php:229
316
- msgid "Show countdown?"
317
- msgstr "Mostrar contagem decrescente?"
318
-
319
- #: views/settings.php:238
320
- msgid "Start date"
321
- msgstr "Data de início"
322
-
323
- #: views/settings.php:244
324
- msgid "Countdown (remaining time)"
325
- msgstr "Contagem decrescente (tempo que falta)"
326
-
327
- #: views/settings.php:246
328
- msgid "Days"
329
- msgstr "Dias"
330
-
331
- #: views/settings.php:247
332
- msgid "Hours"
333
- msgstr "Horas"
334
-
335
- #: views/settings.php:248
336
- msgid "Minutes"
337
- msgstr "Minutos"
338
-
339
- #: views/settings.php:252
340
- msgid "Color"
341
- msgstr "Cor"
342
-
343
- #: views/settings.php:265
344
- msgid "Show subscribe?"
345
- msgstr "Mostrar subscrição?"
346
-
347
- #: views/settings.php:281
348
- msgid "Stats"
349
- msgstr "Estatísticas"
350
-
351
- #: views/settings.php:285
352
- #, php-format
353
- msgid "You have %d subscriber(s)"
354
- msgstr "Tem %d subscritor(es)"
355
-
356
- #: views/settings.php:290
357
- msgid "Export as CSV"
358
- msgstr "Exportar como CSV"
359
-
360
- #: views/settings.php:297
361
- msgid "Social Networks"
362
- msgstr "Redes Sociais"
363
-
364
- #: views/settings.php:302
365
- msgid "Show social networks?"
366
- msgstr "Mostrar redes sociais?"
367
-
368
- #: views/settings.php:311
369
- msgid "Links target?"
370
- msgstr "Destino das ligações?"
371
-
372
- #: views/settings.php:314
373
- msgid "New page"
374
- msgstr "Nova página"
375
-
376
- #: views/settings.php:315
377
- msgid "Same page"
378
- msgstr "Mesma página"
379
-
380
- #: views/settings.php:317
381
- msgid "Choose how the links will open."
382
- msgstr "Escolher como abrir as ligações."
383
-
384
- #: views/settings.php:365
385
- msgid "Contact"
386
- msgstr "Contacto"
387
-
388
- #: views/settings.php:370
389
- msgid "Show contact?"
390
- msgstr "Mostrar contacto?"
391
-
392
- #: views/settings.php:379
393
- msgid "Email address"
394
- msgstr "Endereço de email"
395
-
396
- #: views/settings.php:385
397
- msgid "Effects"
398
- msgstr "Efeitos"
399
-
400
- #: views/settings.php:388
401
- msgid "Move top - Move bottom"
402
- msgstr "Subir - Descer"
403
-
404
- #: views/settings.php:389
405
- msgid "Zoom - Zoomed"
406
- msgstr "Zoom"
407
-
408
- #: views/settings.php:390
409
- msgid "Fold - Unfold"
410
- msgstr "Dobrar - Desdrobrar"
411
-
412
- #: views/settings.php:397
413
- msgid "Google Analytics"
414
- msgstr "Google Analytics"
415
-
416
- #: views/settings.php:402
417
- msgid "Use Google Analytics?"
418
- msgstr "Usar Google Analytics?"
419
-
420
- #: views/settings.php:411
421
- msgid "Tracking code"
422
- msgstr "Código de acompanhamento"
423
-
424
- #: views/sidebar.php:3
425
- msgid "Plugin Info"
426
- msgstr "Informação do Plugin"
427
-
428
- #: views/sidebar.php:13
429
- msgid "Author"
430
- msgstr "Autor"
431
-
432
- #: views/sidebar.php:14
433
- msgid "Website"
434
- msgstr "Site"
435
-
436
- #: views/sidebar.php:15
437
- msgid "Twitter"
438
- msgstr "Twitter"
439
-
440
- #: views/sidebar.php:16
441
- msgid "GitHub"
442
- msgstr "GitHub"
443
-
444
- #: views/sidebar.php:22
445
- msgid "WordPress Themes"
446
- msgstr "Temas WordPress"
447
-
448
- #: views/sidebar.php:31
449
- msgid "Resources"
450
- msgstr "Recursos"
451
-
452
- #~ msgid "Subscribe now for early access to new WordPress themes."
453
- #~ msgstr ""
454
- #~ "Subscreva agora para ter acesso prioritário aos novos temas do WordPress."
455
-
456
- #~ msgid "Enter your email address"
457
- #~ msgstr "Insira o seu endereço de email"
458
-
459
- #~ msgid "News"
460
- #~ msgstr "Notícias"
461
-
462
- #~ msgid "Developed by <a href=\"%s\">Designmodo</a>"
463
- #~ msgstr "Desenvolvido por <a href=\"%s\">Designmodo</a>"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ msgid ""
2
+ msgstr ""
3
+ "Project-Id-Version: WP Maintenance Mode 2.0.4\n"
4
+ "POT-Creation-Date: 2016-06-17 03:28+0300\n"
5
+ "PO-Revision-Date: 2016-06-17 03:28+0300\n"
6
+ "Last-Translator: Pedro Mendonça <ped.gaspar@gmail.com>\n"
7
+ "Language-Team: Pedro Mendonça <ped.gaspar@gmail.com>\n"
8
+ "Language: pt_PT\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.8.8\n"
13
+ "X-Poedit-Basepath: ..\n"
14
+ "Plural-Forms: nplurals=2; plural=(n != 1);\n"
15
+ "X-Poedit-SourceCharset: UTF-8\n"
16
+ "X-Poedit-KeywordsList: __;_e;__ngettext:1,2;_n:1,2;__ngettext_noop:1,2;"
17
+ "_n_noop:1,2;_c,_nc:4c,1,2;_x:1,2c;_ex:1,2c;_nx:4c,1,2;_nx_noop:4c,1,2;"
18
+ "esc_attr__;esc_attr_e;esc_attr_x:1,2c;esc_html__;esc_html_e;esc_html_x:1,2c\n"
19
+ "X-Poedit-SearchPath-0: .\n"
20
+ "X-Poedit-SearchPath-1: views\n"
21
+ "X-Poedit-SearchPath-2: includes/classes\n"
22
+
23
+ #: includes/classes/wp-maintenance-mode-admin.php:121
24
+ #: includes/classes/wp-maintenance-mode-admin.php:159
25
+ #: includes/classes/wp-maintenance-mode-admin.php:181
26
+ msgid "You do not have access to this resource."
27
+ msgstr ""
28
+
29
+ #: includes/classes/wp-maintenance-mode-admin.php:165 views/settings.php:295
30
+ #, php-format
31
+ msgid "You have %d subscriber(s)"
32
+ msgstr "Tem %d subscritor(es)"
33
+
34
+ #: includes/classes/wp-maintenance-mode-admin.php:186
35
+ msgid "The tab slug must not be empty."
36
+ msgstr ""
37
+
38
+ #: includes/classes/wp-maintenance-mode-admin.php:191
39
+ msgid "The tab slug must exist."
40
+ msgstr ""
41
+
42
+ #: includes/classes/wp-maintenance-mode-admin.php:211
43
+ msgid "WP Maintenance Mode"
44
+ msgstr "WP Maintenance Mode"
45
+
46
+ #: includes/classes/wp-maintenance-mode-admin.php:425
47
+ msgid "Settings"
48
+ msgstr "Definições"
49
+
50
+ #: includes/classes/wp-maintenance-mode-admin.php:444
51
+ #, php-format
52
+ msgid ""
53
+ "The Maintenance Mode is <strong>active</strong>. Please don't forget to <a "
54
+ "href=\"%s\">deactivate</a> as soon as you are done."
55
+ msgstr ""
56
+ "O modo de manutenção está <strong>activo</strong>. Por favor não se esqueça "
57
+ "de <a href=\"%s\">desactivar</a> assim que termine."
58
+
59
+ #: includes/classes/wp-maintenance-mode-admin.php:481
60
+ msgid "Notice key cannot be empty."
61
+ msgstr ""
62
+
63
+ #: includes/classes/wp-maintenance-mode.php:103
64
+ #: includes/classes/wp-maintenance-mode.php:104
65
+ msgid "Maintenance mode"
66
+ msgstr "Modo de manutenção"
67
+
68
+ #: includes/classes/wp-maintenance-mode.php:106
69
+ msgid ""
70
+ "<p>Sorry for the inconvenience.<br />Our website is currently undergoing "
71
+ "scheduled maintenance.<br />Thank you for your understanding.</p>"
72
+ msgstr ""
73
+ "<p>Desculpe pela inconveniência.<br />O site está neste momento numa "
74
+ "manutenção agendada.<br />Obrigado pela sua compreensão.</p>"
75
+
76
+ #: includes/classes/wp-maintenance-mode.php:124
77
+ msgid "Notify me when it's ready"
78
+ msgstr "Notificar-me quando estiver disponível."
79
+
80
+ #: includes/classes/wp-maintenance-mode.php:259
81
+ #, php-format
82
+ msgid ""
83
+ "WP Maintenance Mode plugin was relaunched and you MUST revise <a href=\"%s"
84
+ "\">settings</a>."
85
+ msgstr ""
86
+ "O plugin WP Maintenance Mode foi reactivado e DEVE rever as suas <a href=\"%s"
87
+ "\">definições</a>."
88
+
89
+ #: includes/classes/wp-maintenance-mode.php:449
90
+ #: includes/classes/wp-maintenance-mode.php:463
91
+ msgid "Maintenance Mode"
92
+ msgstr "Modo de manutenção"
93
+
94
+ #: includes/classes/wp-maintenance-mode.php:687
95
+ #: includes/classes/wp-maintenance-mode.php:721 views/maintenance.php:85
96
+ msgid "Please enter a valid email address."
97
+ msgstr "Por favor introduza um endereço de email válido."
98
+
99
+ #: includes/classes/wp-maintenance-mode.php:699
100
+ msgid "You successfully subscribed. Thanks!"
101
+ msgstr ""
102
+
103
+ #: includes/classes/wp-maintenance-mode.php:717
104
+ msgid "All fields required."
105
+ msgstr "Todos os campos são necessários."
106
+
107
+ #: includes/classes/wp-maintenance-mode.php:726
108
+ msgid "Message via contact"
109
+ msgstr "Mensagem via formulário de contacto"
110
+
111
+ #: includes/classes/wp-maintenance-mode.php:738
112
+ msgid "Your email was sent to the website administrator. Thanks!"
113
+ msgstr "O seu email foi enviado ao administrador do site. Obrigado!"
114
+
115
+ #: views/contact.php:34
116
+ #, php-format
117
+ msgid "You have been contacted via %s."
118
+ msgstr ""
119
+
120
+ #: views/contact.php:50
121
+ msgid "Name:"
122
+ msgstr ""
123
+
124
+ #: views/contact.php:62
125
+ msgid "Email:"
126
+ msgstr ""
127
+
128
+ #: views/contact.php:74
129
+ msgid "Content:"
130
+ msgstr ""
131
+
132
+ #: views/loginform.php:8
133
+ msgid "Login"
134
+ msgstr "Iníciar sessão"
135
+
136
+ #: views/maintenance.php:42
137
+ msgid "your e-mail..."
138
+ msgstr "o seu email..."
139
+
140
+ #: views/maintenance.php:43 views/settings.php:270
141
+ msgid "Subscribe"
142
+ msgstr "Subscrever"
143
+
144
+ #: views/maintenance.php:84 views/sidebar.php:7
145
+ msgid "Name"
146
+ msgstr "Nome"
147
+
148
+ #: views/maintenance.php:84 views/maintenance.php:85 views/maintenance.php:87
149
+ msgid "This field is required."
150
+ msgstr ""
151
+
152
+ #: views/maintenance.php:85
153
+ msgid "E-mail"
154
+ msgstr "Email"
155
+
156
+ #: views/maintenance.php:87
157
+ msgid "Your message"
158
+ msgstr "A sua mensagem"
159
+
160
+ #: views/maintenance.php:88
161
+ msgid "Send"
162
+ msgstr "Enviar"
163
+
164
+ #: views/maintenance.php:93
165
+ msgid "Contact us"
166
+ msgstr "Contacte-nos"
167
+
168
+ #: views/maintenance.php:98
169
+ msgid "Dashboard"
170
+ msgstr "Painel de administração"
171
+
172
+ #: views/settings.php:6
173
+ msgid "Settings saved."
174
+ msgstr "Definições guardadas."
175
+
176
+ #: views/settings.php:13
177
+ msgid "General"
178
+ msgstr "Geral"
179
+
180
+ #: views/settings.php:14
181
+ msgid "Design"
182
+ msgstr "Design"
183
+
184
+ #: views/settings.php:15
185
+ msgid "Modules"
186
+ msgstr "Módulos"
187
+
188
+ #: views/settings.php:24
189
+ msgid "Status"
190
+ msgstr "Estado"
191
+
192
+ #: views/settings.php:26
193
+ msgid "Activated"
194
+ msgstr "Activado"
195
+
196
+ #: views/settings.php:27
197
+ msgid "Deactivated"
198
+ msgstr "Desactivado"
199
+
200
+ #: views/settings.php:31
201
+ msgid "Bypass for Search Bots"
202
+ msgstr "Bypass para robôs de pesquisa"
203
+
204
+ #: views/settings.php:34 views/settings.php:104 views/settings.php:114
205
+ #: views/settings.php:242 views/settings.php:278 views/settings.php:316
206
+ #: views/settings.php:384 views/settings.php:416
207
+ msgid "Yes"
208
+ msgstr "Sim"
209
+
210
+ #: views/settings.php:35 views/settings.php:105 views/settings.php:115
211
+ #: views/settings.php:243 views/settings.php:279 views/settings.php:317
212
+ #: views/settings.php:385 views/settings.php:417
213
+ msgid "No"
214
+ msgstr "Não"
215
+
216
+ #: views/settings.php:37
217
+ msgid "Allow Search Bots to bypass maintenance mode?"
218
+ msgstr "Permitir que os robôs de pesquisa ultrapassem o modo de manutenção?"
219
+
220
+ #: views/settings.php:41
221
+ msgid "Backend Role"
222
+ msgstr "Perfil de utilizador de administração"
223
+
224
+ #: views/settings.php:43 views/settings.php:59
225
+ msgid "Select role(s)"
226
+ msgstr ""
227
+
228
+ #: views/settings.php:53
229
+ msgid ""
230
+ "Which user role is allowed to access the backend of this blog? "
231
+ "Administrators will always have access."
232
+ msgstr ""
233
+
234
+ #: views/settings.php:57
235
+ msgid "Frontend Role"
236
+ msgstr "Perfil de utilizador da frente do site"
237
+
238
+ #: views/settings.php:69
239
+ msgid ""
240
+ "Which user role is allowed to access the frontend of this blog? "
241
+ "Administrators will always have access."
242
+ msgstr ""
243
+
244
+ #: views/settings.php:73
245
+ msgid "Robots Meta Tag"
246
+ msgstr "Metatag para robôs"
247
+
248
+ #: views/settings.php:79
249
+ msgid ""
250
+ "The robots meta tag lets you use a granular, page-specific approach to "
251
+ "control how an individual page should be indexed and served to users in "
252
+ "search results."
253
+ msgstr ""
254
+ "A metatag de robôs permite usar uma abordagem por página específica para "
255
+ "controlar como cada página individual deve ser indexada e disponibilizada "
256
+ "aos utilizadores nos seus resultados de pesquisa."
257
+
258
+ #: views/settings.php:83
259
+ msgid "Redirection"
260
+ msgstr "Redireccionar"
261
+
262
+ #: views/settings.php:86
263
+ msgid ""
264
+ "If you want to redirect a user (with no access to Dashboard/Backend) to a "
265
+ "URL (different from WordPress Dashboard URL) after login, then define a URL "
266
+ "(incl. http://)"
267
+ msgstr ""
268
+
269
+ #: views/settings.php:90
270
+ msgid "Exclude"
271
+ msgstr "Excluir"
272
+
273
+ #: views/settings.php:97
274
+ msgid ""
275
+ "Exclude feed, pages, archives or IPs from maintenance mode. Add one slug / "
276
+ "IP per line!"
277
+ msgstr ""
278
+ "Excluir feeds, páginas, arquivos ou IPs do modo de manutenção. Adicionar um "
279
+ "URL / IP por cada linha!"
280
+
281
+ #: views/settings.php:101
282
+ msgid "Notice"
283
+ msgstr "Notificações"
284
+
285
+ #: views/settings.php:107
286
+ msgid "Do you want to see notices when maintenance mode is activated?"
287
+ msgstr ""
288
+ "Pretende ver notificações enquanto o modo de manutenção estiver activo?"
289
+
290
+ #: views/settings.php:111
291
+ msgid "Dashboard link"
292
+ msgstr "Ligação para o painel de administração"
293
+
294
+ #: views/settings.php:117
295
+ msgid ""
296
+ "Do you want to add a link to the dashboard on your maintenance mode page?"
297
+ msgstr ""
298
+ "Pretende deixar uma ligação para o painel de administração no seu modo de "
299
+ "manutenção?"
300
+
301
+ #: views/settings.php:125 views/settings.php:228 views/settings.php:432
302
+ msgid "Save settings"
303
+ msgstr "Guardar definições"
304
+
305
+ #: views/settings.php:126 views/settings.php:229 views/settings.php:433
306
+ msgid "Reset settings"
307
+ msgstr "Repor definições"
308
+
309
+ #: views/settings.php:131
310
+ msgid "Content"
311
+ msgstr "Conteúdo"
312
+
313
+ #: views/settings.php:136
314
+ msgid "Title (HTML tag)"
315
+ msgstr "Título (etiqueta HTML)"
316
+
317
+ #: views/settings.php:142
318
+ msgid "Heading"
319
+ msgstr "Cabeçalho"
320
+
321
+ #: views/settings.php:149 views/settings.php:284
322
+ msgid "Text"
323
+ msgstr "Texto"
324
+
325
+ #: views/settings.php:169
326
+ msgid "Background"
327
+ msgstr "Fundo"
328
+
329
+ #: views/settings.php:174
330
+ msgid "Choose type"
331
+ msgstr "Escolher tipo"
332
+
333
+ #: views/settings.php:177
334
+ msgid "Custom color"
335
+ msgstr "Cor personalizada"
336
+
337
+ #: views/settings.php:178
338
+ msgid "Uploaded background"
339
+ msgstr "Fundo carregado"
340
+
341
+ #: views/settings.php:179
342
+ msgid "Predefined background"
343
+ msgstr "Fundo predefinido"
344
+
345
+ #: views/settings.php:184
346
+ msgid "Choose color"
347
+ msgstr "Escolher cor"
348
+
349
+ #: views/settings.php:190
350
+ msgid "Upload background"
351
+ msgstr "Carregar fundo"
352
+
353
+ #: views/settings.php:194
354
+ msgid "Backgrounds should have 1920x1280 px size."
355
+ msgstr "Fundos deverão ter 1920x1280 px de tamanho."
356
+
357
+ #: views/settings.php:199
358
+ msgid "Choose background"
359
+ msgstr "Escolher fundo"
360
+
361
+ #: views/settings.php:201
362
+ #, php-format
363
+ msgid "source <a href=\"%s\" target=\"_blank\">Free Photos</a>"
364
+ msgstr "fonte <a href=\"%s\" target=\"_blank\">fotos gratuitas</a>"
365
+
366
+ #: views/settings.php:234
367
+ msgid "Countdown"
368
+ msgstr "Contagem decrescente"
369
+
370
+ #: views/settings.php:239
371
+ msgid "Show countdown?"
372
+ msgstr "Mostrar contagem decrescente?"
373
+
374
+ #: views/settings.php:248
375
+ msgid "Start date"
376
+ msgstr "Data de início"
377
+
378
+ #: views/settings.php:254
379
+ msgid "Countdown (remaining time)"
380
+ msgstr "Contagem decrescente (tempo que falta)"
381
+
382
+ #: views/settings.php:256
383
+ msgid "Days"
384
+ msgstr "Dias"
385
+
386
+ #: views/settings.php:257
387
+ msgid "Hours"
388
+ msgstr "Horas"
389
+
390
+ #: views/settings.php:258
391
+ msgid "Minutes"
392
+ msgstr "Minutos"
393
+
394
+ #: views/settings.php:262
395
+ msgid "Color"
396
+ msgstr "Cor"
397
+
398
+ #: views/settings.php:275
399
+ msgid "Show subscribe?"
400
+ msgstr "Mostrar subscrição?"
401
+
402
+ #: views/settings.php:291
403
+ msgid "Stats"
404
+ msgstr "Estatísticas"
405
+
406
+ #: views/settings.php:300
407
+ msgid "Export as CSV"
408
+ msgstr "Exportar como CSV"
409
+
410
+ #: views/settings.php:301
411
+ msgid "Empty subscribers list"
412
+ msgstr ""
413
+
414
+ #: views/settings.php:308
415
+ msgid "Social Networks"
416
+ msgstr "Redes sociais"
417
+
418
+ #: views/settings.php:313
419
+ msgid "Show social networks?"
420
+ msgstr "Mostrar redes sociais?"
421
+
422
+ #: views/settings.php:322
423
+ msgid "Links target?"
424
+ msgstr "Destino das ligações?"
425
+
426
+ #: views/settings.php:325
427
+ msgid "New page"
428
+ msgstr "Nova página"
429
+
430
+ #: views/settings.php:326
431
+ msgid "Same page"
432
+ msgstr "Mesma página"
433
+
434
+ #: views/settings.php:328
435
+ msgid "Choose how the links will open."
436
+ msgstr "Escolher como abrir as ligações."
437
+
438
+ #: views/settings.php:376
439
+ msgid "Contact"
440
+ msgstr "Contacto"
441
+
442
+ #: views/settings.php:381
443
+ msgid "Show contact?"
444
+ msgstr "Mostrar contacto?"
445
+
446
+ #: views/settings.php:390
447
+ msgid "Email address"
448
+ msgstr "Endereço de email"
449
+
450
+ #: views/settings.php:396
451
+ msgid "Effects"
452
+ msgstr "Efeitos"
453
+
454
+ #: views/settings.php:399
455
+ msgid "Move top - Move bottom"
456
+ msgstr "Subir - descer"
457
+
458
+ #: views/settings.php:400
459
+ msgid "Zoom - Zoomed"
460
+ msgstr "Zoom"
461
+
462
+ #: views/settings.php:401
463
+ msgid "Fold - Unfold"
464
+ msgstr "Dobrar - desdrobrar"
465
+
466
+ #: views/settings.php:408
467
+ msgid "Google Analytics"
468
+ msgstr "Google Analytics"
469
+
470
+ #: views/settings.php:413
471
+ msgid "Use Google Analytics?"
472
+ msgstr "Utilizar Google Analytics?"
473
+
474
+ #: views/settings.php:422
475
+ msgid "Tracking code"
476
+ msgstr "Código de acompanhamento"
477
+
478
+ #: views/sidebar.php:3
479
+ msgid "Plugin Info"
480
+ msgstr "Informação do plugin"
481
+
482
+ #: views/sidebar.php:13
483
+ msgid "Author"
484
+ msgstr "Autor"
485
+
486
+ #: views/sidebar.php:14
487
+ msgid "Website"
488
+ msgstr "Site"
489
+
490
+ #: views/sidebar.php:15
491
+ msgid "Twitter"
492
+ msgstr "Twitter"
493
+
494
+ #: views/sidebar.php:16
495
+ msgid "GitHub"
496
+ msgstr "GitHub"
497
+
498
+ #: views/sidebar.php:27
499
+ msgid "Other products"
500
+ msgstr ""
501
+
502
+ #: views/sidebar.php:44
503
+ msgid "Resources"
504
+ msgstr "Recursos"
505
+
506
+ #~ msgid "You successfuly subscribed. Thanks!"
507
+ #~ msgstr "Subscreveu com sucesso. Obrigado!"
508
+
509
+ #~ msgid "Which user role is allowed to access the backend of this blog?"
510
+ #~ msgstr ""
511
+ #~ "Que perfil de utilizador tem permissão de acesso à administração deste "
512
+ #~ "site?"
513
+
514
+ #~ msgid "Which user role is allowed to access the frontend of this blog?"
515
+ #~ msgstr ""
516
+ #~ "Que perfil de utilizador tem permissão de acesso à frente deste site?"
517
+
518
+ #~ msgid ""
519
+ #~ "If you want to redirect a user to a URL (which is not the WordPress "
520
+ #~ "dashboard) after login, then define a URL (incl. http://)"
521
+ #~ msgstr ""
522
+ #~ "Se pretende redireccionar um utilizador para um URL (que não seja o "
523
+ #~ "painel do WordPress) após início de sessão, insira um URL (incluindo "
524
+ #~ "http://)"
525
+
526
+ #~ msgid "WordPress Themes"
527
+ #~ msgstr "Temas WordPress"
528
+
529
+ #~ msgid "source <a href=\"%\" target=\"_blank\">Free Photos</a>"
530
+ #~ msgstr "fonte <a href=\"%\" target=\"_blank\">fotos gratuitas</a>"
531
+
532
+ #~ msgid "Subscribe now for early access to new WordPress themes."
533
+ #~ msgstr ""
534
+ #~ "Subscreva agora para ter acesso prioritário aos novos temas do WordPress."
535
+
536
+ #~ msgid "Enter your email address"
537
+ #~ msgstr "Insira o seu endereço de email"
538
+
539
+ #~ msgid "News"
540
+ #~ msgstr "Notícias"
541
+
542
+ #~ msgid "Developed by <a href=\"%s\">Designmodo</a>"
543
+ #~ msgstr "Desenvolvido por <a href=\"%s\">Designmodo</a>"
languages/wp-maintenance-mode-ro_RO.mo CHANGED
Binary file
languages/wp-maintenance-mode-ro_RO.po CHANGED
@@ -1,470 +1,553 @@
1
- msgid ""
2
- msgstr ""
3
- "Project-Id-Version: WP Maintenance Mode 2.0.3\n"
4
- "POT-Creation-Date: 2014-09-26 19:04+0200\n"
5
- "PO-Revision-Date: 2014-09-26 19:07+0200\n"
6
- "Last-Translator: \n"
7
- "Language-Team: Designmodo <info@designmodo.com>\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.7\n"
13
- "X-Poedit-Basepath: ../\n"
14
- "Plural-Forms: nplurals=2; plural=(n != 1);\n"
15
- "X-Poedit-SourceCharset: UTF-8\n"
16
- "X-Poedit-KeywordsList: __;_e\n"
17
- "X-Poedit-SearchPath-0: .\n"
18
- "X-Poedit-SearchPath-1: includes/classes\n"
19
- "X-Poedit-SearchPath-2: views\n"
20
-
21
- #: includes/classes/wp-maintenance-mode-admin.php:154
22
- msgid "WP Maintenance Mode"
23
- msgstr "WP Maintenance Mode"
24
-
25
- #: includes/classes/wp-maintenance-mode-admin.php:358
26
- msgid "Settings"
27
- msgstr "Setari"
28
-
29
- #: includes/classes/wp-maintenance-mode-admin.php:377
30
- #, php-format
31
- msgid ""
32
- "The Maintenance Mode is <strong>active</strong>. Please don't forget to <a "
33
- "href=\"%s\">deactivate</a> as soon as you are done."
34
- msgstr ""
35
- "Modul de mentenanta este <strong>activ</strong>. Nu uita sa-l <a href=\"%s"
36
- "\">dezactivezi</a> imediat dupa ce termini."
37
-
38
- #: includes/classes/wp-maintenance-mode.php:100
39
- #: includes/classes/wp-maintenance-mode.php:101
40
- msgid "Maintenance mode"
41
- msgstr "Mentenanta"
42
-
43
- #: includes/classes/wp-maintenance-mode.php:103
44
- msgid ""
45
- "<p>Sorry for the inconvenience.<br />Our website is currently undergoing "
46
- "scheduled maintenance.<br />Thank you for your understanding.</p>"
47
- msgstr ""
48
- "<p>Ne cerem scuze pentru inconvenienta.<br />Site-ul nostru se afla in "
49
- "mentenanta.<br />Multumim pentru intelegere.</p>"
50
-
51
- #: includes/classes/wp-maintenance-mode.php:121
52
- msgid "Notify me when it's ready"
53
- msgstr "Notifica-ma atunci cand procesul de mentenanta este gata"
54
-
55
- #: includes/classes/wp-maintenance-mode.php:249
56
- #, php-format
57
- msgid ""
58
- "WP Maintenance Mode plugin was relaunched and you MUST revise <a href=\"%s"
59
- "\">settings</a>."
60
- msgstr ""
61
- "Plugin-ul WP Maintenance Mode a fost relansat si TREBUIE sa revedeti <a href="
62
- "\"%s\">setarile</a> acestuia."
63
-
64
- #: includes/classes/wp-maintenance-mode.php:425
65
- #: includes/classes/wp-maintenance-mode.php:439
66
- msgid "Maintenance Mode"
67
- msgstr "Mentenanta"
68
-
69
- #: includes/classes/wp-maintenance-mode.php:630
70
- #: includes/classes/wp-maintenance-mode.php:658
71
- msgid "Please enter a valid email address."
72
- msgstr "Te rog sa completezi o adresa de email valida."
73
-
74
- #: includes/classes/wp-maintenance-mode.php:641
75
- msgid "You successfuly subscribed. Thanks!"
76
- msgstr "Ai fost abonat cu succes. Multumim!"
77
-
78
- #: includes/classes/wp-maintenance-mode.php:654
79
- msgid "All fields required."
80
- msgstr "Toate campurile sunt obligatorii."
81
-
82
- #: includes/classes/wp-maintenance-mode.php:675
83
- msgid "Message via contact"
84
- msgstr "Mesaj trimis prin formularul de contact"
85
-
86
- #: includes/classes/wp-maintenance-mode.php:679
87
- msgid "Your email was sent to the website administrator. Thanks!"
88
- msgstr "Emailul tau a fost trimis catre administratorul site-ului. Multumim!"
89
-
90
- #: views/loginform.php:8
91
- msgid "Login"
92
- msgstr "Autentificare"
93
-
94
- #: views/maintenance.php:41
95
- msgid "your e-mail..."
96
- msgstr "emailul tau..."
97
-
98
- #: views/maintenance.php:42 views/settings.php:260
99
- msgid "Subscribe"
100
- msgstr "Aboneaza-ma"
101
-
102
- #: views/maintenance.php:83 views/sidebar.php:7
103
- msgid "Name"
104
- msgstr "Nume"
105
-
106
- #: views/maintenance.php:84
107
- msgid "E-mail"
108
- msgstr "E-Mail"
109
-
110
- #: views/maintenance.php:86
111
- msgid "Your message"
112
- msgstr "Mesajul tau"
113
-
114
- #: views/maintenance.php:87
115
- msgid "Send"
116
- msgstr "Trimite"
117
-
118
- #: views/maintenance.php:92
119
- msgid "Contact us"
120
- msgstr "Contacteaza-ne"
121
-
122
- #: views/maintenance.php:97
123
- msgid "Dashboard"
124
- msgstr "Admin"
125
-
126
- #: views/settings.php:6
127
- msgid "Settings saved."
128
- msgstr "Setarile au fost salvate."
129
-
130
- #: views/settings.php:13
131
- msgid "General"
132
- msgstr "General"
133
-
134
- #: views/settings.php:14
135
- msgid "Design"
136
- msgstr "Design"
137
-
138
- #: views/settings.php:15
139
- msgid "Modules"
140
- msgstr "Module"
141
-
142
- #: views/settings.php:24
143
- msgid "Status"
144
- msgstr "Status"
145
-
146
- #: views/settings.php:26
147
- msgid "Activated"
148
- msgstr "Activat"
149
-
150
- #: views/settings.php:27
151
- msgid "Deactivated"
152
- msgstr "Dezactivat"
153
-
154
- #: views/settings.php:31
155
- msgid "Bypass for Search Bots"
156
- msgstr "Nu afisa pagina de mentenanta robotilor motoarelor de cautare"
157
-
158
- #: views/settings.php:34 views/settings.php:94 views/settings.php:104
159
- #: views/settings.php:232 views/settings.php:268 views/settings.php:305
160
- #: views/settings.php:373 views/settings.php:405
161
- msgid "Yes"
162
- msgstr "Da"
163
-
164
- #: views/settings.php:35 views/settings.php:95 views/settings.php:105
165
- #: views/settings.php:233 views/settings.php:269 views/settings.php:306
166
- #: views/settings.php:374 views/settings.php:406
167
- msgid "No"
168
- msgstr "Nu"
169
-
170
- #: views/settings.php:37
171
- msgid "Allow Search Bots to bypass maintenance mode?"
172
- msgstr ""
173
- "Dai voie robotilor motoarelor de cautare sa acceseze site-ul, fara a vedea "
174
- "pagina de mentenanta?"
175
-
176
- #: views/settings.php:41
177
- msgid "Backend Role"
178
- msgstr "Rol interfata administrare"
179
-
180
- #: views/settings.php:48
181
- msgid "Which user role is allowed to access the backend of this blog?"
182
- msgstr ""
183
- "Ce rol trebuie sa aiba utilizatorul pentru a putea accesa interfata de "
184
- "administrare acestui blog?"
185
-
186
- #: views/settings.php:52
187
- msgid "Frontend Role"
188
- msgstr "Rol interfata publica"
189
-
190
- #: views/settings.php:59
191
- msgid "Which user role is allowed to access the frontend of this blog?"
192
- msgstr ""
193
- "Ce rol trebuie sa aiba utilizatorul pentru a putea accesa interfata publica "
194
- "acestui blog?"
195
-
196
- #: views/settings.php:63
197
- msgid "Robots Meta Tag"
198
- msgstr "Meta Tag-ul \"robots\""
199
-
200
- #: views/settings.php:69
201
- msgid ""
202
- "The robots meta tag lets you use a granular, page-specific approach to "
203
- "control how an individual page should be indexed and served to users in "
204
- "search results."
205
- msgstr ""
206
- "Meta tag-ul \"robots\" permite controlul asupra felului in care motoarele de "
207
- "cautare indexeaza si servesc rezultatele pentru o anumita pagina."
208
-
209
- #: views/settings.php:73
210
- msgid "Redirection"
211
- msgstr "Redirectionare"
212
-
213
- #: views/settings.php:76
214
- msgid ""
215
- "If you want to redirect a user to a URL (which is not the WordPress "
216
- "dashboard) after login, then define a URL (incl. http://)"
217
- msgstr ""
218
- "Daca doresti sa redirectionezi un utilizator catre un URL (diferit de "
219
- "WordPress dashboard) dupa ce acesta s-a autentificat, atunci defineste un "
220
- "URL (include http://). "
221
-
222
- #: views/settings.php:80
223
- msgid "Exclude"
224
- msgstr "Exclude"
225
-
226
- #: views/settings.php:87
227
- msgid ""
228
- "Exclude feed, pages, archives or IPs from maintenance mode. Add one slug / "
229
- "IP per line!"
230
- msgstr ""
231
- "Exclude rss feed, pagini, arhive ori IP-uri din modul de mentenanta. Adauga "
232
- "cate slug/IP pe linie."
233
-
234
- #: views/settings.php:91
235
- msgid "Notice"
236
- msgstr "Atentionare"
237
-
238
- #: views/settings.php:97
239
- msgid "Do you want to see notices when maintenance mode is activated?"
240
- msgstr ""
241
- "Doresti sa vezi atentionarea atunci cand modul de mentenanta este activat?"
242
-
243
- #: views/settings.php:101
244
- msgid "Dashboard link"
245
- msgstr "Link catre admin"
246
-
247
- #: views/settings.php:107
248
- msgid ""
249
- "Do you want to add a link to the dashboard on your maintenance mode page?"
250
- msgstr "Doresti sa adaugi un link catre admin pe pagina de mentenanta?"
251
-
252
- #: views/settings.php:115 views/settings.php:218 views/settings.php:421
253
- msgid "Save settings"
254
- msgstr "Salveaza setari"
255
-
256
- #: views/settings.php:116 views/settings.php:219 views/settings.php:422
257
- msgid "Reset settings"
258
- msgstr "Reseteaza setari"
259
-
260
- #: views/settings.php:121
261
- msgid "Content"
262
- msgstr "Continut"
263
-
264
- #: views/settings.php:126
265
- msgid "Title (HTML tag)"
266
- msgstr "Titlu (tag HTML)"
267
-
268
- #: views/settings.php:132
269
- msgid "Heading"
270
- msgstr "Subtitlu"
271
-
272
- #: views/settings.php:139 views/settings.php:274
273
- msgid "Text"
274
- msgstr "Text"
275
-
276
- #: views/settings.php:159
277
- msgid "Background"
278
- msgstr "Fundal"
279
-
280
- #: views/settings.php:164
281
- msgid "Choose type"
282
- msgstr "Alege tip"
283
-
284
- #: views/settings.php:167
285
- msgid "Custom color"
286
- msgstr "Culoare"
287
-
288
- #: views/settings.php:168
289
- msgid "Uploaded background"
290
- msgstr "Imagine de fundal urcata de utilizator"
291
-
292
- #: views/settings.php:169
293
- msgid "Predefined background"
294
- msgstr "Imagine de fundal predefinita"
295
-
296
- #: views/settings.php:174
297
- msgid "Choose color"
298
- msgstr "Alege culoare"
299
-
300
- #: views/settings.php:180
301
- msgid "Upload background"
302
- msgstr "Incarca imagine"
303
-
304
- #: views/settings.php:184
305
- msgid "Backgrounds should have 1920x1280 px size."
306
- msgstr "Imaginea ar trebui sa fie 1920x1280 px"
307
-
308
- #: views/settings.php:189
309
- msgid "Choose background"
310
- msgstr "Alege imagine"
311
-
312
- #: views/settings.php:191
313
- msgid "source <a href=\"%\" target=\"_blank\">Free Photos</a>"
314
- msgstr "sursa <a href=\"%\" target=\"_blank\">Free Photos</a>"
315
-
316
- #: views/settings.php:224
317
- msgid "Countdown"
318
- msgstr "Countdown"
319
-
320
- #: views/settings.php:229
321
- msgid "Show countdown?"
322
- msgstr "Afiseaza countdown?"
323
-
324
- #: views/settings.php:238
325
- msgid "Start date"
326
- msgstr "Data de inceput"
327
-
328
- #: views/settings.php:244
329
- msgid "Countdown (remaining time)"
330
- msgstr "Countdown (timpul ramas)"
331
-
332
- #: views/settings.php:246
333
- msgid "Days"
334
- msgstr "Zile"
335
-
336
- #: views/settings.php:247
337
- msgid "Hours"
338
- msgstr "Ore"
339
-
340
- #: views/settings.php:248
341
- msgid "Minutes"
342
- msgstr "Minute"
343
-
344
- #: views/settings.php:252
345
- msgid "Color"
346
- msgstr "Culoare"
347
-
348
- #: views/settings.php:265
349
- msgid "Show subscribe?"
350
- msgstr "Afiseaza formular abonare?"
351
-
352
- #: views/settings.php:281
353
- msgid "Stats"
354
- msgstr "Statistici"
355
-
356
- #: views/settings.php:285
357
- #, php-format
358
- msgid "You have %d subscriber(s)"
359
- msgstr "Lista contine %d abonati"
360
-
361
- #: views/settings.php:290
362
- msgid "Export as CSV"
363
- msgstr "Exporta lista in format CSV"
364
-
365
- #: views/settings.php:297
366
- msgid "Social Networks"
367
- msgstr "Retele sociale"
368
-
369
- #: views/settings.php:302
370
- msgid "Show social networks?"
371
- msgstr "Afiseaza butoane retele sociale?"
372
-
373
- #: views/settings.php:311
374
- msgid "Links target?"
375
- msgstr "Target-ul link-urilor"
376
-
377
- #: views/settings.php:314
378
- msgid "New page"
379
- msgstr "Pagina noua"
380
-
381
- #: views/settings.php:315
382
- msgid "Same page"
383
- msgstr "Aceeasi pagina"
384
-
385
- #: views/settings.php:317
386
- msgid "Choose how the links will open."
387
- msgstr "Alege felul in care link-urile se vor deschide."
388
-
389
- #: views/settings.php:365
390
- msgid "Contact"
391
- msgstr "Contact"
392
-
393
- #: views/settings.php:370
394
- msgid "Show contact?"
395
- msgstr "Afiseaza contact ?"
396
-
397
- #: views/settings.php:379
398
- msgid "Email address"
399
- msgstr "Adresa de email"
400
-
401
- #: views/settings.php:385
402
- msgid "Effects"
403
- msgstr "Efecte"
404
-
405
- #: views/settings.php:388
406
- msgid "Move top - Move bottom"
407
- msgstr "Move top - Move bottom"
408
-
409
- #: views/settings.php:389
410
- msgid "Zoom - Zoomed"
411
- msgstr "Zoom - Zoomed"
412
-
413
- #: views/settings.php:390
414
- msgid "Fold - Unfold"
415
- msgstr "Fold - Unfold"
416
-
417
- #: views/settings.php:397
418
- msgid "Google Analytics"
419
- msgstr "Google Analytics"
420
-
421
- #: views/settings.php:402
422
- msgid "Use Google Analytics?"
423
- msgstr "Folosesti Google Analytics?"
424
-
425
- #: views/settings.php:411
426
- msgid "Tracking code"
427
- msgstr "Cod de monitorizare"
428
-
429
- #: views/sidebar.php:3
430
- msgid "Plugin Info"
431
- msgstr "Informatii plugin"
432
-
433
- #: views/sidebar.php:13
434
- msgid "Author"
435
- msgstr "Autor"
436
-
437
- #: views/sidebar.php:14
438
- msgid "Website"
439
- msgstr "Website"
440
-
441
- #: views/sidebar.php:15
442
- msgid "Twitter"
443
- msgstr "Twitter"
444
-
445
- #: views/sidebar.php:16
446
- msgid "GitHub"
447
- msgstr "GitHub"
448
-
449
- #: views/sidebar.php:22
450
- msgid "WordPress Themes"
451
- msgstr "Teme WordPress"
452
-
453
- #: views/sidebar.php:31
454
- msgid "Resources"
455
- msgstr "Resurse"
456
-
457
- #~ msgid "Subscribe now for early access to new WordPress themes."
458
- #~ msgstr "Aboneaza-te acum pentru a avea acces la noi teme WordPress"
459
-
460
- #~ msgid "Enter your email address"
461
- #~ msgstr "Completeaza adresa de email"
462
-
463
- #~ msgid "News"
464
- #~ msgstr "Stiri"
465
-
466
- #~ msgid "Developed by <a href=\"%s\">Designmodo</a>"
467
- #~ msgstr "Dezvoltat de <a href=\"%s\">Designmodo</a>"
468
-
469
- #~ msgid "Title"
470
- #~ msgstr "Titlu"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ msgid ""
2
+ msgstr ""
3
+ "Project-Id-Version: WP Maintenance Mode 2.0.4\n"
4
+ "POT-Creation-Date: 2016-06-17 03:34+0300\n"
5
+ "PO-Revision-Date: 2016-06-17 03:34+0300\n"
6
+ "Last-Translator: \n"
7
+ "Language-Team: Designmodo <info@designmodo.com>\n"
8
+ "Language: ro\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.8.8\n"
13
+ "X-Poedit-Basepath: ..\n"
14
+ "Plural-Forms: nplurals=3; plural=(n==1?0:(((n%100>19)||((n%100==0)&&(n!=0)))?"
15
+ "2:1));\n"
16
+ "X-Poedit-SourceCharset: UTF-8\n"
17
+ "X-Poedit-KeywordsList: __;_e;__ngettext:1,2;_n:1,2;__ngettext_noop:1,2;"
18
+ "_n_noop:1,2;_c,_nc:4c,1,2;_x:1,2c;_ex:1,2c;_nx:4c,1,2;_nx_noop:4c,1,2;"
19
+ "esc_attr__;esc_attr_e;esc_attr_x:1,2c;esc_html__;esc_html_e;esc_html_x:1,2c\n"
20
+ "X-Poedit-SearchPath-0: .\n"
21
+ "X-Poedit-SearchPath-1: includes/classes\n"
22
+ "X-Poedit-SearchPath-2: views\n"
23
+
24
+ #: includes/classes/wp-maintenance-mode-admin.php:121
25
+ #: includes/classes/wp-maintenance-mode-admin.php:159
26
+ #: includes/classes/wp-maintenance-mode-admin.php:181
27
+ msgid "You do not have access to this resource."
28
+ msgstr "Nu aveti acces la aceasta resursa."
29
+
30
+ #: includes/classes/wp-maintenance-mode-admin.php:165 views/settings.php:295
31
+ #, php-format
32
+ msgid "You have %d subscriber(s)"
33
+ msgstr "Lista contine %d abonati"
34
+
35
+ #: includes/classes/wp-maintenance-mode-admin.php:186
36
+ msgid "The tab slug must not be empty."
37
+ msgstr "Identificatorul tabului nu trebuie sa fie gol."
38
+
39
+ #: includes/classes/wp-maintenance-mode-admin.php:191
40
+ msgid "The tab slug must exist."
41
+ msgstr "Identificatorul tabului trebuie sa existe."
42
+
43
+ #: includes/classes/wp-maintenance-mode-admin.php:211
44
+ msgid "WP Maintenance Mode"
45
+ msgstr "WP Maintenance Mode"
46
+
47
+ #: includes/classes/wp-maintenance-mode-admin.php:425
48
+ msgid "Settings"
49
+ msgstr "Setari"
50
+
51
+ #: includes/classes/wp-maintenance-mode-admin.php:444
52
+ #, php-format
53
+ msgid ""
54
+ "The Maintenance Mode is <strong>active</strong>. Please don't forget to <a "
55
+ "href=\"%s\">deactivate</a> as soon as you are done."
56
+ msgstr ""
57
+ "Modul de mentenanta este <strong>activ</strong>. Nu uita sa-l <a href=\"%s"
58
+ "\">dezactivezi</a> imediat dupa ce termini."
59
+
60
+ #: includes/classes/wp-maintenance-mode-admin.php:481
61
+ msgid "Notice key cannot be empty."
62
+ msgstr "Cheia de identificare a notificarii nu trebuie sa fie goala."
63
+
64
+ #: includes/classes/wp-maintenance-mode.php:103
65
+ #: includes/classes/wp-maintenance-mode.php:104
66
+ msgid "Maintenance mode"
67
+ msgstr "Mentenanta"
68
+
69
+ #: includes/classes/wp-maintenance-mode.php:106
70
+ msgid ""
71
+ "<p>Sorry for the inconvenience.<br />Our website is currently undergoing "
72
+ "scheduled maintenance.<br />Thank you for your understanding.</p>"
73
+ msgstr ""
74
+ "<p>Ne cerem scuze pentru inconvenienta.<br />Site-ul nostru se afla in "
75
+ "mentenanta.<br />Multumim pentru intelegere.</p>"
76
+
77
+ #: includes/classes/wp-maintenance-mode.php:124
78
+ msgid "Notify me when it's ready"
79
+ msgstr "Notifica-ma atunci cand procesul de mentenanta este gata"
80
+
81
+ #: includes/classes/wp-maintenance-mode.php:259
82
+ #, php-format
83
+ msgid ""
84
+ "WP Maintenance Mode plugin was relaunched and you MUST revise <a href=\"%s"
85
+ "\">settings</a>."
86
+ msgstr ""
87
+ "Plugin-ul WP Maintenance Mode a fost relansat si TREBUIE sa revedeti <a href="
88
+ "\"%s\">setarile</a> acestuia."
89
+
90
+ #: includes/classes/wp-maintenance-mode.php:449
91
+ #: includes/classes/wp-maintenance-mode.php:463
92
+ msgid "Maintenance Mode"
93
+ msgstr "Mentenanta"
94
+
95
+ #: includes/classes/wp-maintenance-mode.php:687
96
+ #: includes/classes/wp-maintenance-mode.php:721 views/maintenance.php:85
97
+ msgid "Please enter a valid email address."
98
+ msgstr "Te rog sa completezi o adresa de email valida."
99
+
100
+ #: includes/classes/wp-maintenance-mode.php:699
101
+ msgid "You successfully subscribed. Thanks!"
102
+ msgstr "Te-ai inscris cu succes in lista de contacte. Multumesc!"
103
+
104
+ #: includes/classes/wp-maintenance-mode.php:717
105
+ msgid "All fields required."
106
+ msgstr "Toate campurile sunt obligatorii."
107
+
108
+ #: includes/classes/wp-maintenance-mode.php:726
109
+ msgid "Message via contact"
110
+ msgstr "Mesaj trimis prin formularul de contact"
111
+
112
+ #: includes/classes/wp-maintenance-mode.php:738
113
+ msgid "Your email was sent to the website administrator. Thanks!"
114
+ msgstr "Emailul tau a fost trimis catre administratorul site-ului. Multumim!"
115
+
116
+ #: views/contact.php:34
117
+ #, php-format
118
+ msgid "You have been contacted via %s."
119
+ msgstr "Ai fost contactat de pe blogul %s."
120
+
121
+ #: views/contact.php:50
122
+ msgid "Name:"
123
+ msgstr "Nume:"
124
+
125
+ #: views/contact.php:62
126
+ msgid "Email:"
127
+ msgstr "Email:"
128
+
129
+ #: views/contact.php:74
130
+ msgid "Content:"
131
+ msgstr "Continut:"
132
+
133
+ #: views/loginform.php:8
134
+ msgid "Login"
135
+ msgstr "Autentificare"
136
+
137
+ #: views/maintenance.php:42
138
+ msgid "your e-mail..."
139
+ msgstr "emailul tau..."
140
+
141
+ #: views/maintenance.php:43 views/settings.php:270
142
+ msgid "Subscribe"
143
+ msgstr "Aboneaza-ma"
144
+
145
+ #: views/maintenance.php:84 views/sidebar.php:7
146
+ msgid "Name"
147
+ msgstr "Nume"
148
+
149
+ #: views/maintenance.php:84 views/maintenance.php:85 views/maintenance.php:87
150
+ msgid "This field is required."
151
+ msgstr "Acest camp este obligatoriu."
152
+
153
+ #: views/maintenance.php:85
154
+ msgid "E-mail"
155
+ msgstr "E-Mail"
156
+
157
+ #: views/maintenance.php:87
158
+ msgid "Your message"
159
+ msgstr "Mesajul tau"
160
+
161
+ #: views/maintenance.php:88
162
+ msgid "Send"
163
+ msgstr "Trimite"
164
+
165
+ #: views/maintenance.php:93
166
+ msgid "Contact us"
167
+ msgstr "Contacteaza-ne"
168
+
169
+ #: views/maintenance.php:98
170
+ msgid "Dashboard"
171
+ msgstr "Admin"
172
+
173
+ #: views/settings.php:6
174
+ msgid "Settings saved."
175
+ msgstr "Setarile au fost salvate."
176
+
177
+ #: views/settings.php:13
178
+ msgid "General"
179
+ msgstr "General"
180
+
181
+ #: views/settings.php:14
182
+ msgid "Design"
183
+ msgstr "Design"
184
+
185
+ #: views/settings.php:15
186
+ msgid "Modules"
187
+ msgstr "Module"
188
+
189
+ #: views/settings.php:24
190
+ msgid "Status"
191
+ msgstr "Status"
192
+
193
+ #: views/settings.php:26
194
+ msgid "Activated"
195
+ msgstr "Activat"
196
+
197
+ #: views/settings.php:27
198
+ msgid "Deactivated"
199
+ msgstr "Dezactivat"
200
+
201
+ #: views/settings.php:31
202
+ msgid "Bypass for Search Bots"
203
+ msgstr "Nu afisa pagina de mentenanta robotilor motoarelor de cautare"
204
+
205
+ #: views/settings.php:34 views/settings.php:104 views/settings.php:114
206
+ #: views/settings.php:242 views/settings.php:278 views/settings.php:316
207
+ #: views/settings.php:384 views/settings.php:416
208
+ msgid "Yes"
209
+ msgstr "Da"
210
+
211
+ #: views/settings.php:35 views/settings.php:105 views/settings.php:115
212
+ #: views/settings.php:243 views/settings.php:279 views/settings.php:317
213
+ #: views/settings.php:385 views/settings.php:417
214
+ msgid "No"
215
+ msgstr "Nu"
216
+
217
+ #: views/settings.php:37
218
+ msgid "Allow Search Bots to bypass maintenance mode?"
219
+ msgstr ""
220
+ "Dai voie robotilor motoarelor de cautare sa acceseze site-ul, fara a vedea "
221
+ "pagina de mentenanta?"
222
+
223
+ #: views/settings.php:41
224
+ msgid "Backend Role"
225
+ msgstr "Rol interfata administrare"
226
+
227
+ #: views/settings.php:43 views/settings.php:59
228
+ msgid "Select role(s)"
229
+ msgstr "Selecteaza rol(urile)"
230
+
231
+ #: views/settings.php:53
232
+ msgid ""
233
+ "Which user role is allowed to access the backend of this blog? "
234
+ "Administrators will always have access."
235
+ msgstr ""
236
+ "Care rol are acces la partea de backend a acestui blog? Administratorii vor "
237
+ "avea intotdeauna acces."
238
+
239
+ #: views/settings.php:57
240
+ msgid "Frontend Role"
241
+ msgstr "Rol interfata publica"
242
+
243
+ #: views/settings.php:69
244
+ msgid ""
245
+ "Which user role is allowed to access the frontend of this blog? "
246
+ "Administrators will always have access."
247
+ msgstr ""
248
+ "Care rol are acces la partea de frontend a acestui blog? Administratorii vor "
249
+ "avea intotdeauna acces."
250
+
251
+ #: views/settings.php:73
252
+ msgid "Robots Meta Tag"
253
+ msgstr "Meta Tag-ul \"robots\""
254
+
255
+ #: views/settings.php:79
256
+ msgid ""
257
+ "The robots meta tag lets you use a granular, page-specific approach to "
258
+ "control how an individual page should be indexed and served to users in "
259
+ "search results."
260
+ msgstr ""
261
+ "Meta tag-ul \"robots\" permite controlul asupra felului in care motoarele de "
262
+ "cautare indexeaza si servesc rezultatele pentru o anumita pagina."
263
+
264
+ #: views/settings.php:83
265
+ msgid "Redirection"
266
+ msgstr "Redirectionare"
267
+
268
+ #: views/settings.php:86
269
+ msgid ""
270
+ "If you want to redirect a user (with no access to Dashboard/Backend) to a "
271
+ "URL (different from WordPress Dashboard URL) after login, then define a URL "
272
+ "(incl. http://)"
273
+ msgstr ""
274
+ "Daca vrei sa redirectezi un utilizator (care nu are acces la Dashboard/"
275
+ "Backend) catre un URL (diferit de URL-ul Wordpress Dashboard) dupa "
276
+ "autentificare, atunci defineste un URL (incepe cu http://)"
277
+
278
+ #: views/settings.php:90
279
+ msgid "Exclude"
280
+ msgstr "Exclude"
281
+
282
+ #: views/settings.php:97
283
+ msgid ""
284
+ "Exclude feed, pages, archives or IPs from maintenance mode. Add one slug / "
285
+ "IP per line!"
286
+ msgstr ""
287
+ "Exclude rss feed, pagini, arhive ori IP-uri din modul de mentenanta. Adauga "
288
+ "cate slug/IP pe linie."
289
+
290
+ #: views/settings.php:101
291
+ msgid "Notice"
292
+ msgstr "Atentionare"
293
+
294
+ #: views/settings.php:107
295
+ msgid "Do you want to see notices when maintenance mode is activated?"
296
+ msgstr ""
297
+ "Doresti sa vezi atentionarea atunci cand modul de mentenanta este activat?"
298
+
299
+ #: views/settings.php:111
300
+ msgid "Dashboard link"
301
+ msgstr "Link catre admin"
302
+
303
+ #: views/settings.php:117
304
+ msgid ""
305
+ "Do you want to add a link to the dashboard on your maintenance mode page?"
306
+ msgstr "Doresti sa adaugi un link catre admin pe pagina de mentenanta?"
307
+
308
+ #: views/settings.php:125 views/settings.php:228 views/settings.php:432
309
+ msgid "Save settings"
310
+ msgstr "Salveaza setari"
311
+
312
+ #: views/settings.php:126 views/settings.php:229 views/settings.php:433
313
+ msgid "Reset settings"
314
+ msgstr "Reseteaza setari"
315
+
316
+ #: views/settings.php:131
317
+ msgid "Content"
318
+ msgstr "Continut"
319
+
320
+ #: views/settings.php:136
321
+ msgid "Title (HTML tag)"
322
+ msgstr "Titlu (tag HTML)"
323
+
324
+ #: views/settings.php:142
325
+ msgid "Heading"
326
+ msgstr "Subtitlu"
327
+
328
+ #: views/settings.php:149 views/settings.php:284
329
+ msgid "Text"
330
+ msgstr "Text"
331
+
332
+ #: views/settings.php:169
333
+ msgid "Background"
334
+ msgstr "Fundal"
335
+
336
+ #: views/settings.php:174
337
+ msgid "Choose type"
338
+ msgstr "Alege tip"
339
+
340
+ #: views/settings.php:177
341
+ msgid "Custom color"
342
+ msgstr "Culoare"
343
+
344
+ #: views/settings.php:178
345
+ msgid "Uploaded background"
346
+ msgstr "Imagine de fundal urcata de utilizator"
347
+
348
+ #: views/settings.php:179
349
+ msgid "Predefined background"
350
+ msgstr "Imagine de fundal predefinita"
351
+
352
+ #: views/settings.php:184
353
+ msgid "Choose color"
354
+ msgstr "Alege culoare"
355
+
356
+ #: views/settings.php:190
357
+ msgid "Upload background"
358
+ msgstr "Incarca imagine"
359
+
360
+ #: views/settings.php:194
361
+ msgid "Backgrounds should have 1920x1280 px size."
362
+ msgstr "Imaginea ar trebui sa fie 1920x1280 px"
363
+
364
+ #: views/settings.php:199
365
+ msgid "Choose background"
366
+ msgstr "Alege imagine"
367
+
368
+ #: views/settings.php:201
369
+ #, php-format
370
+ msgid "source <a href=\"%s\" target=\"_blank\">Free Photos</a>"
371
+ msgstr "sursa <a href=\"%s\" target=\"_blank\">Free Photos</a>"
372
+
373
+ #: views/settings.php:234
374
+ msgid "Countdown"
375
+ msgstr "Countdown"
376
+
377
+ #: views/settings.php:239
378
+ msgid "Show countdown?"
379
+ msgstr "Afiseaza countdown?"
380
+
381
+ #: views/settings.php:248
382
+ msgid "Start date"
383
+ msgstr "Data de inceput"
384
+
385
+ #: views/settings.php:254
386
+ msgid "Countdown (remaining time)"
387
+ msgstr "Countdown (timpul ramas)"
388
+
389
+ #: views/settings.php:256
390
+ msgid "Days"
391
+ msgstr "Zile"
392
+
393
+ #: views/settings.php:257
394
+ msgid "Hours"
395
+ msgstr "Ore"
396
+
397
+ #: views/settings.php:258
398
+ msgid "Minutes"
399
+ msgstr "Minute"
400
+
401
+ #: views/settings.php:262
402
+ msgid "Color"
403
+ msgstr "Culoare"
404
+
405
+ #: views/settings.php:275
406
+ msgid "Show subscribe?"
407
+ msgstr "Afiseaza formular abonare?"
408
+
409
+ #: views/settings.php:291
410
+ msgid "Stats"
411
+ msgstr "Statistici"
412
+
413
+ #: views/settings.php:300
414
+ msgid "Export as CSV"
415
+ msgstr "Exporta lista in format CSV"
416
+
417
+ #: views/settings.php:301
418
+ msgid "Empty subscribers list"
419
+ msgstr "Goleste lista de contacte"
420
+
421
+ #: views/settings.php:308
422
+ msgid "Social Networks"
423
+ msgstr "Retele sociale"
424
+
425
+ #: views/settings.php:313
426
+ msgid "Show social networks?"
427
+ msgstr "Afiseaza butoane retele sociale?"
428
+
429
+ #: views/settings.php:322
430
+ msgid "Links target?"
431
+ msgstr "Target-ul link-urilor"
432
+
433
+ #: views/settings.php:325
434
+ msgid "New page"
435
+ msgstr "Pagina noua"
436
+
437
+ #: views/settings.php:326
438
+ msgid "Same page"
439
+ msgstr "Aceeasi pagina"
440
+
441
+ #: views/settings.php:328
442
+ msgid "Choose how the links will open."
443
+ msgstr "Alege felul in care link-urile se vor deschide."
444
+
445
+ #: views/settings.php:376
446
+ msgid "Contact"
447
+ msgstr "Contact"
448
+
449
+ #: views/settings.php:381
450
+ msgid "Show contact?"
451
+ msgstr "Afiseaza contact ?"
452
+
453
+ #: views/settings.php:390
454
+ msgid "Email address"
455
+ msgstr "Adresa de email"
456
+
457
+ #: views/settings.php:396
458
+ msgid "Effects"
459
+ msgstr "Efecte"
460
+
461
+ #: views/settings.php:399
462
+ msgid "Move top - Move bottom"
463
+ msgstr "Move top - Move bottom"
464
+
465
+ #: views/settings.php:400
466
+ msgid "Zoom - Zoomed"
467
+ msgstr "Zoom - Zoomed"
468
+
469
+ #: views/settings.php:401
470
+ msgid "Fold - Unfold"
471
+ msgstr "Fold - Unfold"
472
+
473
+ #: views/settings.php:408
474
+ msgid "Google Analytics"
475
+ msgstr "Google Analytics"
476
+
477
+ #: views/settings.php:413
478
+ msgid "Use Google Analytics?"
479
+ msgstr "Folosesti Google Analytics?"
480
+
481
+ #: views/settings.php:422
482
+ msgid "Tracking code"
483
+ msgstr "Cod de monitorizare"
484
+
485
+ #: views/sidebar.php:3
486
+ msgid "Plugin Info"
487
+ msgstr "Informatii plugin"
488
+
489
+ #: views/sidebar.php:13
490
+ msgid "Author"
491
+ msgstr "Autor"
492
+
493
+ #: views/sidebar.php:14
494
+ msgid "Website"
495
+ msgstr "Website"
496
+
497
+ #: views/sidebar.php:15
498
+ msgid "Twitter"
499
+ msgstr "Twitter"
500
+
501
+ #: views/sidebar.php:16
502
+ msgid "GitHub"
503
+ msgstr "GitHub"
504
+
505
+ #: views/sidebar.php:27
506
+ msgid "Other products"
507
+ msgstr "Alte produse"
508
+
509
+ #: views/sidebar.php:44
510
+ msgid "Resources"
511
+ msgstr "Resurse"
512
+
513
+ #~ msgid "You successfuly subscribed. Thanks!"
514
+ #~ msgstr "Ai fost abonat cu succes. Multumim!"
515
+
516
+ #~ msgid "Which user role is allowed to access the backend of this blog?"
517
+ #~ msgstr ""
518
+ #~ "Ce rol trebuie sa aiba utilizatorul pentru a putea accesa interfata de "
519
+ #~ "administrare acestui blog?"
520
+
521
+ #~ msgid "Which user role is allowed to access the frontend of this blog?"
522
+ #~ msgstr ""
523
+ #~ "Ce rol trebuie sa aiba utilizatorul pentru a putea accesa interfata "
524
+ #~ "publica acestui blog?"
525
+
526
+ #~ msgid ""
527
+ #~ "If you want to redirect a user to a URL (which is not the WordPress "
528
+ #~ "dashboard) after login, then define a URL (incl. http://)"
529
+ #~ msgstr ""
530
+ #~ "Daca doresti sa redirectionezi un utilizator catre un URL (diferit de "
531
+ #~ "WordPress dashboard) dupa ce acesta s-a autentificat, atunci defineste un "
532
+ #~ "URL (include http://). "
533
+
534
+ #~ msgid "source <a href=\"%\" target=\"_blank\">Free Photos</a>"
535
+ #~ msgstr "sursa <a href=\"%\" target=\"_blank\">Free Photos</a>"
536
+
537
+ #~ msgid "WordPress Themes"
538
+ #~ msgstr "Teme WordPress"
539
+
540
+ #~ msgid "Subscribe now for early access to new WordPress themes."
541
+ #~ msgstr "Aboneaza-te acum pentru a avea acces la noi teme WordPress"
542
+
543
+ #~ msgid "Enter your email address"
544
+ #~ msgstr "Completeaza adresa de email"
545
+
546
+ #~ msgid "News"
547
+ #~ msgstr "Stiri"
548
+
549
+ #~ msgid "Developed by <a href=\"%s\">Designmodo</a>"
550
+ #~ msgstr "Dezvoltat de <a href=\"%s\">Designmodo</a>"
551
+
552
+ #~ msgid "Title"
553
+ #~ msgstr "Titlu"
languages/wp-maintenance-mode-ru_RU.mo CHANGED
Binary file
languages/wp-maintenance-mode-ru_RU.po CHANGED
@@ -1,463 +1,538 @@
1
- msgid ""
2
- msgstr ""
3
- "Project-Id-Version: WP Maintenance Mode 2.0.3\n"
4
- "POT-Creation-Date: 2014-09-26 19:07+0200\n"
5
- "PO-Revision-Date: 2014-09-28 11:24+0200\n"
6
- "Last-Translator: Constantine Reeves <affectiosus@gmail.com>\n"
7
- "Language-Team: Designmodo <info@designmodo.com>\n"
8
- "Language: ru\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.9\n"
13
- "X-Poedit-Basepath: ../\n"
14
- "Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
15
- "%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
16
- "X-Poedit-SourceCharset: UTF-8\n"
17
- "X-Poedit-KeywordsList: __;_e\n"
18
- "X-Poedit-SearchPath-0: .\n"
19
- "X-Poedit-SearchPath-1: includes/classes\n"
20
- "X-Poedit-SearchPath-2: views\n"
21
-
22
- #: includes/classes/wp-maintenance-mode-admin.php:154
23
- msgid "WP Maintenance Mode"
24
- msgstr "Техническое обслуживание"
25
-
26
- #: includes/classes/wp-maintenance-mode-admin.php:358
27
- msgid "Settings"
28
- msgstr "Настройки"
29
-
30
- #: includes/classes/wp-maintenance-mode-admin.php:377
31
- #, php-format
32
- msgid ""
33
- "The Maintenance Mode is <strong>active</strong>. Please don't forget to <a "
34
- "href=\"%s\">deactivate</a> as soon as you are done."
35
- msgstr ""
36
- "Режим технического обслуживания <strong>включён</strong>. Не забудьте <a "
37
- "href=\"%s\">выключить</a> его, как только закончите."
38
-
39
- #: includes/classes/wp-maintenance-mode.php:100
40
- #: includes/classes/wp-maintenance-mode.php:101
41
- msgid "Maintenance mode"
42
- msgstr "Режим технического обслуживания"
43
-
44
- #: includes/classes/wp-maintenance-mode.php:103
45
- msgid ""
46
- "<p>Sorry for the inconvenience.<br />Our website is currently undergoing "
47
- "scheduled maintenance.<br />Thank you for your understanding.</p>"
48
- msgstr ""
49
- "<p>В данный момент сайт находится на техническом обслуживании.<br />Приносим "
50
- "извинения за временные неудобства.<br />Спасибо за понимание.</p>"
51
-
52
- #: includes/classes/wp-maintenance-mode.php:121
53
- msgid "Notify me when it's ready"
54
- msgstr "Сообщить о готовности"
55
-
56
- #: includes/classes/wp-maintenance-mode.php:249
57
- #, php-format
58
- msgid ""
59
- "WP Maintenance Mode plugin was relaunched and you MUST revise <a href=\"%s"
60
- "\">settings</a>."
61
- msgstr ""
62
- "Плагин технического обслуживания был перезапущен. Вам НЕОБХОДИМО "
63
- "пересмотреть <a href=\"%s\">настройки</a>."
64
-
65
- #: includes/classes/wp-maintenance-mode.php:425
66
- #: includes/classes/wp-maintenance-mode.php:439
67
- msgid "Maintenance Mode"
68
- msgstr "Режим технического обслуживания"
69
-
70
- #: includes/classes/wp-maintenance-mode.php:630
71
- #: includes/classes/wp-maintenance-mode.php:658
72
- msgid "Please enter a valid email address."
73
- msgstr "Введите корректный e-mail адрес."
74
-
75
- #: includes/classes/wp-maintenance-mode.php:641
76
- msgid "You successfuly subscribed. Thanks!"
77
- msgstr "Вы успешно подписались."
78
-
79
- #: includes/classes/wp-maintenance-mode.php:654
80
- msgid "All fields required."
81
- msgstr "Все поля обязательны."
82
-
83
- #: includes/classes/wp-maintenance-mode.php:675
84
- msgid "Message via contact"
85
- msgstr "Сообщение"
86
-
87
- #: includes/classes/wp-maintenance-mode.php:679
88
- msgid "Your email was sent to the website administrator. Thanks!"
89
- msgstr "Ваше сообщение отправлено администратору сайта. Спасибо!"
90
-
91
- #: views/loginform.php:8
92
- msgid "Login"
93
- msgstr "Войти"
94
-
95
- #: views/maintenance.php:41
96
- msgid "your e-mail..."
97
- msgstr "ваш e-mail..."
98
-
99
- #: views/maintenance.php:42 views/settings.php:260
100
- msgid "Subscribe"
101
- msgstr "Подписаться"
102
-
103
- #: views/maintenance.php:83 views/sidebar.php:7
104
- msgid "Name"
105
- msgstr "Имя"
106
-
107
- #: views/maintenance.php:84
108
- msgid "E-mail"
109
- msgstr "E-mail"
110
-
111
- #: views/maintenance.php:86
112
- msgid "Your message"
113
- msgstr "Ваше сообщение"
114
-
115
- #: views/maintenance.php:87
116
- msgid "Send"
117
- msgstr "Отправить"
118
-
119
- #: views/maintenance.php:92
120
- msgid "Contact us"
121
- msgstr "Свяжитесь с нами"
122
-
123
- #: views/maintenance.php:97
124
- msgid "Dashboard"
125
- msgstr "Панель управления"
126
-
127
- #: views/settings.php:6
128
- msgid "Settings saved."
129
- msgstr "Настройки сохранены."
130
-
131
- #: views/settings.php:13
132
- msgid "General"
133
- msgstr "Общие"
134
-
135
- #: views/settings.php:14
136
- msgid "Design"
137
- msgstr "Дизайн"
138
-
139
- #: views/settings.php:15
140
- msgid "Modules"
141
- msgstr "Модули"
142
-
143
- #: views/settings.php:24
144
- msgid "Status"
145
- msgstr "Статус"
146
-
147
- #: views/settings.php:26
148
- msgid "Activated"
149
- msgstr "Включено"
150
-
151
- #: views/settings.php:27
152
- msgid "Deactivated"
153
- msgstr "Отключено"
154
-
155
- #: views/settings.php:31
156
- msgid "Bypass for Search Bots"
157
- msgstr "Индексация роботами"
158
-
159
- #: views/settings.php:34 views/settings.php:94 views/settings.php:104
160
- #: views/settings.php:232 views/settings.php:268 views/settings.php:305
161
- #: views/settings.php:373 views/settings.php:405
162
- msgid "Yes"
163
- msgstr "Да"
164
-
165
- #: views/settings.php:35 views/settings.php:95 views/settings.php:105
166
- #: views/settings.php:233 views/settings.php:269 views/settings.php:306
167
- #: views/settings.php:374 views/settings.php:406
168
- msgid "No"
169
- msgstr "Нет"
170
-
171
- #: views/settings.php:37
172
- msgid "Allow Search Bots to bypass maintenance mode?"
173
- msgstr ""
174
- "Разрешить поисковым роботам индексацию сайта во время технического "
175
- "обслуживания?"
176
-
177
- #: views/settings.php:41
178
- msgid "Backend Role"
179
- msgstr "Доступ к панели управления"
180
-
181
- #: views/settings.php:48
182
- msgid "Which user role is allowed to access the backend of this blog?"
183
- msgstr "Кому разрешён доступ к backend сайта?"
184
-
185
- #: views/settings.php:52
186
- msgid "Frontend Role"
187
- msgstr "Доступ к сайту"
188
-
189
- #: views/settings.php:59
190
- msgid "Which user role is allowed to access the frontend of this blog?"
191
- msgstr "Кому разрешён доступ к frontend сайта?"
192
-
193
- #: views/settings.php:63
194
- msgid "Robots Meta Tag"
195
- msgstr "Метатэг для роботов"
196
-
197
- #: views/settings.php:69
198
- msgid ""
199
- "The robots meta tag lets you use a granular, page-specific approach to "
200
- "control how an individual page should be indexed and served to users in "
201
- "search results."
202
- msgstr ""
203
- "Метатэг для роботов позволяет Вам определить специфическое для каждой "
204
- "страницы индексирование и отображение пользователям в результатах поиска."
205
-
206
- #: views/settings.php:73
207
- msgid "Redirection"
208
- msgstr "Перенаправление"
209
-
210
- #: views/settings.php:76
211
- msgid ""
212
- "If you want to redirect a user to a URL (which is not the WordPress "
213
- "dashboard) after login, then define a URL (incl. http://)"
214
- msgstr ""
215
- "Если вы хотите перенаправить пользователей на другой сайт (и это не панель "
216
- "управления WordPress) после входа, укажите ссылку (включая http://)"
217
-
218
- #: views/settings.php:80
219
- msgid "Exclude"
220
- msgstr "Исключения"
221
-
222
- #: views/settings.php:87
223
- msgid ""
224
- "Exclude feed, pages, archives or IPs from maintenance mode. Add one slug / "
225
- "IP per line!"
226
- msgstr ""
227
- "Разрешите доступ к новостям (ленте), страницам, архивам или по IP во время "
228
- "технического обслуживания. Одна страница/IP на строке!"
229
-
230
- #: views/settings.php:91
231
- msgid "Notice"
232
- msgstr "Предупреждение"
233
-
234
- #: views/settings.php:97
235
- msgid "Do you want to see notices when maintenance mode is activated?"
236
- msgstr ""
237
- "Вы хотите видеть предупреждения, когда режим технического обслуживания "
238
- "включён?"
239
-
240
- #: views/settings.php:101
241
- msgid "Dashboard link"
242
- msgstr "Ссылка на панель управления"
243
-
244
- #: views/settings.php:107
245
- msgid ""
246
- "Do you want to add a link to the dashboard on your maintenance mode page?"
247
- msgstr ""
248
- "Вы хотите добавить ссылку на панель управления на странице технического "
249
- "обслуживания?"
250
-
251
- #: views/settings.php:115 views/settings.php:218 views/settings.php:421
252
- msgid "Save settings"
253
- msgstr "Сохранить настройки"
254
-
255
- #: views/settings.php:116 views/settings.php:219 views/settings.php:422
256
- msgid "Reset settings"
257
- msgstr "Сбросить настройки"
258
-
259
- #: views/settings.php:121
260
- msgid "Content"
261
- msgstr "Содержимое"
262
-
263
- #: views/settings.php:126
264
- msgid "Title (HTML tag)"
265
- msgstr "Название (тэг HTML)"
266
-
267
- #: views/settings.php:132
268
- msgid "Heading"
269
- msgstr "Заголовок"
270
-
271
- #: views/settings.php:139 views/settings.php:274
272
- msgid "Text"
273
- msgstr "Текст"
274
-
275
- #: views/settings.php:159
276
- msgid "Background"
277
- msgstr "Фон"
278
-
279
- #: views/settings.php:164
280
- msgid "Choose type"
281
- msgstr "Выберите тип"
282
-
283
- #: views/settings.php:167
284
- msgid "Custom color"
285
- msgstr "Другой цвет"
286
-
287
- #: views/settings.php:168
288
- msgid "Uploaded background"
289
- msgstr "Загруженный фон"
290
-
291
- #: views/settings.php:169
292
- msgid "Predefined background"
293
- msgstr "Предустановленный фон"
294
-
295
- #: views/settings.php:174
296
- msgid "Choose color"
297
- msgstr "Выберите цвет"
298
-
299
- #: views/settings.php:180
300
- msgid "Upload background"
301
- msgstr "Загрузить фон"
302
-
303
- #: views/settings.php:184
304
- msgid "Backgrounds should have 1920x1280 px size."
305
- msgstr "Фоновое изображение должно быть размера 1920x1080."
306
-
307
- #: views/settings.php:189
308
- msgid "Choose background"
309
- msgstr "Выберите фон"
310
-
311
- #: views/settings.php:191
312
- msgid "source <a href=\"%\" target=\"_blank\">Free Photos</a>"
313
- msgstr "источник: <a href=\"%\" target=\"_blank\">Free Photos</a>"
314
-
315
- #: views/settings.php:224
316
- msgid "Countdown"
317
- msgstr "Обратный отсчёт"
318
-
319
- #: views/settings.php:229
320
- msgid "Show countdown?"
321
- msgstr "Показывать обратный отсчёт?"
322
-
323
- #: views/settings.php:238
324
- msgid "Start date"
325
- msgstr "Дата начала"
326
-
327
- #: views/settings.php:244
328
- msgid "Countdown (remaining time)"
329
- msgstr "Обратный отсчёт (оставшееся время)"
330
-
331
- #: views/settings.php:246
332
- msgid "Days"
333
- msgstr "Дни"
334
-
335
- #: views/settings.php:247
336
- msgid "Hours"
337
- msgstr "Часы"
338
-
339
- #: views/settings.php:248
340
- msgid "Minutes"
341
- msgstr "Минуты"
342
-
343
- #: views/settings.php:252
344
- msgid "Color"
345
- msgstr "Цвет"
346
-
347
- #: views/settings.php:265
348
- msgid "Show subscribe?"
349
- msgstr "Отображать возможность подписки?"
350
-
351
- #: views/settings.php:281
352
- msgid "Stats"
353
- msgstr "Статистика"
354
-
355
- #: views/settings.php:285
356
- #, php-format
357
- msgid "You have %d subscriber(s)"
358
- msgstr "Подписчиков: %d"
359
-
360
- #: views/settings.php:290
361
- msgid "Export as CSV"
362
- msgstr "Экспорт в .csv"
363
-
364
- #: views/settings.php:297
365
- msgid "Social Networks"
366
- msgstr "Социальные сети"
367
-
368
- #: views/settings.php:302
369
- msgid "Show social networks?"
370
- msgstr "Отображать социальные сети?"
371
-
372
- #: views/settings.php:311
373
- msgid "Links target?"
374
- msgstr "Куда ведут ссылки?"
375
-
376
- #: views/settings.php:314
377
- msgid "New page"
378
- msgstr "Новая страница"
379
-
380
- #: views/settings.php:315
381
- msgid "Same page"
382
- msgstr "Такая же страница"
383
-
384
- #: views/settings.php:317
385
- msgid "Choose how the links will open."
386
- msgstr "Как будут открываться ссылки?"
387
-
388
- #: views/settings.php:365
389
- msgid "Contact"
390
- msgstr "Обратная связь"
391
-
392
- #: views/settings.php:370
393
- msgid "Show contact?"
394
- msgstr "Включить обратную связь?"
395
-
396
- #: views/settings.php:379
397
- msgid "Email address"
398
- msgstr "E-mail адрес"
399
-
400
- #: views/settings.php:385
401
- msgid "Effects"
402
- msgstr "Эффекты"
403
-
404
- #: views/settings.php:388
405
- msgid "Move top - Move bottom"
406
- msgstr "Сверху вниз"
407
-
408
- #: views/settings.php:389
409
- msgid "Zoom - Zoomed"
410
- msgstr "Увеличение"
411
-
412
- #: views/settings.php:390
413
- msgid "Fold - Unfold"
414
- msgstr "Поворот"
415
-
416
- #: views/settings.php:397
417
- msgid "Google Analytics"
418
- msgstr "Google Analytics"
419
-
420
- #: views/settings.php:402
421
- msgid "Use Google Analytics?"
422
- msgstr "Использовать Google Analytics?"
423
-
424
- #: views/settings.php:411
425
- msgid "Tracking code"
426
- msgstr "Код слежения"
427
-
428
- #: views/sidebar.php:3
429
- msgid "Plugin Info"
430
- msgstr "Информация о плагине"
431
-
432
- #: views/sidebar.php:13
433
- msgid "Author"
434
- msgstr "Автор"
435
-
436
- #: views/sidebar.php:14
437
- msgid "Website"
438
- msgstr "Веб-сайт"
439
-
440
- #: views/sidebar.php:15
441
- msgid "Twitter"
442
- msgstr "Twitter"
443
-
444
- #: views/sidebar.php:16
445
- msgid "GitHub"
446
- msgstr "GitHub"
447
-
448
- #: views/sidebar.php:22
449
- msgid "WordPress Themes"
450
- msgstr "Темы WordPress"
451
-
452
- #: views/sidebar.php:31
453
- msgid "Resources"
454
- msgstr "Ресурсы"
455
-
456
- #~ msgid "Subscribe now for early access to new WordPress themes."
457
- #~ msgstr "Подпишитесь, чтобы заранее узнать о новых темах для WordPress."
458
-
459
- #~ msgid "Enter your email address"
460
- #~ msgstr "Введите ваш e-mail адрес"
461
-
462
- #~ msgid "News"
463
- #~ msgstr "Новости"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ msgid ""
2
+ msgstr ""
3
+ "Project-Id-Version: WP Maintenance Mode 2.0.4\n"
4
+ "POT-Creation-Date: 2016-06-17 03:35+0300\n"
5
+ "PO-Revision-Date: 2016-06-17 03:35+0300\n"
6
+ "Last-Translator: Constantine Reeves <affectiosus@gmail.com>\n"
7
+ "Language-Team: Designmodo <info@designmodo.com>\n"
8
+ "Language: ru\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.8.8\n"
13
+ "X-Poedit-Basepath: ..\n"
14
+ "Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
15
+ "%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
16
+ "X-Poedit-SourceCharset: UTF-8\n"
17
+ "X-Poedit-KeywordsList: __;_e;__ngettext:1,2;_n:1,2;__ngettext_noop:1,2;"
18
+ "_n_noop:1,2;_c,_nc:4c,1,2;_x:1,2c;_ex:1,2c;_nx:4c,1,2;_nx_noop:4c,1,2;"
19
+ "esc_attr__;esc_attr_e;esc_attr_x:1,2c;esc_html__;esc_html_e;esc_html_x:1,2c\n"
20
+ "X-Poedit-SearchPath-0: .\n"
21
+ "X-Poedit-SearchPath-1: includes/classes\n"
22
+ "X-Poedit-SearchPath-2: views\n"
23
+
24
+ #: includes/classes/wp-maintenance-mode-admin.php:121
25
+ #: includes/classes/wp-maintenance-mode-admin.php:159
26
+ #: includes/classes/wp-maintenance-mode-admin.php:181
27
+ msgid "You do not have access to this resource."
28
+ msgstr ""
29
+
30
+ #: includes/classes/wp-maintenance-mode-admin.php:165 views/settings.php:295
31
+ #, php-format
32
+ msgid "You have %d subscriber(s)"
33
+ msgstr "Подписчиков: %d"
34
+
35
+ #: includes/classes/wp-maintenance-mode-admin.php:186
36
+ msgid "The tab slug must not be empty."
37
+ msgstr ""
38
+
39
+ #: includes/classes/wp-maintenance-mode-admin.php:191
40
+ msgid "The tab slug must exist."
41
+ msgstr ""
42
+
43
+ #: includes/classes/wp-maintenance-mode-admin.php:211
44
+ msgid "WP Maintenance Mode"
45
+ msgstr "Техническое обслуживание"
46
+
47
+ #: includes/classes/wp-maintenance-mode-admin.php:425
48
+ msgid "Settings"
49
+ msgstr "Настройки"
50
+
51
+ #: includes/classes/wp-maintenance-mode-admin.php:444
52
+ #, php-format
53
+ msgid ""
54
+ "The Maintenance Mode is <strong>active</strong>. Please don't forget to <a "
55
+ "href=\"%s\">deactivate</a> as soon as you are done."
56
+ msgstr ""
57
+ "Режим технического обслуживания <strong>включён</strong>. Не забудьте <a "
58
+ "href=\"%s\">выключить</a> его, как только закончите."
59
+
60
+ #: includes/classes/wp-maintenance-mode-admin.php:481
61
+ msgid "Notice key cannot be empty."
62
+ msgstr ""
63
+
64
+ #: includes/classes/wp-maintenance-mode.php:103
65
+ #: includes/classes/wp-maintenance-mode.php:104
66
+ msgid "Maintenance mode"
67
+ msgstr "Режим технического обслуживания"
68
+
69
+ #: includes/classes/wp-maintenance-mode.php:106
70
+ msgid ""
71
+ "<p>Sorry for the inconvenience.<br />Our website is currently undergoing "
72
+ "scheduled maintenance.<br />Thank you for your understanding.</p>"
73
+ msgstr ""
74
+ "<p>В данный момент сайт находится на техническом обслуживании.<br />Приносим "
75
+ "извинения за временные неудобства.<br />Спасибо за понимание.</p>"
76
+
77
+ #: includes/classes/wp-maintenance-mode.php:124
78
+ msgid "Notify me when it's ready"
79
+ msgstr "Сообщить о готовности"
80
+
81
+ #: includes/classes/wp-maintenance-mode.php:259
82
+ #, php-format
83
+ msgid ""
84
+ "WP Maintenance Mode plugin was relaunched and you MUST revise <a href=\"%s"
85
+ "\">settings</a>."
86
+ msgstr ""
87
+ "Плагин технического обслуживания был перезапущен. Вам НЕОБХОДИМО "
88
+ "пересмотреть <a href=\"%s\">настройки</a>."
89
+
90
+ #: includes/classes/wp-maintenance-mode.php:449
91
+ #: includes/classes/wp-maintenance-mode.php:463
92
+ msgid "Maintenance Mode"
93
+ msgstr "Режим технического обслуживания"
94
+
95
+ #: includes/classes/wp-maintenance-mode.php:687
96
+ #: includes/classes/wp-maintenance-mode.php:721 views/maintenance.php:85
97
+ msgid "Please enter a valid email address."
98
+ msgstr "Введите корректный e-mail адрес."
99
+
100
+ #: includes/classes/wp-maintenance-mode.php:699
101
+ msgid "You successfully subscribed. Thanks!"
102
+ msgstr ""
103
+
104
+ #: includes/classes/wp-maintenance-mode.php:717
105
+ msgid "All fields required."
106
+ msgstr "Все поля обязательны."
107
+
108
+ #: includes/classes/wp-maintenance-mode.php:726
109
+ msgid "Message via contact"
110
+ msgstr "Сообщение"
111
+
112
+ #: includes/classes/wp-maintenance-mode.php:738
113
+ msgid "Your email was sent to the website administrator. Thanks!"
114
+ msgstr "Ваше сообщение отправлено администратору сайта. Спасибо!"
115
+
116
+ #: views/contact.php:34
117
+ #, php-format
118
+ msgid "You have been contacted via %s."
119
+ msgstr ""
120
+
121
+ #: views/contact.php:50
122
+ msgid "Name:"
123
+ msgstr ""
124
+
125
+ #: views/contact.php:62
126
+ msgid "Email:"
127
+ msgstr ""
128
+
129
+ #: views/contact.php:74
130
+ msgid "Content:"
131
+ msgstr ""
132
+
133
+ #: views/loginform.php:8
134
+ msgid "Login"
135
+ msgstr "Войти"
136
+
137
+ #: views/maintenance.php:42
138
+ msgid "your e-mail..."
139
+ msgstr "ваш e-mail..."
140
+
141
+ #: views/maintenance.php:43 views/settings.php:270
142
+ msgid "Subscribe"
143
+ msgstr "Подписаться"
144
+
145
+ #: views/maintenance.php:84 views/sidebar.php:7
146
+ msgid "Name"
147
+ msgstr "Имя"
148
+
149
+ #: views/maintenance.php:84 views/maintenance.php:85 views/maintenance.php:87
150
+ msgid "This field is required."
151
+ msgstr ""
152
+
153
+ #: views/maintenance.php:85
154
+ msgid "E-mail"
155
+ msgstr "E-mail"
156
+
157
+ #: views/maintenance.php:87
158
+ msgid "Your message"
159
+ msgstr "Ваше сообщение"
160
+
161
+ #: views/maintenance.php:88
162
+ msgid "Send"
163
+ msgstr "Отправить"
164
+
165
+ #: views/maintenance.php:93
166
+ msgid "Contact us"
167
+ msgstr "Свяжитесь с нами"
168
+
169
+ #: views/maintenance.php:98
170
+ msgid "Dashboard"
171
+ msgstr "Панель управления"
172
+
173
+ #: views/settings.php:6
174
+ msgid "Settings saved."
175
+ msgstr "Настройки сохранены."
176
+
177
+ #: views/settings.php:13
178
+ msgid "General"
179
+ msgstr "Общие"
180
+
181
+ #: views/settings.php:14
182
+ msgid "Design"
183
+ msgstr "Дизайн"
184
+
185
+ #: views/settings.php:15
186
+ msgid "Modules"
187
+ msgstr "Модули"
188
+
189
+ #: views/settings.php:24
190
+ msgid "Status"
191
+ msgstr "Статус"
192
+
193
+ #: views/settings.php:26
194
+ msgid "Activated"
195
+ msgstr "Включено"
196
+
197
+ #: views/settings.php:27
198
+ msgid "Deactivated"
199
+ msgstr "Отключено"
200
+
201
+ #: views/settings.php:31
202
+ msgid "Bypass for Search Bots"
203
+ msgstr "Индексация роботами"
204
+
205
+ #: views/settings.php:34 views/settings.php:104 views/settings.php:114
206
+ #: views/settings.php:242 views/settings.php:278 views/settings.php:316
207
+ #: views/settings.php:384 views/settings.php:416
208
+ msgid "Yes"
209
+ msgstr "Да"
210
+
211
+ #: views/settings.php:35 views/settings.php:105 views/settings.php:115
212
+ #: views/settings.php:243 views/settings.php:279 views/settings.php:317
213
+ #: views/settings.php:385 views/settings.php:417
214
+ msgid "No"
215
+ msgstr "Нет"
216
+
217
+ #: views/settings.php:37
218
+ msgid "Allow Search Bots to bypass maintenance mode?"
219
+ msgstr ""
220
+ "Разрешить поисковым роботам индексацию сайта во время технического "
221
+ "обслуживания?"
222
+
223
+ #: views/settings.php:41
224
+ msgid "Backend Role"
225
+ msgstr "Доступ к панели управления"
226
+
227
+ #: views/settings.php:43 views/settings.php:59
228
+ msgid "Select role(s)"
229
+ msgstr ""
230
+
231
+ #: views/settings.php:53
232
+ msgid ""
233
+ "Which user role is allowed to access the backend of this blog? "
234
+ "Administrators will always have access."
235
+ msgstr ""
236
+
237
+ #: views/settings.php:57
238
+ msgid "Frontend Role"
239
+ msgstr "Доступ к сайту"
240
+
241
+ #: views/settings.php:69
242
+ msgid ""
243
+ "Which user role is allowed to access the frontend of this blog? "
244
+ "Administrators will always have access."
245
+ msgstr ""
246
+
247
+ #: views/settings.php:73
248
+ msgid "Robots Meta Tag"
249
+ msgstr "Метатэг для роботов"
250
+
251
+ #: views/settings.php:79
252
+ msgid ""
253
+ "The robots meta tag lets you use a granular, page-specific approach to "
254
+ "control how an individual page should be indexed and served to users in "
255
+ "search results."
256
+ msgstr ""
257
+ "Метатэг для роботов позволяет Вам определить специфическое для каждой "
258
+ "страницы индексирование и отображение пользователям в результатах поиска."
259
+
260
+ #: views/settings.php:83
261
+ msgid "Redirection"
262
+ msgstr "Перенаправление"
263
+
264
+ #: views/settings.php:86
265
+ msgid ""
266
+ "If you want to redirect a user (with no access to Dashboard/Backend) to a "
267
+ "URL (different from WordPress Dashboard URL) after login, then define a URL "
268
+ "(incl. http://)"
269
+ msgstr ""
270
+
271
+ #: views/settings.php:90
272
+ msgid "Exclude"
273
+ msgstr "Исключения"
274
+
275
+ #: views/settings.php:97
276
+ msgid ""
277
+ "Exclude feed, pages, archives or IPs from maintenance mode. Add one slug / "
278
+ "IP per line!"
279
+ msgstr ""
280
+ "Разрешите доступ к новостям (ленте), страницам, архивам или по IP во время "
281
+ "технического обслуживания. Одна страница/IP на строке!"
282
+
283
+ #: views/settings.php:101
284
+ msgid "Notice"
285
+ msgstr "Предупреждение"
286
+
287
+ #: views/settings.php:107
288
+ msgid "Do you want to see notices when maintenance mode is activated?"
289
+ msgstr ""
290
+ "Вы хотите видеть предупреждения, когда режим технического обслуживания "
291
+ "включён?"
292
+
293
+ #: views/settings.php:111
294
+ msgid "Dashboard link"
295
+ msgstr "Ссылка на панель управления"
296
+
297
+ #: views/settings.php:117
298
+ msgid ""
299
+ "Do you want to add a link to the dashboard on your maintenance mode page?"
300
+ msgstr ""
301
+ "Вы хотите добавить ссылку на панель управления на странице технического "
302
+ "обслуживания?"
303
+
304
+ #: views/settings.php:125 views/settings.php:228 views/settings.php:432
305
+ msgid "Save settings"
306
+ msgstr "Сохранить настройки"
307
+
308
+ #: views/settings.php:126 views/settings.php:229 views/settings.php:433
309
+ msgid "Reset settings"
310
+ msgstr "Сбросить настройки"
311
+
312
+ #: views/settings.php:131
313
+ msgid "Content"
314
+ msgstr "Содержимое"
315
+
316
+ #: views/settings.php:136
317
+ msgid "Title (HTML tag)"
318
+ msgstr "Название (тэг HTML)"
319
+
320
+ #: views/settings.php:142
321
+ msgid "Heading"
322
+ msgstr "Заголовок"
323
+
324
+ #: views/settings.php:149 views/settings.php:284
325
+ msgid "Text"
326
+ msgstr "Текст"
327
+
328
+ #: views/settings.php:169
329
+ msgid "Background"
330
+ msgstr "Фон"
331
+
332
+ #: views/settings.php:174
333
+ msgid "Choose type"
334
+ msgstr "Выберите тип"
335
+
336
+ #: views/settings.php:177
337
+ msgid "Custom color"
338
+ msgstr "Другой цвет"
339
+
340
+ #: views/settings.php:178
341
+ msgid "Uploaded background"
342
+ msgstr "Загруженный фон"
343
+
344
+ #: views/settings.php:179
345
+ msgid "Predefined background"
346
+ msgstr "Предустановленный фон"
347
+
348
+ #: views/settings.php:184
349
+ msgid "Choose color"
350
+ msgstr "Выберите цвет"
351
+
352
+ #: views/settings.php:190
353
+ msgid "Upload background"
354
+ msgstr "Загрузить фон"
355
+
356
+ #: views/settings.php:194
357
+ msgid "Backgrounds should have 1920x1280 px size."
358
+ msgstr "Фоновое изображение должно быть размера 1920x1080."
359
+
360
+ #: views/settings.php:199
361
+ msgid "Choose background"
362
+ msgstr "Выберите фон"
363
+
364
+ #: views/settings.php:201
365
+ #, php-format
366
+ msgid "source <a href=\"%s\" target=\"_blank\">Free Photos</a>"
367
+ msgstr ""
368
+
369
+ #: views/settings.php:234
370
+ msgid "Countdown"
371
+ msgstr "Обратный отсчёт"
372
+
373
+ #: views/settings.php:239
374
+ msgid "Show countdown?"
375
+ msgstr "Показывать обратный отсчёт?"
376
+
377
+ #: views/settings.php:248
378
+ msgid "Start date"
379
+ msgstr "Дата начала"
380
+
381
+ #: views/settings.php:254
382
+ msgid "Countdown (remaining time)"
383
+ msgstr "Обратный отсчёт (оставшееся время)"
384
+
385
+ #: views/settings.php:256
386
+ msgid "Days"
387
+ msgstr "Дни"
388
+
389
+ #: views/settings.php:257
390
+ msgid "Hours"
391
+ msgstr "Часы"
392
+
393
+ #: views/settings.php:258
394
+ msgid "Minutes"
395
+ msgstr "Минуты"
396
+
397
+ #: views/settings.php:262
398
+ msgid "Color"
399
+ msgstr "Цвет"
400
+
401
+ #: views/settings.php:275
402
+ msgid "Show subscribe?"
403
+ msgstr "Отображать возможность подписки?"
404
+
405
+ #: views/settings.php:291
406
+ msgid "Stats"
407
+ msgstr "Статистика"
408
+
409
+ #: views/settings.php:300
410
+ msgid "Export as CSV"
411
+ msgstr "Экспорт в .csv"
412
+
413
+ #: views/settings.php:301
414
+ msgid "Empty subscribers list"
415
+ msgstr ""
416
+
417
+ #: views/settings.php:308
418
+ msgid "Social Networks"
419
+ msgstr "Социальные сети"
420
+
421
+ #: views/settings.php:313
422
+ msgid "Show social networks?"
423
+ msgstr "Отображать социальные сети?"
424
+
425
+ #: views/settings.php:322
426
+ msgid "Links target?"
427
+ msgstr "Куда ведут ссылки?"
428
+
429
+ #: views/settings.php:325
430
+ msgid "New page"
431
+ msgstr "Новая страница"
432
+
433
+ #: views/settings.php:326
434
+ msgid "Same page"
435
+ msgstr "Такая же страница"
436
+
437
+ #: views/settings.php:328
438
+ msgid "Choose how the links will open."
439
+ msgstr "Как будут открываться ссылки?"
440
+
441
+ #: views/settings.php:376
442
+ msgid "Contact"
443
+ msgstr "Обратная связь"
444
+
445
+ #: views/settings.php:381
446
+ msgid "Show contact?"
447
+ msgstr "Включить обратную связь?"
448
+
449
+ #: views/settings.php:390
450
+ msgid "Email address"
451
+ msgstr "E-mail адрес"
452
+
453
+ #: views/settings.php:396
454
+ msgid "Effects"
455
+ msgstr "Эффекты"
456
+
457
+ #: views/settings.php:399
458
+ msgid "Move top - Move bottom"
459
+ msgstr "Сверху вниз"
460
+
461
+ #: views/settings.php:400
462
+ msgid "Zoom - Zoomed"
463
+ msgstr "Увеличение"
464
+
465
+ #: views/settings.php:401
466
+ msgid "Fold - Unfold"
467
+ msgstr "Поворот"
468
+
469
+ #: views/settings.php:408
470
+ msgid "Google Analytics"
471
+ msgstr "Google Analytics"
472
+
473
+ #: views/settings.php:413
474
+ msgid "Use Google Analytics?"
475
+ msgstr "Использовать Google Analytics?"
476
+
477
+ #: views/settings.php:422
478
+ msgid "Tracking code"
479
+ msgstr "Код слежения"
480
+
481
+ #: views/sidebar.php:3
482
+ msgid "Plugin Info"
483
+ msgstr "Информация о плагине"
484
+
485
+ #: views/sidebar.php:13
486
+ msgid "Author"
487
+ msgstr "Автор"
488
+
489
+ #: views/sidebar.php:14
490
+ msgid "Website"
491
+ msgstr "Веб-сайт"
492
+
493
+ #: views/sidebar.php:15
494
+ msgid "Twitter"
495
+ msgstr "Twitter"
496
+
497
+ #: views/sidebar.php:16
498
+ msgid "GitHub"
499
+ msgstr "GitHub"
500
+
501
+ #: views/sidebar.php:27
502
+ msgid "Other products"
503
+ msgstr ""
504
+
505
+ #: views/sidebar.php:44
506
+ msgid "Resources"
507
+ msgstr "Ресурсы"
508
+
509
+ #~ msgid "You successfuly subscribed. Thanks!"
510
+ #~ msgstr "Вы успешно подписались."
511
+
512
+ #~ msgid "Which user role is allowed to access the backend of this blog?"
513
+ #~ msgstr "Кому разрешён доступ к backend сайта?"
514
+
515
+ #~ msgid "Which user role is allowed to access the frontend of this blog?"
516
+ #~ msgstr "Кому разрешён доступ к frontend сайта?"
517
+
518
+ #~ msgid ""
519
+ #~ "If you want to redirect a user to a URL (which is not the WordPress "
520
+ #~ "dashboard) after login, then define a URL (incl. http://)"
521
+ #~ msgstr ""
522
+ #~ "Если вы хотите перенаправить пользователей на другой сайт (и это не "
523
+ #~ "панель управления WordPress) после входа, укажите ссылку (включая http://)"
524
+
525
+ #~ msgid "source <a href=\"%\" target=\"_blank\">Free Photos</a>"
526
+ #~ msgstr "источник: <a href=\"%\" target=\"_blank\">Free Photos</a>"
527
+
528
+ #~ msgid "WordPress Themes"
529
+ #~ msgstr "Темы WordPress"
530
+
531
+ #~ msgid "Subscribe now for early access to new WordPress themes."
532
+ #~ msgstr "Подпишитесь, чтобы заранее узнать о новых темах для WordPress."
533
+
534
+ #~ msgid "Enter your email address"
535
+ #~ msgstr "Введите ваш e-mail адрес"
536
+
537
+ #~ msgid "News"
538
+ #~ msgstr "Новости"
languages/wp-maintenance-mode-sv_SE.mo CHANGED
Binary file
languages/wp-maintenance-mode-sv_SE.po CHANGED
@@ -1,457 +1,529 @@
1
- msgid ""
2
- msgstr ""
3
- "Project-Id-Version: WP Maintenance Mode 2.0.3\n"
4
- "POT-Creation-Date: 2014-09-26 19:07+0200\n"
5
- "PO-Revision-Date: 2014-09-26 19:07+0200\n"
6
- "Last-Translator: Andréas Lundgren <adevade@gmail.com>\n"
7
- "Language-Team: Designmodo <info@designmodo.com>\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.7\n"
13
- "X-Poedit-Basepath: ../\n"
14
- "Plural-Forms: nplurals=2; plural=(n != 1);\n"
15
- "X-Poedit-SourceCharset: UTF-8\n"
16
- "X-Poedit-KeywordsList: __;_e\n"
17
- "X-Poedit-SearchPath-0: .\n"
18
- "X-Poedit-SearchPath-1: includes/classes\n"
19
- "X-Poedit-SearchPath-2: views\n"
20
-
21
- #: includes/classes/wp-maintenance-mode-admin.php:154
22
- msgid "WP Maintenance Mode"
23
- msgstr "WP Underhållsläge"
24
-
25
- #: includes/classes/wp-maintenance-mode-admin.php:358
26
- msgid "Settings"
27
- msgstr "Inställningar"
28
-
29
- #: includes/classes/wp-maintenance-mode-admin.php:377
30
- #, php-format
31
- msgid ""
32
- "The Maintenance Mode is <strong>active</strong>. Please don't forget to <a "
33
- "href=\"%s\">deactivate</a> as soon as you are done."
34
- msgstr ""
35
- "Underhållsläget är <strong>aktiverat</strong>. Glöm inte att <a href=\"%s"
36
- "\">avaktivera</a> det när du är klar."
37
-
38
- #: includes/classes/wp-maintenance-mode.php:100
39
- #: includes/classes/wp-maintenance-mode.php:101
40
- msgid "Maintenance mode"
41
- msgstr "Underhållsläge"
42
-
43
- #: includes/classes/wp-maintenance-mode.php:103
44
- msgid ""
45
- "<p>Sorry for the inconvenience.<br />Our website is currently undergoing "
46
- "scheduled maintenance.<br />Thank you for your understanding.</p>"
47
- msgstr ""
48
- "<p>Ledsen för besväret.<br />Vår hemsida ligger för närvarande i "
49
- "underhållsläge.<br />Tack för att ni förstår.</p>"
50
-
51
- #: includes/classes/wp-maintenance-mode.php:121
52
- msgid "Notify me when it's ready"
53
- msgstr "Meddela mig när sidan är färdig"
54
-
55
- #: includes/classes/wp-maintenance-mode.php:249
56
- #, php-format
57
- msgid ""
58
- "WP Maintenance Mode plugin was relaunched and you MUST revise <a href=\"%s"
59
- "\">settings</a>."
60
- msgstr ""
61
- "Tillägget WP Underhållsläge återlanserades nyligen med massa nya <a href=\"%s"
62
- "\">inställningar</a>."
63
-
64
- #: includes/classes/wp-maintenance-mode.php:425
65
- #: includes/classes/wp-maintenance-mode.php:439
66
- msgid "Maintenance Mode"
67
- msgstr "Underhållsläge"
68
-
69
- #: includes/classes/wp-maintenance-mode.php:630
70
- #: includes/classes/wp-maintenance-mode.php:658
71
- msgid "Please enter a valid email address."
72
- msgstr "Vänligen fyll i en giltig e-postadress. "
73
-
74
- #: includes/classes/wp-maintenance-mode.php:641
75
- msgid "You successfuly subscribed. Thanks!"
76
- msgstr "Din e-post registrerades. Tack! "
77
-
78
- #: includes/classes/wp-maintenance-mode.php:654
79
- msgid "All fields required."
80
- msgstr "Vänligen fyll i alla fält."
81
-
82
- #: includes/classes/wp-maintenance-mode.php:675
83
- msgid "Message via contact"
84
- msgstr "Meddelande från underhållsläget"
85
-
86
- #: includes/classes/wp-maintenance-mode.php:679
87
- msgid "Your email was sent to the website administrator. Thanks!"
88
- msgstr "Ditt meddelande skickades till hemsidans ägare. Tack! "
89
-
90
- #: views/loginform.php:8
91
- msgid "Login"
92
- msgstr ""
93
-
94
- #: views/maintenance.php:41
95
- msgid "your e-mail..."
96
- msgstr "Din e-postadress..."
97
-
98
- #: views/maintenance.php:42 views/settings.php:260
99
- msgid "Subscribe"
100
- msgstr "Prenumerera"
101
-
102
- #: views/maintenance.php:83 views/sidebar.php:7
103
- msgid "Name"
104
- msgstr "Namn"
105
-
106
- #: views/maintenance.php:84
107
- msgid "E-mail"
108
- msgstr "E-post"
109
-
110
- #: views/maintenance.php:86
111
- msgid "Your message"
112
- msgstr "Ditt meddelande"
113
-
114
- #: views/maintenance.php:87
115
- msgid "Send"
116
- msgstr "Skicka"
117
-
118
- #: views/maintenance.php:92
119
- msgid "Contact us"
120
- msgstr "Kontakta oss"
121
-
122
- #: views/maintenance.php:97
123
- msgid "Dashboard"
124
- msgstr ""
125
-
126
- #: views/settings.php:6
127
- msgid "Settings saved."
128
- msgstr "Inställningarna sparades."
129
-
130
- #: views/settings.php:13
131
- msgid "General"
132
- msgstr "Allmänt"
133
-
134
- #: views/settings.php:14
135
- msgid "Design"
136
- msgstr "Design"
137
-
138
- #: views/settings.php:15
139
- msgid "Modules"
140
- msgstr "Moduler"
141
-
142
- #: views/settings.php:24
143
- msgid "Status"
144
- msgstr "Status"
145
-
146
- #: views/settings.php:26
147
- msgid "Activated"
148
- msgstr "Aktiverad"
149
-
150
- #: views/settings.php:27
151
- msgid "Deactivated"
152
- msgstr "Avaktiverad"
153
-
154
- #: views/settings.php:31
155
- msgid "Bypass for Search Bots"
156
- msgstr "Låt sökrobotar gå förbi"
157
-
158
- #: views/settings.php:34 views/settings.php:94 views/settings.php:104
159
- #: views/settings.php:232 views/settings.php:268 views/settings.php:305
160
- #: views/settings.php:373 views/settings.php:405
161
- msgid "Yes"
162
- msgstr "Ja"
163
-
164
- #: views/settings.php:35 views/settings.php:95 views/settings.php:105
165
- #: views/settings.php:233 views/settings.php:269 views/settings.php:306
166
- #: views/settings.php:374 views/settings.php:406
167
- msgid "No"
168
- msgstr "Nej"
169
-
170
- #: views/settings.php:37
171
- msgid "Allow Search Bots to bypass maintenance mode?"
172
- msgstr "Tillåt sökrobotar att gå förbi underhållsläget? "
173
-
174
- #: views/settings.php:41
175
- msgid "Backend Role"
176
- msgstr "Back end-roll"
177
-
178
- #: views/settings.php:48
179
- msgid "Which user role is allowed to access the backend of this blog?"
180
- msgstr "Vilken användarroll får tillgång till back end av denna hemsidan?"
181
-
182
- #: views/settings.php:52
183
- msgid "Frontend Role"
184
- msgstr "Front end-roll"
185
-
186
- #: views/settings.php:59
187
- msgid "Which user role is allowed to access the frontend of this blog?"
188
- msgstr "Vilken användarroll får tillgång till front end av denna hemsidan?"
189
-
190
- #: views/settings.php:63
191
- msgid "Robots Meta Tag"
192
- msgstr "Robots meta-tagg"
193
-
194
- #: views/settings.php:69
195
- msgid ""
196
- "The robots meta tag lets you use a granular, page-specific approach to "
197
- "control how an individual page should be indexed and served to users in "
198
- "search results."
199
- msgstr ""
200
- "Metataggen för sökrobotar låter dig använda ett granulärt, sidspecifikt "
201
- "tillvägagångssätt för att kontrollera hur en enskild sida ska indexeras och "
202
- "visas för användare i sökresultat. "
203
-
204
- #: views/settings.php:73
205
- msgid "Redirection"
206
- msgstr "Omdirigering"
207
-
208
- #: views/settings.php:76
209
- msgid ""
210
- "If you want to redirect a user to a URL (which is not the WordPress "
211
- "dashboard) after login, then define a URL (incl. http://)"
212
- msgstr ""
213
- "Om du vill omdirigera en användare till en URL (förutom WordPresspanelen) "
214
- "efter att de har loggat in, fyll i en URL (inkl. http://)"
215
-
216
- #: views/settings.php:80
217
- msgid "Exclude"
218
- msgstr "Exkludera"
219
-
220
- #: views/settings.php:87
221
- msgid ""
222
- "Exclude feed, pages, archives or IPs from maintenance mode. Add one slug / "
223
- "IP per line!"
224
- msgstr ""
225
- "Exkludera flöde, sidor, arkiv eller IP-adresser från underhållsläget. Lägg "
226
- "max till en permalänk/IP per rad! "
227
-
228
- #: views/settings.php:91
229
- msgid "Notice"
230
- msgstr "Meddelande"
231
-
232
- #: views/settings.php:97
233
- msgid "Do you want to see notices when maintenance mode is activated?"
234
- msgstr "Vill du se ett meddelande när underhållsläget är aktiverat?"
235
-
236
- #: views/settings.php:101
237
- msgid "Dashboard link"
238
- msgstr ""
239
-
240
- #: views/settings.php:107
241
- msgid ""
242
- "Do you want to add a link to the dashboard on your maintenance mode page?"
243
- msgstr ""
244
-
245
- #: views/settings.php:115 views/settings.php:218 views/settings.php:421
246
- msgid "Save settings"
247
- msgstr "Spara"
248
-
249
- #: views/settings.php:116 views/settings.php:219 views/settings.php:422
250
- msgid "Reset settings"
251
- msgstr "Återställ inställningar"
252
-
253
- #: views/settings.php:121
254
- msgid "Content"
255
- msgstr "Innehåll"
256
-
257
- #: views/settings.php:126
258
- msgid "Title (HTML tag)"
259
- msgstr "Titel (HTML-tagg)"
260
-
261
- #: views/settings.php:132
262
- msgid "Heading"
263
- msgstr "Rubrik"
264
-
265
- #: views/settings.php:139 views/settings.php:274
266
- msgid "Text"
267
- msgstr "Text"
268
-
269
- #: views/settings.php:159
270
- msgid "Background"
271
- msgstr "Bakgrund"
272
-
273
- #: views/settings.php:164
274
- msgid "Choose type"
275
- msgstr "Välj typ"
276
-
277
- #: views/settings.php:167
278
- msgid "Custom color"
279
- msgstr "Egen färg"
280
-
281
- #: views/settings.php:168
282
- msgid "Uploaded background"
283
- msgstr "Uppladdad bakgrund"
284
-
285
- #: views/settings.php:169
286
- msgid "Predefined background"
287
- msgstr "Fördefinierad bakgrund"
288
-
289
- #: views/settings.php:174
290
- msgid "Choose color"
291
- msgstr "Välj färg"
292
-
293
- #: views/settings.php:180
294
- msgid "Upload background"
295
- msgstr "Ladda upp bakgrund"
296
-
297
- #: views/settings.php:184
298
- msgid "Backgrounds should have 1920x1280 px size."
299
- msgstr "En bakgrund bör vara minst 1920x1280px. "
300
-
301
- #: views/settings.php:189
302
- msgid "Choose background"
303
- msgstr "Välj bakgrund"
304
-
305
- #: views/settings.php:191
306
- msgid "source <a href=\"%\" target=\"_blank\">Free Photos</a>"
307
- msgstr "källa <a href=\"%\" target=\"_blank\">Free Photos</a>"
308
-
309
- #: views/settings.php:224
310
- msgid "Countdown"
311
- msgstr "Nedräkning"
312
-
313
- #: views/settings.php:229
314
- msgid "Show countdown?"
315
- msgstr "Visa nedräkning?"
316
-
317
- #: views/settings.php:238
318
- msgid "Start date"
319
- msgstr "Startdatum"
320
-
321
- #: views/settings.php:244
322
- msgid "Countdown (remaining time)"
323
- msgstr "Nedräkning (återstående tid)"
324
-
325
- #: views/settings.php:246
326
- msgid "Days"
327
- msgstr "Dagar"
328
-
329
- #: views/settings.php:247
330
- msgid "Hours"
331
- msgstr "Timmar"
332
-
333
- #: views/settings.php:248
334
- msgid "Minutes"
335
- msgstr "Minuter"
336
-
337
- #: views/settings.php:252
338
- msgid "Color"
339
- msgstr "Färg"
340
-
341
- #: views/settings.php:265
342
- msgid "Show subscribe?"
343
- msgstr "Visa prenumerationsknapp?"
344
-
345
- #: views/settings.php:281
346
- msgid "Stats"
347
- msgstr "Statistik"
348
-
349
- #: views/settings.php:285
350
- #, php-format
351
- msgid "You have %d subscriber(s)"
352
- msgstr "Du har %d prenumeranter"
353
-
354
- #: views/settings.php:290
355
- msgid "Export as CSV"
356
- msgstr "Exportera som CSV"
357
-
358
- #: views/settings.php:297
359
- msgid "Social Networks"
360
- msgstr "Sociala nätverk"
361
-
362
- #: views/settings.php:302
363
- msgid "Show social networks?"
364
- msgstr "Visa sociala nätverk?"
365
-
366
- #: views/settings.php:311
367
- msgid "Links target?"
368
- msgstr ""
369
-
370
- #: views/settings.php:314
371
- msgid "New page"
372
- msgstr ""
373
-
374
- #: views/settings.php:315
375
- msgid "Same page"
376
- msgstr ""
377
-
378
- #: views/settings.php:317
379
- msgid "Choose how the links will open."
380
- msgstr ""
381
-
382
- #: views/settings.php:365
383
- msgid "Contact"
384
- msgstr "Kontakt"
385
-
386
- #: views/settings.php:370
387
- msgid "Show contact?"
388
- msgstr "Visa kontaktknapp?"
389
-
390
- #: views/settings.php:379
391
- msgid "Email address"
392
- msgstr "E-postadress"
393
-
394
- #: views/settings.php:385
395
- msgid "Effects"
396
- msgstr "Effekter"
397
-
398
- #: views/settings.php:388
399
- msgid "Move top - Move bottom"
400
- msgstr "Glid"
401
-
402
- #: views/settings.php:389
403
- msgid "Zoom - Zoomed"
404
- msgstr "Zoom"
405
-
406
- #: views/settings.php:390
407
- msgid "Fold - Unfold"
408
- msgstr "Vik"
409
-
410
- #: views/settings.php:397
411
- msgid "Google Analytics"
412
- msgstr ""
413
-
414
- #: views/settings.php:402
415
- msgid "Use Google Analytics?"
416
- msgstr ""
417
-
418
- #: views/settings.php:411
419
- msgid "Tracking code"
420
- msgstr ""
421
-
422
- #: views/sidebar.php:3
423
- msgid "Plugin Info"
424
- msgstr "Information om tillägg"
425
-
426
- #: views/sidebar.php:13
427
- msgid "Author"
428
- msgstr "Författare"
429
-
430
- #: views/sidebar.php:14
431
- msgid "Website"
432
- msgstr "Hemsida"
433
-
434
- #: views/sidebar.php:15
435
- msgid "Twitter"
436
- msgstr "Twitter"
437
-
438
- #: views/sidebar.php:16
439
- msgid "GitHub"
440
- msgstr "GitHub"
441
-
442
- #: views/sidebar.php:22
443
- msgid "WordPress Themes"
444
- msgstr ""
445
-
446
- #: views/sidebar.php:31
447
- msgid "Resources"
448
- msgstr "Resurser"
449
-
450
- #~ msgid "Subscribe now for early access to new WordPress themes."
451
- #~ msgstr "Prenumerera nu för tidig tillgång till nya WordPress-teman."
452
-
453
- #~ msgid "Enter your email address"
454
- #~ msgstr "Fyll i din e-postadress"
455
-
456
- #~ msgid "News"
457
- #~ msgstr "Nyheter"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ msgid ""
2
+ msgstr ""
3
+ "Project-Id-Version: WP Maintenance Mode 2.0.4\n"
4
+ "POT-Creation-Date: 2016-06-17 03:37+0300\n"
5
+ "PO-Revision-Date: 2016-06-17 03:37+0300\n"
6
+ "Last-Translator: Andréas Lundgren <adevade@gmail.com>\n"
7
+ "Language-Team: Designmodo <info@designmodo.com>\n"
8
+ "Language: sv_SE\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.8.8\n"
13
+ "X-Poedit-Basepath: ..\n"
14
+ "Plural-Forms: nplurals=2; plural=(n != 1);\n"
15
+ "X-Poedit-SourceCharset: UTF-8\n"
16
+ "X-Poedit-KeywordsList: __;_e;__ngettext:1,2;_n:1,2;__ngettext_noop:1,2;"
17
+ "_n_noop:1,2;_c,_nc:4c,1,2;_x:1,2c;_ex:1,2c;_nx:4c,1,2;_nx_noop:4c,1,2;"
18
+ "esc_attr__;esc_attr_e;esc_attr_x:1,2c;esc_html__;esc_html_e;esc_html_x:1,2c\n"
19
+ "X-Poedit-SearchPath-0: .\n"
20
+ "X-Poedit-SearchPath-1: includes/classes\n"
21
+ "X-Poedit-SearchPath-2: views\n"
22
+
23
+ #: includes/classes/wp-maintenance-mode-admin.php:121
24
+ #: includes/classes/wp-maintenance-mode-admin.php:159
25
+ #: includes/classes/wp-maintenance-mode-admin.php:181
26
+ msgid "You do not have access to this resource."
27
+ msgstr ""
28
+
29
+ #: includes/classes/wp-maintenance-mode-admin.php:165 views/settings.php:295
30
+ #, php-format
31
+ msgid "You have %d subscriber(s)"
32
+ msgstr "Du har %d prenumeranter"
33
+
34
+ #: includes/classes/wp-maintenance-mode-admin.php:186
35
+ msgid "The tab slug must not be empty."
36
+ msgstr ""
37
+
38
+ #: includes/classes/wp-maintenance-mode-admin.php:191
39
+ msgid "The tab slug must exist."
40
+ msgstr ""
41
+
42
+ #: includes/classes/wp-maintenance-mode-admin.php:211
43
+ msgid "WP Maintenance Mode"
44
+ msgstr "WP Underhållsläge"
45
+
46
+ #: includes/classes/wp-maintenance-mode-admin.php:425
47
+ msgid "Settings"
48
+ msgstr "Inställningar"
49
+
50
+ #: includes/classes/wp-maintenance-mode-admin.php:444
51
+ #, php-format
52
+ msgid ""
53
+ "The Maintenance Mode is <strong>active</strong>. Please don't forget to <a "
54
+ "href=\"%s\">deactivate</a> as soon as you are done."
55
+ msgstr ""
56
+ "Underhållsläget är <strong>aktiverat</strong>. Glöm inte att <a href=\"%s"
57
+ "\">avaktivera</a> det när du är klar."
58
+
59
+ #: includes/classes/wp-maintenance-mode-admin.php:481
60
+ msgid "Notice key cannot be empty."
61
+ msgstr ""
62
+
63
+ #: includes/classes/wp-maintenance-mode.php:103
64
+ #: includes/classes/wp-maintenance-mode.php:104
65
+ msgid "Maintenance mode"
66
+ msgstr "Underhållsläge"
67
+
68
+ #: includes/classes/wp-maintenance-mode.php:106
69
+ msgid ""
70
+ "<p>Sorry for the inconvenience.<br />Our website is currently undergoing "
71
+ "scheduled maintenance.<br />Thank you for your understanding.</p>"
72
+ msgstr ""
73
+ "<p>Ledsen för besväret.<br />Vår hemsida ligger för närvarande i "
74
+ "underhållsläge.<br />Tack för att ni förstår.</p>"
75
+
76
+ #: includes/classes/wp-maintenance-mode.php:124
77
+ msgid "Notify me when it's ready"
78
+ msgstr "Meddela mig när sidan är färdig"
79
+
80
+ #: includes/classes/wp-maintenance-mode.php:259
81
+ #, php-format
82
+ msgid ""
83
+ "WP Maintenance Mode plugin was relaunched and you MUST revise <a href=\"%s"
84
+ "\">settings</a>."
85
+ msgstr ""
86
+ "Tillägget WP Underhållsläge återlanserades nyligen med massa nya <a href=\"%s"
87
+ "\">inställningar</a>."
88
+
89
+ #: includes/classes/wp-maintenance-mode.php:449
90
+ #: includes/classes/wp-maintenance-mode.php:463
91
+ msgid "Maintenance Mode"
92
+ msgstr "Underhållsläge"
93
+
94
+ #: includes/classes/wp-maintenance-mode.php:687
95
+ #: includes/classes/wp-maintenance-mode.php:721 views/maintenance.php:85
96
+ msgid "Please enter a valid email address."
97
+ msgstr "Vänligen fyll i en giltig e-postadress. "
98
+
99
+ #: includes/classes/wp-maintenance-mode.php:699
100
+ msgid "You successfully subscribed. Thanks!"
101
+ msgstr ""
102
+
103
+ #: includes/classes/wp-maintenance-mode.php:717
104
+ msgid "All fields required."
105
+ msgstr "Vänligen fyll i alla fält."
106
+
107
+ #: includes/classes/wp-maintenance-mode.php:726
108
+ msgid "Message via contact"
109
+ msgstr "Meddelande från underhållsläget"
110
+
111
+ #: includes/classes/wp-maintenance-mode.php:738
112
+ msgid "Your email was sent to the website administrator. Thanks!"
113
+ msgstr "Ditt meddelande skickades till hemsidans ägare. Tack! "
114
+
115
+ #: views/contact.php:34
116
+ #, php-format
117
+ msgid "You have been contacted via %s."
118
+ msgstr ""
119
+
120
+ #: views/contact.php:50
121
+ msgid "Name:"
122
+ msgstr ""
123
+
124
+ #: views/contact.php:62
125
+ msgid "Email:"
126
+ msgstr ""
127
+
128
+ #: views/contact.php:74
129
+ msgid "Content:"
130
+ msgstr ""
131
+
132
+ #: views/loginform.php:8
133
+ msgid "Login"
134
+ msgstr ""
135
+
136
+ #: views/maintenance.php:42
137
+ msgid "your e-mail..."
138
+ msgstr "Din e-postadress..."
139
+
140
+ #: views/maintenance.php:43 views/settings.php:270
141
+ msgid "Subscribe"
142
+ msgstr "Prenumerera"
143
+
144
+ #: views/maintenance.php:84 views/sidebar.php:7
145
+ msgid "Name"
146
+ msgstr "Namn"
147
+
148
+ #: views/maintenance.php:84 views/maintenance.php:85 views/maintenance.php:87
149
+ msgid "This field is required."
150
+ msgstr ""
151
+
152
+ #: views/maintenance.php:85
153
+ msgid "E-mail"
154
+ msgstr "E-post"
155
+
156
+ #: views/maintenance.php:87
157
+ msgid "Your message"
158
+ msgstr "Ditt meddelande"
159
+
160
+ #: views/maintenance.php:88
161
+ msgid "Send"
162
+ msgstr "Skicka"
163
+
164
+ #: views/maintenance.php:93
165
+ msgid "Contact us"
166
+ msgstr "Kontakta oss"
167
+
168
+ #: views/maintenance.php:98
169
+ msgid "Dashboard"
170
+ msgstr ""
171
+
172
+ #: views/settings.php:6
173
+ msgid "Settings saved."
174
+ msgstr "Inställningarna sparades."
175
+
176
+ #: views/settings.php:13
177
+ msgid "General"
178
+ msgstr "Allmänt"
179
+
180
+ #: views/settings.php:14
181
+ msgid "Design"
182
+ msgstr "Design"
183
+
184
+ #: views/settings.php:15
185
+ msgid "Modules"
186
+ msgstr "Moduler"
187
+
188
+ #: views/settings.php:24
189
+ msgid "Status"
190
+ msgstr "Status"
191
+
192
+ #: views/settings.php:26
193
+ msgid "Activated"
194
+ msgstr "Aktiverad"
195
+
196
+ #: views/settings.php:27
197
+ msgid "Deactivated"
198
+ msgstr "Avaktiverad"
199
+
200
+ #: views/settings.php:31
201
+ msgid "Bypass for Search Bots"
202
+ msgstr "Låt sökrobotar förbi"
203
+
204
+ #: views/settings.php:34 views/settings.php:104 views/settings.php:114
205
+ #: views/settings.php:242 views/settings.php:278 views/settings.php:316
206
+ #: views/settings.php:384 views/settings.php:416
207
+ msgid "Yes"
208
+ msgstr "Ja"
209
+
210
+ #: views/settings.php:35 views/settings.php:105 views/settings.php:115
211
+ #: views/settings.php:243 views/settings.php:279 views/settings.php:317
212
+ #: views/settings.php:385 views/settings.php:417
213
+ msgid "No"
214
+ msgstr "Nej"
215
+
216
+ #: views/settings.php:37
217
+ msgid "Allow Search Bots to bypass maintenance mode?"
218
+ msgstr "Tillåt sökrobotar att gå förbi underhållsläget? "
219
+
220
+ #: views/settings.php:41
221
+ msgid "Backend Role"
222
+ msgstr "Back end-roll"
223
+
224
+ #: views/settings.php:43 views/settings.php:59
225
+ msgid "Select role(s)"
226
+ msgstr ""
227
+
228
+ #: views/settings.php:53
229
+ msgid ""
230
+ "Which user role is allowed to access the backend of this blog? "
231
+ "Administrators will always have access."
232
+ msgstr ""
233
+
234
+ #: views/settings.php:57
235
+ msgid "Frontend Role"
236
+ msgstr "Front end-roll"
237
+
238
+ #: views/settings.php:69
239
+ msgid ""
240
+ "Which user role is allowed to access the frontend of this blog? "
241
+ "Administrators will always have access."
242
+ msgstr ""
243
+
244
+ #: views/settings.php:73
245
+ msgid "Robots Meta Tag"
246
+ msgstr "Robots meta-tagg"
247
+
248
+ #: views/settings.php:79
249
+ msgid ""
250
+ "The robots meta tag lets you use a granular, page-specific approach to "
251
+ "control how an individual page should be indexed and served to users in "
252
+ "search results."
253
+ msgstr ""
254
+ "Metataggen för sökrobotar låter dig använda ett granulärt, sidspecifikt "
255
+ "tillvägagångssätt för att kontrollera hur en enskild sida ska indexeras och "
256
+ "visas för användare i sökresultat. "
257
+
258
+ #: views/settings.php:83
259
+ msgid "Redirection"
260
+ msgstr "Omdirigering"
261
+
262
+ #: views/settings.php:86
263
+ msgid ""
264
+ "If you want to redirect a user (with no access to Dashboard/Backend) to a "
265
+ "URL (different from WordPress Dashboard URL) after login, then define a URL "
266
+ "(incl. http://)"
267
+ msgstr ""
268
+
269
+ #: views/settings.php:90
270
+ msgid "Exclude"
271
+ msgstr "Exkludera"
272
+
273
+ #: views/settings.php:97
274
+ msgid ""
275
+ "Exclude feed, pages, archives or IPs from maintenance mode. Add one slug / "
276
+ "IP per line!"
277
+ msgstr ""
278
+ "Exkludera flöde, sidor, arkiv eller IP-adresser från underhållsläget. Lägg "
279
+ "max till en permalänk/IP per rad! "
280
+
281
+ #: views/settings.php:101
282
+ msgid "Notice"
283
+ msgstr "Meddelande"
284
+
285
+ #: views/settings.php:107
286
+ msgid "Do you want to see notices when maintenance mode is activated?"
287
+ msgstr "Vill du se ett meddelande när underhållsläget är aktiverat?"
288
+
289
+ #: views/settings.php:111
290
+ msgid "Dashboard link"
291
+ msgstr ""
292
+
293
+ #: views/settings.php:117
294
+ msgid ""
295
+ "Do you want to add a link to the dashboard on your maintenance mode page?"
296
+ msgstr ""
297
+
298
+ #: views/settings.php:125 views/settings.php:228 views/settings.php:432
299
+ msgid "Save settings"
300
+ msgstr "Spara"
301
+
302
+ #: views/settings.php:126 views/settings.php:229 views/settings.php:433
303
+ msgid "Reset settings"
304
+ msgstr "Återställ inställningar"
305
+
306
+ #: views/settings.php:131
307
+ msgid "Content"
308
+ msgstr "Innehåll"
309
+
310
+ #: views/settings.php:136
311
+ msgid "Title (HTML tag)"
312
+ msgstr "Titel (HTML-tagg)"
313
+
314
+ #: views/settings.php:142
315
+ msgid "Heading"
316
+ msgstr "Rubrik"
317
+
318
+ #: views/settings.php:149 views/settings.php:284
319
+ msgid "Text"
320
+ msgstr "Text"
321
+
322
+ #: views/settings.php:169
323
+ msgid "Background"
324
+ msgstr "Bakgrund"
325
+
326
+ #: views/settings.php:174
327
+ msgid "Choose type"
328
+ msgstr "Välj typ"
329
+
330
+ #: views/settings.php:177
331
+ msgid "Custom color"
332
+ msgstr "Egen färg"
333
+
334
+ #: views/settings.php:178
335
+ msgid "Uploaded background"
336
+ msgstr "Uppladdad bakgrund"
337
+
338
+ #: views/settings.php:179
339
+ msgid "Predefined background"
340
+ msgstr "Fördefinierad bakgrund"
341
+
342
+ #: views/settings.php:184
343
+ msgid "Choose color"
344
+ msgstr "Välj färg"
345
+
346
+ #: views/settings.php:190
347
+ msgid "Upload background"
348
+ msgstr "Ladda upp bakgrund"
349
+
350
+ #: views/settings.php:194
351
+ msgid "Backgrounds should have 1920x1280 px size."
352
+ msgstr "En bakgrund bör vara minst 1920x1280px. "
353
+
354
+ #: views/settings.php:199
355
+ msgid "Choose background"
356
+ msgstr "Välj bakgrund"
357
+
358
+ #: views/settings.php:201
359
+ #, php-format
360
+ msgid "source <a href=\"%s\" target=\"_blank\">Free Photos</a>"
361
+ msgstr ""
362
+
363
+ #: views/settings.php:234
364
+ msgid "Countdown"
365
+ msgstr "Nedräkning"
366
+
367
+ #: views/settings.php:239
368
+ msgid "Show countdown?"
369
+ msgstr "Visa nedräkning?"
370
+
371
+ #: views/settings.php:248
372
+ msgid "Start date"
373
+ msgstr "Startdatum"
374
+
375
+ #: views/settings.php:254
376
+ msgid "Countdown (remaining time)"
377
+ msgstr "Nedräkning (återstående tid)"
378
+
379
+ #: views/settings.php:256
380
+ msgid "Days"
381
+ msgstr "Dagar"
382
+
383
+ #: views/settings.php:257
384
+ msgid "Hours"
385
+ msgstr "Timmar"
386
+
387
+ #: views/settings.php:258
388
+ msgid "Minutes"
389
+ msgstr "Minuter"
390
+
391
+ #: views/settings.php:262
392
+ msgid "Color"
393
+ msgstr "Färg"
394
+
395
+ #: views/settings.php:275
396
+ msgid "Show subscribe?"
397
+ msgstr "Visa prenumerationsknapp?"
398
+
399
+ #: views/settings.php:291
400
+ msgid "Stats"
401
+ msgstr "Statistik"
402
+
403
+ #: views/settings.php:300
404
+ msgid "Export as CSV"
405
+ msgstr "Exportera som CSV"
406
+
407
+ #: views/settings.php:301
408
+ msgid "Empty subscribers list"
409
+ msgstr ""
410
+
411
+ #: views/settings.php:308
412
+ msgid "Social Networks"
413
+ msgstr "Sociala nätverk"
414
+
415
+ #: views/settings.php:313
416
+ msgid "Show social networks?"
417
+ msgstr "Visa sociala nätverk?"
418
+
419
+ #: views/settings.php:322
420
+ msgid "Links target?"
421
+ msgstr ""
422
+
423
+ #: views/settings.php:325
424
+ msgid "New page"
425
+ msgstr ""
426
+
427
+ #: views/settings.php:326
428
+ msgid "Same page"
429
+ msgstr ""
430
+
431
+ #: views/settings.php:328
432
+ msgid "Choose how the links will open."
433
+ msgstr ""
434
+
435
+ #: views/settings.php:376
436
+ msgid "Contact"
437
+ msgstr "Kontakt"
438
+
439
+ #: views/settings.php:381
440
+ msgid "Show contact?"
441
+ msgstr "Visa kontaktknapp?"
442
+
443
+ #: views/settings.php:390
444
+ msgid "Email address"
445
+ msgstr "E-postadress"
446
+
447
+ #: views/settings.php:396
448
+ msgid "Effects"
449
+ msgstr "Effekter"
450
+
451
+ #: views/settings.php:399
452
+ msgid "Move top - Move bottom"
453
+ msgstr "Glid"
454
+
455
+ #: views/settings.php:400
456
+ msgid "Zoom - Zoomed"
457
+ msgstr "Zoom"
458
+
459
+ #: views/settings.php:401
460
+ msgid "Fold - Unfold"
461
+ msgstr "Vik"
462
+
463
+ #: views/settings.php:408
464
+ msgid "Google Analytics"
465
+ msgstr ""
466
+
467
+ #: views/settings.php:413
468
+ msgid "Use Google Analytics?"
469
+ msgstr ""
470
+
471
+ #: views/settings.php:422
472
+ msgid "Tracking code"
473
+ msgstr ""
474
+
475
+ #: views/sidebar.php:3
476
+ msgid "Plugin Info"
477
+ msgstr "Information om tillägg"
478
+
479
+ #: views/sidebar.php:13
480
+ msgid "Author"
481
+ msgstr "Författare"
482
+
483
+ #: views/sidebar.php:14
484
+ msgid "Website"
485
+ msgstr "Hemsida"
486
+
487
+ #: views/sidebar.php:15
488
+ msgid "Twitter"
489
+ msgstr "Twitter"
490
+
491
+ #: views/sidebar.php:16
492
+ msgid "GitHub"
493
+ msgstr "GitHub"
494
+
495
+ #: views/sidebar.php:27
496
+ msgid "Other products"
497
+ msgstr ""
498
+
499
+ #: views/sidebar.php:44
500
+ msgid "Resources"
501
+ msgstr "Resurser"
502
+
503
+ #~ msgid "You successfuly subscribed. Thanks!"
504
+ #~ msgstr "Din e-post registrerades. Tack! "
505
+
506
+ #~ msgid "Which user role is allowed to access the backend of this blog?"
507
+ #~ msgstr "Vilken användarroll får tillgång till back end av denna hemsidan?"
508
+
509
+ #~ msgid "Which user role is allowed to access the frontend of this blog?"
510
+ #~ msgstr "Vilken användarroll får tillgång till front end av denna hemsidan?"
511
+
512
+ #~ msgid ""
513
+ #~ "If you want to redirect a user to a URL (which is not the WordPress "
514
+ #~ "dashboard) after login, then define a URL (incl. http://)"
515
+ #~ msgstr ""
516
+ #~ "Om du vill omdirigera en användare till en URL (förutom WordPresspanelen) "
517
+ #~ "efter att de har loggat in, fyll i en URL (inkl. http://)"
518
+
519
+ #~ msgid "source <a href=\"%\" target=\"_blank\">Free Photos</a>"
520
+ #~ msgstr "källa <a href=\"%\" target=\"_blank\">Free Photos</a>"
521
+
522
+ #~ msgid "Subscribe now for early access to new WordPress themes."
523
+ #~ msgstr "Prenumerera nu för tidig tillgång till nya WordPress-teman."
524
+
525
+ #~ msgid "Enter your email address"
526
+ #~ msgstr "Fyll i din e-postadress"
527
+
528
+ #~ msgid "News"
529
+ #~ msgstr "Nyheter"
readme.md CHANGED
@@ -1,105 +1,105 @@
1
- # WP Maintenance Mode
2
-
3
- Adds a splash page to your site that lets visitors know your site is down for maintenance. It's perfect for a coming soon page.
4
-
5
- **Features**
6
-
7
- * Fully customizable (change colors, texts and backgrounds);
8
- * Subscription form (export emails to .csv file);
9
- * Countdown timer (remaining time);
10
- * Contact form (receive emails from visitors);
11
- * Coming soon page;
12
- * Landing page templates;
13
- * WordPress multisite;
14
- * Responsive design;
15
- * Social media icons;
16
- * Works with any WordPress theme;
17
- * SEO options;
18
- * Exclude URLs from maintenance.
19
-
20
- **Credits**
21
-
22
- Developed by [Designmodo](http://designmodo.com)
23
-
24
- WordPress Theme: [Startup Framework for WordPress](http://designmodo.com/startup-wordpress/)
25
-
26
- ## F.A.Q.
27
-
28
- **How to use plugin filters**
29
-
30
- `wpmm_backtime` - can be used to change the backtime from page `Retry-After` header
31
-
32
- ```php
33
- function new_backtime() {
34
- return 1800;
35
- }
36
-
37
- add_filter('wpmm_backtime', 'new_backtime');
38
- ```
39
-
40
- Now... the search bots will retry to visit the page after 1800 seconds.
41
-
42
- `wpmm_search_bots` - if you have `Bypass for Search Bots` option (from General) activated, it can be used to add / delete bots (useragents)
43
-
44
- ```php
45
- function new_search_bots($bots) {
46
- // we delete a bot from array
47
- if(!empty($bots['AcoiRobot'])){
48
- unset($bots['AcoiRobot']);
49
- }
50
-
51
- // we add a new bot into array
52
- if(empty($bots['new_robot'])){
53
- $bots['new_robot'] = 'NewRobot'; // NewRobot is the user agent
54
- }
55
-
56
- return $bots;
57
- }
58
-
59
- add_filter('wpmm_search_bots', 'new_search_bots');
60
- ```
61
-
62
- We deleted a bot from list and added a new one.
63
-
64
- `wpmm_text` - can be used to change `Text` option
65
-
66
- ```php
67
- function new_text($text) {
68
- $text = str_replace('http://www.designmodo.com', 'http://designmodo.com', $text);
69
-
70
-
71
- return $text;
72
- }
73
-
74
- add_filter('wpmm_text', 'new_text');
75
- ```
76
-
77
- We replaced a string with another string. We can also add another text, add some extra html, etc.
78
-
79
- `wpmm_styles` - can be used to embed new css files
80
-
81
- ```php
82
- function new_css_styles($styles) {
83
- $styles['new-style'] = 'path_to_css_file/style.css'; // replace with the real path :)
84
-
85
- return $styles;
86
- }
87
-
88
- add_filter('wpmm_styles', 'new_css_styles');
89
- ```
90
-
91
- We embedded a new css style on maintenance page. Same mechanism can be used for javascript files (see `wpmm_scripts` filter).
92
-
93
- **Cache Plugin Support**
94
-
95
- WP Maintenance Mode can be unstable due the cache plugins, we recommend to deactivate any cache plugin when maintenance mode is active.
96
-
97
- ## Other Notes
98
- ### License
99
- Good news, this plugin is free for everyone! Since it's released under the GPL, you can use it free of charge on your personal or commercial blog.
100
-
101
- ### Translations
102
- The plugin comes with various translations, please refer to the [WordPress Codex](http://codex.wordpress.org/Installing_WordPress_in_Your_Language "Installing WordPress in Your Language") for more information about activating the translation. If you want to help to translate the plugin to your language, please have a look at the .pot file which contains all defintions and may be used with a [gettext](http://www.gnu.org/software/gettext/) editor like [Poedit](http://www.poedit.net/) (Linux, Mac OS X, Windows).
103
-
104
- ### Contact & Feedback
105
- Please let me know if you like the plugin or you hate it or whatever... Please fork it, add an issue for ideas and bugs.
1
+ # Version 2.0.4
2
+
3
+ # WP Maintenance Mode
4
+
5
+ Adds a splash page to your site that lets visitors know your site is down for maintenance. It's perfect for a coming soon page.
6
+
7
+ **Features**
8
+
9
+ * Fully customizable (change colors, texts and backgrounds);
10
+ * Subscription form (export emails to .csv file);
11
+ * Countdown timer (remaining time);
12
+ * Contact form (receive emails from visitors);
13
+ * Coming soon page;
14
+ * Landing page templates;
15
+ * WordPress multisite;
16
+ * Responsive design;
17
+ * Social media icons;
18
+ * Works with any WordPress theme;
19
+ * SEO options;
20
+ * Exclude URLs from maintenance.
21
+
22
+ **Credits**
23
+
24
+ Developed by [Designmodo](http://designmodo.com)
25
+
26
+ ## F.A.Q.
27
+
28
+ **How to use plugin filters**
29
+
30
+ `wpmm_backtime` - can be used to change the backtime from page `Retry-After` header
31
+
32
+ ```php
33
+ function new_backtime() {
34
+ return 1800;
35
+ }
36
+
37
+ add_filter('wpmm_backtime', 'new_backtime');
38
+ ```
39
+
40
+ Now... the search bots will retry to visit the page after 1800 seconds.
41
+
42
+ `wpmm_search_bots` - if you have `Bypass for Search Bots` option (from General) activated, it can be used to add / delete bots (useragents)
43
+
44
+ ```php
45
+ function new_search_bots($bots) {
46
+ // we delete a bot from array
47
+ if(!empty($bots['AcoiRobot'])){
48
+ unset($bots['AcoiRobot']);
49
+ }
50
+
51
+ // we add a new bot into array
52
+ if(empty($bots['new_robot'])){
53
+ $bots['new_robot'] = 'NewRobot'; // NewRobot is the user agent
54
+ }
55
+
56
+ return $bots;
57
+ }
58
+
59
+ add_filter('wpmm_search_bots', 'new_search_bots');
60
+ ```
61
+
62
+ We deleted a bot from list and added a new one.
63
+
64
+ `wpmm_text` - can be used to change `Text` option
65
+
66
+ ```php
67
+ function new_text($text) {
68
+ $text = str_replace('http://www.designmodo.com', 'http://designmodo.com', $text);
69
+
70
+
71
+ return $text;
72
+ }
73
+
74
+ add_filter('wpmm_text', 'new_text');
75
+ ```
76
+
77
+ We replaced a string with another string. We can also add another text, add some extra html, etc.
78
+
79
+ `wpmm_styles` - can be used to embed new css files
80
+
81
+ ```php
82
+ function new_css_styles($styles) {
83
+ $styles['new-style'] = 'path_to_css_file/style.css'; // replace with the real path :)
84
+
85
+ return $styles;
86
+ }
87
+
88
+ add_filter('wpmm_styles', 'new_css_styles');
89
+ ```
90
+
91
+ We embedded a new css style on maintenance page. Same mechanism can be used for javascript files (see `wpmm_scripts` filter).
92
+
93
+ **Cache Plugin Support**
94
+
95
+ WP Maintenance Mode can be unstable due the cache plugins, we recommend to deactivate any cache plugin when maintenance mode is active.
96
+
97
+ ## Other Notes
98
+ ### License
99
+ Good news, this plugin is free for everyone! Since it's released under the GPL, you can use it free of charge on your personal or commercial blog.
100
+
101
+ ### Translations
102
+ The plugin comes with various translations, please refer to the [WordPress Codex](http://codex.wordpress.org/Installing_WordPress_in_Your_Language "Installing WordPress in Your Language") for more information about activating the translation. If you want to help to translate the plugin to your language, please have a look at the .pot file which contains all defintions and may be used with a [gettext](http://www.gnu.org/software/gettext/) editor like [Poedit](http://www.poedit.net/) (Linux, Mac OS X, Windows).
103
+
104
+ ### Contact & Feedback
105
+ Please let me know if you like the plugin or you hate it or whatever... Please fork it, add an issue for ideas and bugs.
readme.txt CHANGED
@@ -1,364 +1,381 @@
1
- === WP Maintenance Mode ===
2
- Contributors: Designmodo, GeorgeJipa
3
- Plugin Name: WP Maintenance Mode
4
- Plugin URI: http://designmodo.com/
5
- Author: Designmodo
6
- Author URI: http://designmodo.com/
7
- Tags: maintenance mode, admin, administration, unavailable, coming soon, multisite, landing page, under construction, contact form, subscribe, countdown
8
- Requires at least: 3.5
9
- Tested up to: 4.0.0
10
- Stable tag: 2.0.3
11
- License: GPL-2.0+
12
-
13
- Adds a splash page to your site that lets visitors know your site is down for maintenance. It's perfect for a coming soon page.
14
-
15
- == Description ==
16
-
17
- Add a maintenance page to your blog that lets visitors know your blog is down for maintenance, or add a coming soon page for a new website. User with admin rights gets full access to the blog including the front end.
18
-
19
- Activate the plugin and your blog is in maintenance-mode, works and only registered users with enough rights can see the front end. You can use a date with a countdown timer for visitor information or set a value and unit for information.
20
- Also works with WordPress Multisite installs (each blog from the network has it's own maintenance settings).
21
-
22
- = Features =
23
-
24
- * Fully customizable (change colors, texts and backgrounds);
25
- * Subscription form (export emails to .csv file);
26
- * Countdown timer (remaining time);
27
- * Contact form (receive emails from visitors);
28
- * Coming soon page;
29
- * Landing page templates;
30
- * WordPress multisite;
31
- * Responsive design;
32
- * Social media icons;
33
- * Works with any WordPress theme;
34
- * SEO options;
35
- * Exclude URLs from maintenance.
36
-
37
- = Bugs, technical hints or contribute =
38
-
39
- Please give us feedback, contribute and file technical bugs on [GitHub Repo](https://github.com/Designmodocom/WP-Maintenance-Mode).
40
-
41
- = Credits =
42
- Developed by [Designmodo](http://designmodo.com)
43
-
44
- WordPress Theme: [Startup Framework for WordPress](http://designmodo.com/startup-wordpress/)
45
-
46
- == Installation ==
47
-
48
- 1. Unpack the download package
49
- 2. Upload all files to the `/wp-content/plugins/` directory, include folders
50
- 3. Activate the plugin through the 'Plugins' menu in WordPress
51
- 4. Go to `Settings` page, where you can change what settings you need (pay attention to **Exclude** option!)
52
-
53
- == Screenshots ==
54
-
55
- 1. Maintenance Mode example
56
- 2. Maintenance Mode example #2
57
- 3. Contact form
58
- 4. Dashboard General settings
59
- 5. Dashboard Design settings
60
- 6. Dashboard Modules settings
61
-
62
- == Frequently Asked Questions ==
63
-
64
- = How to use plugin filters =
65
- See [GitHub Repo] (https://github.com/Designmodocom/WP-Maintenance-Mode) FAQ.
66
-
67
- = Cache Plugin Support =
68
- WP Maintenance Mode can be unstable due the cache plugins, we recommend to deactivate any cache plugin when maintenance mode is active.
69
-
70
- = Exclude list =
71
- If you change your login url, please add the new slug (url: http://domain.com/newlogin, then you should add: newlogin) to Exclude list from plugin settings -> General Tab.
72
-
73
- == Changelog ==
74
-
75
- = 2.0.3 (07/10/2014) =
76
- * WP_Super_Cache issue was fixed
77
- * fixed "Subscribe" button issue on Safari mobile
78
- * fixed color of subscribe-success message (same color as subscribe_text)
79
- * "Social networks" module edits: settings for links target + a new social network: linkedin
80
- * new module "Google Analytics"
81
- * loginform shortcode reintroduced
82
- * dashboard link on maintenance page reintroduced
83
- * the content editor accepts new css inline properties: min-height, max-height, min-width, max-width. Use them wisely! :)
84
- * Settings & sidebar view + old translation files edited
85
- * Update from old version 1.x to 2.x issue was fixed
86
- * Translate on activation issue was fixed
87
- * de_DE translation by Frank Bültge (http://bueltge.github.io/)
88
- * pt_PT translation (100% translated) by Pedro Mendonça (http://www.pedromendonca.pt)
89
- * ru_RU translation (100% translated) by affectiosus (https://github.com/affectiosus)
90
- * nl_NL translation by dhunink (https://github.com/dhunink)
91
- * es_ES translation (100% translated) by Erick Ruiz de Chavez (http://erickruizdechavez.com/)
92
- * fr_FR translation by Florian TIAR (https://github.com/Mahjouba91)
93
- * pt_BR translation by Jonatas Araújo (http://www.designworld.com.br/)
94
- * sv_SE translation by Andréas Lundgren (http://adevade.com/)
95
-
96
- = 2.0.2 (04/09/2014) =
97
- * Removed "Author Link" option from General
98
- * Countdown - save details fix
99
-
100
- = 2.0.1 (02/09/2014) =
101
- * Reintroduced some deprecated actions from old version (but still available in next 4 releases, after that will be removed) and replaced with new ones:
102
- - `wm_head` -> `wpmm_head`
103
- - `wm_footer` -> `wpmm_footer`
104
- * Multisite settings link fix
105
- * WP_Maintenance_Mode: init (array checking for custom_css arrays, move delete cache part into a helper, etc.), add_subscriber, send_contact, redirect fixes & optimizations
106
- * WP_Maintenance_Mode_Admin: save_plugin_settings fixes, delete_cache (new method)
107
- * Settings & Maintenance views fixes
108
- * Readme.txt changes
109
-
110
- = 2.0.0 (01/09/2014) =
111
- * Changed design and functionality, new features
112
- * Changed multisite behaviour: now you can activate maintenance individually (each blog from the network has it's own maintenance settings)
113
- * Removed actions: `wm_header`, `wm_footer`, `wm_content`
114
- * Removed filters: `wm_header`
115
- * Removed [loginform] shortcode
116
- * Some filters are deprecated (but still available in next 4 releases, after that will be removed) and replaced with new ones:
117
- - `wm_heading` -> `wpmm_heading`,
118
- - `wp_maintenance_mode_status_code` -> `wpmm_status_code`
119
- - `wm_title` -> `wpmm_meta_title`
120
- - `wm_meta_author` -> `wpmm_meta_author`
121
- - `wm_meta_description` -> `wpmm_meta_description`
122
- - `wm_meta_keywords` -> `wpmm_meta_keywords`
123
- * Added new filters:
124
- - `wpmm_backtime` - can be used to change the backtime from page header
125
- - `wpmm_meta_robots` - can be used to change `Robots Meta Tag` option (from General)
126
- - `wpmm_text` - can be used to change `Text` option (from Design > Content)
127
- - `wpmm_scripts` - can be used to embed new javascripts files
128
- - `wpmm_styles` - can be used to embed new css files
129
- - `wpmm_search_bots` - if you have `Bypass for Search Bots` option (from General) activated, it can be used to add new bots (useragents)
130
- * Removed themes and now we have a "Design" & "Modules" tabs, where the look and functionality of the maintenance page can be changed as you need
131
-
132
- = 07/07/2014 =
133
- * Switch to new owner, contributor
134
-
135
- = 1.8.11 (07/25/2013) =
136
- * Fixes for php notices in scrict mode
137
- * Alternative for check url, if curl is not installed
138
-
139
- = 1.8.10 (07/18/2013) =
140
- * Add check for urls, Performance topics
141
- * Change default setting of 'Support Link' to false
142
- * Fix network settings php notices
143
-
144
- = 1.8.9 (06/20/2013) =
145
- * Allow empty header, title, heading string
146
- * Small code changes
147
- * Add Support function
148
- * Remove preview, will include later in a new release with extra settings page
149
-
150
- = 1.8.8 (06/05/2013) =
151
- * Fix path to localized flash content
152
- * Fix preview function
153
- * Add ukrainian translation
154
- * Add czech translation
155
- * Fix exclude function for IP
156
- * Security fix for save status via Ajax
157
-
158
- = 1.8.7 (04/07/2013) =
159
- * Add RTL support for splash page
160
- * Add Filter Hook `wp_maintenance_mode_status_code` Status Code; default is 503
161
- * Add support for custom splash page; leave a file with this name `wp-maintenance-mode.php` in the wp-content; the plugin use this file
162
- The plugin checks in `WP_CONTENT_DIR . '/wp-maintenance-mode.php'`
163
- * Small minor changes
164
- * Add filter for more date on splash page
165
-
166
- = 1.8.6 (02/22/2013) =
167
- * Remove log inside console for JS
168
- * Add support for time inside the countdown
169
- * Add filter hook `wm_meta_author`for the meta data author
170
- * Add filter hook `wm_meta_description` for custom description
171
- * Add filter hook `wm_meta_keywords`for custom meta keys
172
-
173
- = 1.8.5 (01/24/2013) =
174
- * Added new settings for hide, view notices about the active maintenance mode
175
- * Changes on source, codex
176
- * Fix PHP Notices [Support Thread](http://wordpress.org/support/topic/error-message-in-settings-1)
177
- * Change default settings, added ajax
178
- * Fix Preview function
179
- * Fix uninstall in WPMU
180
- * Small updates on styles for login form
181
-
182
- = 1.8.4 (12/06/2012) =
183
- * Fix for include JS in frontend to use countdown
184
- * Small mini fix for a php notice
185
- * Add charset on spalsh page for strange databases
186
- * Enhanced default exclude adresses
187
- * Add shortcode `[loginform]` for easy use a login form in splash page
188
- * Test with WordPress 3.5
189
-
190
- = 1.8.3 =
191
- * Fix for the forgotten update of JS-files; slow SVN :(
192
- * Minor Fixes
193
-
194
- = 1.8.2 =
195
- * Add different access for Frontend and Backend
196
- * Add Rewrite after Login for Frontend Access
197
- * Different small changes
198
- * Test for WP 3.5
199
-
200
- = 1.8.1 =
201
- * Add option for value of robots meta tag
202
- * Add option for optional admin login
203
-
204
- = 1.8.0 =
205
- * Include all scripts in backend via function
206
- * Update datepicker and countdown js
207
- * Supportet IP as exclude for see the frontend
208
- * Add support for flish cache od WP Super Cache and W3 Total Cache plugins
209
- * Fix for changes in WP 3.3 Multisite
210
-
211
- = 1.7.1 (12/05/2011) =
212
- * fix for WP smaller 3.2* on Network
213
-
214
- = 1.7.0 (12/02/2011) =
215
- * add functionalities to use in WP Multisite
216
- * remove message in header, current is not fixed the ticked in core and the message on Admin Bar an Notice is enough
217
- * check on WP 3.3RC1
218
-
219
- = 1.6.10 (08/30/2011) =
220
- * add hint in Admin Bar, if active
221
- * small changes for WP Codex
222
-
223
- = 1.6.9 (06/13/2011) =
224
- * Small fix for empty string on custom design
225
-
226
- = 1.6.8 (04/05/2011) =
227
- * Small changes on check for datepicker
228
- * Fix for Design monster
229
-
230
- = 1.6.7 (01/05/2011) =
231
- * Bugfix: new check for files for different themes; hope this fix the server errors
232
- * Bugfix: fix add default settings
233
- * Maintenance: different changes on the syntax
234
- * Feature: add check for Super Admin on WP Multisite; has allways the rights for access
235
- * Feature: now it is possible to exclude feed from maintenance mode
236
- * Maintenance: check with 3.0.4 and 3.1-RC2
237
- * Maintenance: update language file: .pot, de_DE
238
- * Bugfix: JavaScript error on Bulk Actions on plugins fixed
239
- * Maintenance: fix all notice, if set no values
240
-
241
- = 1.6.6. (10/09/2010) =
242
- * Maintenance: many changes on the code; $locale and hook in side frontend
243
- * Maintenance: change attribute_escaped to esc_attr with custom method for WP smaller 2.8
244
- * Maintenance: Update german language files
245
- * Feature: Shortcodes is now possible in the "Text" option
246
- * Feature: no cache header rewrite
247
-
248
- = 1.6.5 (09/16/2010) =
249
- * add new design "Chemistry" by [elmastudio.de](http://www.elmastudio.de/ "elmastudio.de")
250
- * changes for include methods od class for preview
251
- * changes the possibility for include of language specific flash files
252
-
253
- = 1.6.4 (09/13/2010) =
254
- * add preview functions
255
- * bugfix for list in wp-admin/plugins.php
256
- * remove datepicker.regional - dont work fine
257
- * different small changes
258
- * new language file .pot
259
- * add flash file and change on plugin for style "Animate" for spanish language
260
-
261
- = 1.6.3 (07/27/2010) =
262
- * bugfix to include stylesheet on maintenance mode message
263
-
264
- = 1.6.2 (07/08/2010) =
265
- * add functions for hint in the new UI of WP 3.0
266
- * add more WP Codex standard source
267
- * fix strings in the language and languages files
268
- * add datetimepicker-de
269
-
270
- = 1.6.1 (06/18/2010) =
271
- * fix a problem with https://; see [Ticket #13941](http://core.trac.wordpress.org/ticket/13941)
272
-
273
- = 1.6 (05/17/2010) =
274
- * bugfix for exclude sites
275
-
276
- = 1.5.9 (05/07/2010) =
277
- * change different points
278
- * add possibility to wotk with MySQLDumper
279
-
280
- = 1.5.8 (21/03/2010)=
281
- * fix exclude error
282
- * add textareas for heading and header fields
283
-
284
- = 1.5.7 (03/18/2010) =
285
- * block admin-area via role
286
- * add message for registered users with not enough rights
287
- * add message on login-page
288
- * different changes
289
-
290
- = 1.5.6 (02/25/2010) =
291
- * changes on css, site.php and different syntax on the plugin
292
-
293
- = 1.5.5 (02/23/2010) =
294
- * SORRY, small bug for the url to jQuery
295
-
296
- = 1.5.4 (02/23/2010) =
297
- * add time for countdown
298
- * changes for WP 3.0
299
- * changees on rights to see frontend
300
-
301
- = 1.5.3 (01/05/2010) =
302
- * Fix for JavaScript with WordPress 2.9
303
- * Add new custom fields for fronted: title, header, heading
304
- * Fix for setting userrole to see frontend
305
- * Change laguage files
306
-
307
- = 1.5.2 (01/04/2010) =
308
- * add user-role setting
309
- * correctly the de_DE language file
310
-
311
- = 1.5.1 (10/04/2009) =
312
- * add small fix
313
- * add language files (en_ES, ro_RO)
314
-
315
- = 1.5.0 (09/28/2009) =
316
- * add countdown
317
- * change options
318
- * change default options
319
- * add field for own adress to excerpt of the maintenance mode
320
- * etc.
321
-
322
- = 1.4.9 (07/09/2009) =
323
- * also ready for WordPress 2.6
324
- * add romanian language files
325
- * add italian language file by [Gianni Diurno](http://gidibao.net/ "Gianni Diurno")
326
-
327
- = 1.4.8 (03/09/2009) =
328
- * add design "Damask" by [Fabian Letscher](http://fabianletscher.de/ "Fabian Letscher")
329
- * add design "Lego" by [Alex Frison](http://www.afrison.com/ "Alex Frison")
330
-
331
- = 1.4.7 (26/08/2009) =
332
- * change doc-type to utf-8 without BOM
333
-
334
- = v1.4.6 (24/08/2009) =
335
- * add design "Animate (Flash)" by [Sebastian Schmiedel](http://www.cayou-media.de/ "Sebastian Schmiedel")
336
- * add new hook for add content `wm_content` to include flash on content
337
- * add frensh language files
338
-
339
- = v1.4.5 (19/08/2009) =
340
- * fix html string in text on frontend
341
- * add design "Paint" by [Marvin Labod](http://bugeyes.de/ "Marvin Labod")
342
- * add turkey language files
343
-
344
- = v1.4.4 (18/08/2009) =
345
- * add design "Chastely" by [Florian Andreas Vogelmaier](http://fv-web.de/ "Florian Andreas Vogelmaier")
346
- * add design "Only Typo" by [Robert Pfotenhauer](http://krautsuppe.de/ "Robert Pfotenhauer")
347
-
348
- = v1.4.3 (13/08/2009) =
349
- * add option for the Text
350
- * add option for active maintenance mode
351
- * add design "The FF Error" by [Thomas Meschke](http://www.lokalnetz.com/ "Thomas Meschke")
352
- * add design "Monster" by [Sebastian Sebald](http://www.backseatsurfer.de "Sebastian Sebald")
353
-
354
- = v1.4.2 (10/08/2009) =
355
- * add design "The Sun" by [Nicki Steiger](http://mynicki.net/ "Nicki Steiger")
356
- * now it is possible to add own css and add in settings the url to the css-file
357
-
358
- = v1.4.1 (07/08/2009) =
359
- * small html-fix
360
-
361
- = v1.4 (06/08/2009) =
362
- * complety new code
363
- * options menu
364
- * new designs by [David Hellmann](http://www.davidhellmann.com/ "David Hellmann")
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ === WP Maintenance Mode ===
2
+ Contributors: Designmodo, GeorgeJipa
3
+ Plugin Name: WP Maintenance Mode
4
+ Plugin URI: http://designmodo.com/
5
+ Author: Designmodo
6
+ Author URI: http://designmodo.com/
7
+ Tags: maintenance mode, admin, administration, unavailable, coming soon, multisite, landing page, under construction, contact form, subscribe, countdown
8
+ Requires at least: 3.5
9
+ Tested up to: 4.5.2
10
+ Stable tag: 2.0.4
11
+ License: GPL-2.0+
12
+
13
+ Adds a splash page to your site that lets visitors know your site is down for maintenance. It's perfect for a coming soon page.
14
+
15
+ == Description ==
16
+
17
+ Add a maintenance page to your blog that lets visitors know your blog is down for maintenance, or add a coming soon page for a new website. User with admin rights gets full access to the blog including the front end.
18
+
19
+ Activate the plugin and your blog is in maintenance-mode, works and only registered users with enough rights can see the front end. You can use a date with a countdown timer for visitor information or set a value and unit for information.
20
+ Also works with WordPress Multisite installs (each blog from the network has it's own maintenance settings).
21
+
22
+ = Features =
23
+
24
+ * Fully customizable (change colors, texts and backgrounds);
25
+ * Subscription form (export emails to .csv file);
26
+ * Countdown timer (remaining time);
27
+ * Contact form (receive emails from visitors);
28
+ * Coming soon page;
29
+ * Landing page templates;
30
+ * WordPress multisite;
31
+ * Responsive design;
32
+ * Social media icons;
33
+ * Works with any WordPress theme;
34
+ * SEO options;
35
+ * Exclude URLs from maintenance.
36
+
37
+ = Bugs, technical hints or contribute =
38
+
39
+ Please give us feedback, contribute and file technical bugs on [GitHub Repo](https://github.com/Designmodocom/WP-Maintenance-Mode).
40
+
41
+ = Credits =
42
+
43
+ Developed by [Designmodo](http://designmodo.com)
44
+
45
+ == Installation ==
46
+
47
+ 1. Unpack the download package
48
+ 2. Upload all files to the `/wp-content/plugins/` directory, include folders
49
+ 3. Activate the plugin through the 'Plugins' menu in WordPress
50
+ 4. Go to `Settings` page, where you can change what settings you need (pay attention to **Exclude** option!)
51
+
52
+ == Screenshots ==
53
+
54
+ 1. Maintenance Mode example
55
+ 2. Maintenance Mode example #2
56
+ 3. Contact form
57
+ 4. Dashboard General settings
58
+ 5. Dashboard Design settings
59
+ 6. Dashboard Modules settings
60
+
61
+ == Frequently Asked Questions ==
62
+
63
+ = How to use plugin filters =
64
+ See [GitHub Repo] (https://github.com/Designmodocom/WP-Maintenance-Mode) FAQ.
65
+
66
+ = Cache Plugin Support =
67
+ WP Maintenance Mode can be unstable due the cache plugins, we recommend to deactivate any cache plugin when maintenance mode is active.
68
+
69
+ = Exclude list =
70
+ If you change your login url, please add the new slug (url: http://domain.com/newlogin, then you should add: newlogin) to Exclude list from plugin settings -> General Tab.
71
+
72
+ == Changelog ==
73
+
74
+ = 2.0.4 (17/06/2016) =
75
+ * fixed issue: responsive subscribe form
76
+ * fixed issue: jQuery was loaded from a different folder on some WP installations
77
+ * fixed issue: errors after update (strstr on empty strings because of saving empty lines on exclude list)
78
+ * fixed issue: if "Redirection" from "General" tab is active, also redirects ajax calls
79
+ * fixed issue: settings page title was wrong placed
80
+ * "contact" feature update - nice email template + reply-to email header
81
+ * refactoring for some methods
82
+ * all assets are now minified
83
+ * rewrite count db records function (used on subscribers count)
84
+ * compatible with https://github.com/afragen/github-updater
85
+ * compatible with wp-cli http://wp-cli.org/
86
+ * improved responsivity
87
+ * improved roles access; now you can set multiple roles (editor, author, subscriber, contributor) and administrator will always have access to backend and frontend
88
+ * it_IT translation by benedettogit (https://github.com/benedettogit)
89
+ * updated all language files (need help for 100% translation)
90
+
91
+
92
+ = 2.0.3 (07/10/2014) =
93
+ * WP_Super_Cache issue was fixed
94
+ * fixed "Subscribe" button issue on Safari mobile
95
+ * fixed color of subscribe-success message (same color as subscribe_text)
96
+ * "Social networks" module edits: settings for links target + a new social network: linkedin
97
+ * new module "Google Analytics"
98
+ * loginform shortcode reintroduced
99
+ * dashboard link on maintenance page reintroduced
100
+ * the content editor accepts new css inline properties: min-height, max-height, min-width, max-width. Use them wisely! :)
101
+ * Settings & sidebar view + old translation files edited
102
+ * Update from old version 1.x to 2.x issue was fixed
103
+ * Translate on activation issue was fixed
104
+ * de_DE translation by Frank Bültge (http://bueltge.github.io/)
105
+ * pt_PT translation (100% translated) by Pedro Mendonça (http://www.pedromendonca.pt)
106
+ * ru_RU translation (100% translated) by affectiosus (https://github.com/affectiosus)
107
+ * nl_NL translation by dhunink (https://github.com/dhunink)
108
+ * es_ES translation (100% translated) by Erick Ruiz de Chavez (http://erickruizdechavez.com/)
109
+ * fr_FR translation by Florian TIAR (https://github.com/Mahjouba91)
110
+ * pt_BR translation by Jonatas Araújo (http://www.designworld.com.br/)
111
+ * sv_SE translation by Andréas Lundgren (http://adevade.com/)
112
+
113
+ = 2.0.2 (04/09/2014) =
114
+ * Removed "Author Link" option from General
115
+ * Countdown - save details fix
116
+
117
+ = 2.0.1 (02/09/2014) =
118
+ * Reintroduced some deprecated actions from old version (but still available in next 4 releases, after that will be removed) and replaced with new ones:
119
+ - `wm_head` -> `wpmm_head`
120
+ - `wm_footer` -> `wpmm_footer`
121
+ * Multisite settings link fix
122
+ * WP_Maintenance_Mode: init (array checking for custom_css arrays, move delete cache part into a helper, etc.), add_subscriber, send_contact, redirect fixes & optimizations
123
+ * WP_Maintenance_Mode_Admin: save_plugin_settings fixes, delete_cache (new method)
124
+ * Settings & Maintenance views fixes
125
+ * Readme.txt changes
126
+
127
+ = 2.0.0 (01/09/2014) =
128
+ * Changed design and functionality, new features
129
+ * Changed multisite behaviour: now you can activate maintenance individually (each blog from the network has it's own maintenance settings)
130
+ * Removed actions: `wm_header`, `wm_footer`, `wm_content`
131
+ * Removed filters: `wm_header`
132
+ * Removed [loginform] shortcode
133
+ * Some filters are deprecated (but still available in next 4 releases, after that will be removed) and replaced with new ones:
134
+ - `wm_heading` -> `wpmm_heading`,
135
+ - `wp_maintenance_mode_status_code` -> `wpmm_status_code`
136
+ - `wm_title` -> `wpmm_meta_title`
137
+ - `wm_meta_author` -> `wpmm_meta_author`
138
+ - `wm_meta_description` -> `wpmm_meta_description`
139
+ - `wm_meta_keywords` -> `wpmm_meta_keywords`
140
+ * Added new filters:
141
+ - `wpmm_backtime` - can be used to change the backtime from page header
142
+ - `wpmm_meta_robots` - can be used to change `Robots Meta Tag` option (from General)
143
+ - `wpmm_text` - can be used to change `Text` option (from Design > Content)
144
+ - `wpmm_scripts` - can be used to embed new javascripts files
145
+ - `wpmm_styles` - can be used to embed new css files
146
+ - `wpmm_search_bots` - if you have `Bypass for Search Bots` option (from General) activated, it can be used to add new bots (useragents)
147
+ * Removed themes and now we have a "Design" & "Modules" tabs, where the look and functionality of the maintenance page can be changed as you need
148
+
149
+ = 07/07/2014 =
150
+ * Switch to new owner, contributor
151
+
152
+ = 1.8.11 (07/25/2013) =
153
+ * Fixes for php notices in scrict mode
154
+ * Alternative for check url, if curl is not installed
155
+
156
+ = 1.8.10 (07/18/2013) =
157
+ * Add check for urls, Performance topics
158
+ * Change default setting of 'Support Link' to false
159
+ * Fix network settings php notices
160
+
161
+ = 1.8.9 (06/20/2013) =
162
+ * Allow empty header, title, heading string
163
+ * Small code changes
164
+ * Add Support function
165
+ * Remove preview, will include later in a new release with extra settings page
166
+
167
+ = 1.8.8 (06/05/2013) =
168
+ * Fix path to localized flash content
169
+ * Fix preview function
170
+ * Add ukrainian translation
171
+ * Add czech translation
172
+ * Fix exclude function for IP
173
+ * Security fix for save status via Ajax
174
+
175
+ = 1.8.7 (04/07/2013) =
176
+ * Add RTL support for splash page
177
+ * Add Filter Hook `wp_maintenance_mode_status_code` Status Code; default is 503
178
+ * Add support for custom splash page; leave a file with this name `wp-maintenance-mode.php` in the wp-content; the plugin use this file
179
+ The plugin checks in `WP_CONTENT_DIR . '/wp-maintenance-mode.php'`
180
+ * Small minor changes
181
+ * Add filter for more date on splash page
182
+
183
+ = 1.8.6 (02/22/2013) =
184
+ * Remove log inside console for JS
185
+ * Add support for time inside the countdown
186
+ * Add filter hook `wm_meta_author`for the meta data author
187
+ * Add filter hook `wm_meta_description` for custom description
188
+ * Add filter hook `wm_meta_keywords`for custom meta keys
189
+
190
+ = 1.8.5 (01/24/2013) =
191
+ * Added new settings for hide, view notices about the active maintenance mode
192
+ * Changes on source, codex
193
+ * Fix PHP Notices [Support Thread](http://wordpress.org/support/topic/error-message-in-settings-1)
194
+ * Change default settings, added ajax
195
+ * Fix Preview function
196
+ * Fix uninstall in WPMU
197
+ * Small updates on styles for login form
198
+
199
+ = 1.8.4 (12/06/2012) =
200
+ * Fix for include JS in frontend to use countdown
201
+ * Small mini fix for a php notice
202
+ * Add charset on spalsh page for strange databases
203
+ * Enhanced default exclude adresses
204
+ * Add shortcode `[loginform]` for easy use a login form in splash page
205
+ * Test with WordPress 3.5
206
+
207
+ = 1.8.3 =
208
+ * Fix for the forgotten update of JS-files; slow SVN :(
209
+ * Minor Fixes
210
+
211
+ = 1.8.2 =
212
+ * Add different access for Frontend and Backend
213
+ * Add Rewrite after Login for Frontend Access
214
+ * Different small changes
215
+ * Test for WP 3.5
216
+
217
+ = 1.8.1 =
218
+ * Add option for value of robots meta tag
219
+ * Add option for optional admin login
220
+
221
+ = 1.8.0 =
222
+ * Include all scripts in backend via function
223
+ * Update datepicker and countdown js
224
+ * Supportet IP as exclude for see the frontend
225
+ * Add support for flish cache od WP Super Cache and W3 Total Cache plugins
226
+ * Fix for changes in WP 3.3 Multisite
227
+
228
+ = 1.7.1 (12/05/2011) =
229
+ * fix for WP smaller 3.2* on Network
230
+
231
+ = 1.7.0 (12/02/2011) =
232
+ * add functionalities to use in WP Multisite
233
+ * remove message in header, current is not fixed the ticked in core and the message on Admin Bar an Notice is enough
234
+ * check on WP 3.3RC1
235
+
236
+ = 1.6.10 (08/30/2011) =
237
+ * add hint in Admin Bar, if active
238
+ * small changes for WP Codex
239
+
240
+ = 1.6.9 (06/13/2011) =
241
+ * Small fix for empty string on custom design
242
+
243
+ = 1.6.8 (04/05/2011) =
244
+ * Small changes on check for datepicker
245
+ * Fix for Design monster
246
+
247
+ = 1.6.7 (01/05/2011) =
248
+ * Bugfix: new check for files for different themes; hope this fix the server errors
249
+ * Bugfix: fix add default settings
250
+ * Maintenance: different changes on the syntax
251
+ * Feature: add check for Super Admin on WP Multisite; has allways the rights for access
252
+ * Feature: now it is possible to exclude feed from maintenance mode
253
+ * Maintenance: check with 3.0.4 and 3.1-RC2
254
+ * Maintenance: update language file: .pot, de_DE
255
+ * Bugfix: JavaScript error on Bulk Actions on plugins fixed
256
+ * Maintenance: fix all notice, if set no values
257
+
258
+ = 1.6.6. (10/09/2010) =
259
+ * Maintenance: many changes on the code; $locale and hook in side frontend
260
+ * Maintenance: change attribute_escaped to esc_attr with custom method for WP smaller 2.8
261
+ * Maintenance: Update german language files
262
+ * Feature: Shortcodes is now possible in the "Text" option
263
+ * Feature: no cache header rewrite
264
+
265
+ = 1.6.5 (09/16/2010) =
266
+ * add new design "Chemistry" by [elmastudio.de](http://www.elmastudio.de/ "elmastudio.de")
267
+ * changes for include methods od class for preview
268
+ * changes the possibility for include of language specific flash files
269
+
270
+ = 1.6.4 (09/13/2010) =
271
+ * add preview functions
272
+ * bugfix for list in wp-admin/plugins.php
273
+ * remove datepicker.regional - dont work fine
274
+ * different small changes
275
+ * new language file .pot
276
+ * add flash file and change on plugin for style "Animate" for spanish language
277
+
278
+ = 1.6.3 (07/27/2010) =
279
+ * bugfix to include stylesheet on maintenance mode message
280
+
281
+ = 1.6.2 (07/08/2010) =
282
+ * add functions for hint in the new UI of WP 3.0
283
+ * add more WP Codex standard source
284
+ * fix strings in the language and languages files
285
+ * add datetimepicker-de
286
+
287
+ = 1.6.1 (06/18/2010) =
288
+ * fix a problem with https://; see [Ticket #13941](http://core.trac.wordpress.org/ticket/13941)
289
+
290
+ = 1.6 (05/17/2010) =
291
+ * bugfix for exclude sites
292
+
293
+ = 1.5.9 (05/07/2010) =
294
+ * change different points
295
+ * add possibility to wotk with MySQLDumper
296
+
297
+ = 1.5.8 (21/03/2010)=
298
+ * fix exclude error
299
+ * add textareas for heading and header fields
300
+
301
+ = 1.5.7 (03/18/2010) =
302
+ * block admin-area via role
303
+ * add message for registered users with not enough rights
304
+ * add message on login-page
305
+ * different changes
306
+
307
+ = 1.5.6 (02/25/2010) =
308
+ * changes on css, site.php and different syntax on the plugin
309
+
310
+ = 1.5.5 (02/23/2010) =
311
+ * SORRY, small bug for the url to jQuery
312
+
313
+ = 1.5.4 (02/23/2010) =
314
+ * add time for countdown
315
+ * changes for WP 3.0
316
+ * changees on rights to see frontend
317
+
318
+ = 1.5.3 (01/05/2010) =
319
+ * Fix for JavaScript with WordPress 2.9
320
+ * Add new custom fields for fronted: title, header, heading
321
+ * Fix for setting userrole to see frontend
322
+ * Change laguage files
323
+
324
+ = 1.5.2 (01/04/2010) =
325
+ * add user-role setting
326
+ * correctly the de_DE language file
327
+
328
+ = 1.5.1 (10/04/2009) =
329
+ * add small fix
330
+ * add language files (en_ES, ro_RO)
331
+
332
+ = 1.5.0 (09/28/2009) =
333
+ * add countdown
334
+ * change options
335
+ * change default options
336
+ * add field for own adress to excerpt of the maintenance mode
337
+ * etc.
338
+
339
+ = 1.4.9 (07/09/2009) =
340
+ * also ready for WordPress 2.6
341
+ * add romanian language files
342
+ * add italian language file by [Gianni Diurno](http://gidibao.net/ "Gianni Diurno")
343
+
344
+ = 1.4.8 (03/09/2009) =
345
+ * add design "Damask" by [Fabian Letscher](http://fabianletscher.de/ "Fabian Letscher")
346
+ * add design "Lego" by [Alex Frison](http://www.afrison.com/ "Alex Frison")
347
+
348
+ = 1.4.7 (26/08/2009) =
349
+ * change doc-type to utf-8 without BOM
350
+
351
+ = v1.4.6 (24/08/2009) =
352
+ * add design "Animate (Flash)" by [Sebastian Schmiedel](http://www.cayou-media.de/ "Sebastian Schmiedel")
353
+ * add new hook for add content `wm_content` to include flash on content
354
+ * add frensh language files
355
+
356
+ = v1.4.5 (19/08/2009) =
357
+ * fix html string in text on frontend
358
+ * add design "Paint" by [Marvin Labod](http://bugeyes.de/ "Marvin Labod")
359
+ * add turkey language files
360
+
361
+ = v1.4.4 (18/08/2009) =
362
+ * add design "Chastely" by [Florian Andreas Vogelmaier](http://fv-web.de/ "Florian Andreas Vogelmaier")
363
+ * add design "Only Typo" by [Robert Pfotenhauer](http://krautsuppe.de/ "Robert Pfotenhauer")
364
+
365
+ = v1.4.3 (13/08/2009) =
366
+ * add option for the Text
367
+ * add option for active maintenance mode
368
+ * add design "The FF Error" by [Thomas Meschke](http://www.lokalnetz.com/ "Thomas Meschke")
369
+ * add design "Monster" by [Sebastian Sebald](http://www.backseatsurfer.de "Sebastian Sebald")
370
+
371
+ = v1.4.2 (10/08/2009) =
372
+ * add design "The Sun" by [Nicki Steiger](http://mynicki.net/ "Nicki Steiger")
373
+ * now it is possible to add own css and add in settings the url to the css-file
374
+
375
+ = v1.4.1 (07/08/2009) =
376
+ * small html-fix
377
+
378
+ = v1.4 (06/08/2009) =
379
+ * complety new code
380
+ * options menu
381
+ * new designs by [David Hellmann](http://www.davidhellmann.com/ "David Hellmann")
uninstall.php CHANGED
@@ -1,36 +1,36 @@
1
- <?php
2
-
3
- // If uninstall not called from WordPress, then exit
4
- if (!defined('WP_UNINSTALL_PLUGIN')) {
5
- exit();
6
- }
7
-
8
- /**
9
- * Uninstall operations
10
- */
11
- function single_uninstall() {
12
- // delete subscribers table
13
- $GLOBALS['wpdb']->query("DROP TABLE IF EXISTS {$GLOBALS['wpdb']->prefix}wpmm_subscribers");
14
-
15
- // delete options
16
- delete_option('wpmm_settings');
17
- delete_option('wpmm_notice');
18
- delete_option('wpmm_version');
19
- }
20
-
21
- // Let's do it!
22
- if (is_multisite()) {
23
- single_uninstall();
24
-
25
- // delete data foreach blog
26
- $blogs_list = $GLOBALS['wpdb']->get_results("SELECT blog_id FROM {$GLOBALS['wpdb']->blogs}", ARRAY_A);
27
- if (!empty($blogs_list)) {
28
- foreach ($blogs_list as $blog) {
29
- switch_to_blog($blog['blog_id']);
30
- single_uninstall();
31
- restore_current_blog();
32
- }
33
- }
34
- } else {
35
- single_uninstall();
36
  }
1
+ <?php
2
+
3
+ // If uninstall not called from WordPress, then exit
4
+ if (!defined('WP_UNINSTALL_PLUGIN')) {
5
+ exit();
6
+ }
7
+
8
+ /**
9
+ * Uninstall operations
10
+ */
11
+ function single_uninstall() {
12
+ // delete subscribers table
13
+ $GLOBALS['wpdb']->query("DROP TABLE IF EXISTS {$GLOBALS['wpdb']->prefix}wpmm_subscribers");
14
+
15
+ // delete options
16
+ delete_option('wpmm_settings');
17
+ delete_option('wpmm_notice');
18
+ delete_option('wpmm_version');
19
+ }
20
+
21
+ // Let's do it!
22
+ if (is_multisite()) {
23
+ single_uninstall();
24
+
25
+ // delete data foreach blog
26
+ $blogs_list = $GLOBALS['wpdb']->get_results("SELECT blog_id FROM {$GLOBALS['wpdb']->blogs}", ARRAY_A);
27
+ if (!empty($blogs_list)) {
28
+ foreach ($blogs_list as $blog) {
29
+ switch_to_blog($blog['blog_id']);
30
+ single_uninstall();
31
+ restore_current_blog();
32
+ }
33
+ }
34
+ } else {
35
+ single_uninstall();
36
  }
views/contact.php ADDED
@@ -0,0 +1,98 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <!doctype html>
2
+ <html>
3
+ <head>
4
+ <style>
5
+ @media screen and (max-width: 500px) {
6
+ #wrap {
7
+ width: 100%;
8
+ }
9
+ }
10
+ </style>
11
+ </head>
12
+ <body style="margin:0;padding:0;background:#efefef;">
13
+ <table align="center" cellpadding="0" cellspacing="0" width="500" id="wrap">
14
+ <tr>
15
+ <td height="60"></td>
16
+ </tr>
17
+ <!-- Content -->
18
+ <tr>
19
+ <td>
20
+ <table style="padding:0 25px;" cellspacing="0" cellspacing="0" style="border:1px solid #e3e5e5" bgcolor="#fff" width="100%">
21
+ <tr>
22
+ <td height="60"></td>
23
+ </tr>
24
+ <tr>
25
+ <td style="text-align:center;">
26
+ <img src="<?php echo WPMM_IMAGES_URL . 'icon-48.png'; ?>" />
27
+ </td>
28
+ </tr>
29
+ <tr>
30
+ <td height="40"></td>
31
+ </tr>
32
+ <tr>
33
+ <td style="color:#747e7e;font-family:Lato, Helvetica, Arial, sans-serif;text-align:center;font-size:18px;font-weight:normal;">
34
+ <?php printf(__('You have been contacted via %s.', $this->plugin_slug), get_bloginfo('name')); ?>
35
+ </td>
36
+ </tr>
37
+ <tr>
38
+ <td height="30"></td>
39
+ </tr>
40
+ <tr>
41
+ <td width="100%">
42
+ <table cellspacing="0" cellpadding="0" width="100%">
43
+ <tbody>
44
+ <tr>
45
+ <td height="30"></td>
46
+ <td height="30"></td>
47
+ </tr>
48
+ <tr>
49
+ <td width="20%" style="border-bottom:1px solid #e3e5e5;padding:0 0 30px 20px;text-align:left;font-size:14px;font-family:Lato, Helvetica, Arial, sans-serif;color:#747e7e;font-weight:bold;">
50
+ <?php _e('Name:', $this->plugin_slug); ?>
51
+ </td>
52
+ <td width="80%" style="border-bottom:1px solid #e3e5e5;padding:0 0 30px 20px;text-align:left;font-size:14px;font-family:Lato, Helvetica, Arial, sans-serif;color:#747e7e;">
53
+ <?php echo sanitize_text_field($_POST['name']); ?>
54
+ </td>
55
+ </tr>
56
+ <tr>
57
+ <td height="30"></td>
58
+ <td height="30"></td>
59
+ </tr>
60
+ <tr>
61
+ <td width="20%" style="border-bottom:1px solid #e3e5e5;padding:0 0 30px 20px;text-align:left;font-size:14px;font-family:Lato, Helvetica, Arial, sans-serif;color:#747e7e;font-weight:bold;">
62
+ <?php _e('Email:', $this->plugin_slug); ?>
63
+ </td>
64
+ <td width="80%" style="border-bottom:1px solid #e3e5e5;padding:0 0 30px 20px;text-align:left;font-size:14px;font-family:Lato, Helvetica, Arial, sans-serif;color:#747e7e;">
65
+ <?php echo sanitize_text_field($_POST['email']); ?>
66
+ </td>
67
+ </tr>
68
+ <tr>
69
+ <td height="30"></td>
70
+ <td height="30"></td>
71
+ </tr>
72
+ <tr>
73
+ <td colspan="2" style="padding:0 0 30px 20px;text-align:left;font-size:14px;font-family:Lato, Helvetica, Arial, sans-serif;color:#747e7e;font-weight:bold;">
74
+ <?php _e('Content:', $this->plugin_slug); ?>
75
+ </td>
76
+ </tr>
77
+ <tr>
78
+ <td colspan="2" style="padding:0 0 20px 20px;text-align:left;font-size:14px;font-family:Lato, Helvetica, Arial, sans-serif;color:#747e7e;">
79
+ <?php echo nl2br(stripslashes($_POST['content'])); ?>
80
+ </td>
81
+ </tr>
82
+ </tbody>
83
+ </table>
84
+ </td>
85
+ </tr>
86
+ <tr>
87
+ <td height="60"></td>
88
+ </tr>
89
+ </table>
90
+ </td>
91
+ </tr>
92
+ <tr>
93
+ <td height="60"></td>
94
+ </tr>
95
+ <!-- End Content -->
96
+ </table>
97
+ </body>
98
+ </html>
views/index.php CHANGED
@@ -1,2 +1,2 @@
1
- <?php
2
- // Silence is golden.
1
+ <?php
2
+ // Silence is golden.
views/loginform.php CHANGED
@@ -1,9 +1,9 @@
1
- <form name="loginform" class="login_form" action="<?php echo esc_url(site_url('wp-login.php', 'login_post')); ?>" method="post">
2
- <input type="text" placeholder="username" name="log" />
3
- <input type="password" placeholder="password" name="pwd" />
4
-
5
- <?php if (!empty($redirect)) { ?>
6
- <input type="hidden" name="redirect_to" value="<?php echo $redirect; ?>" />
7
- <?php } ?>
8
- <input type="submit" value="<?php _e('Login', 'wp-maintenance-mode'); ?>" />
9
  </form>
1
+ <form name="loginform" class="login_form" action="<?php echo esc_url(site_url('wp-login.php', 'login_post')); ?>" method="post">
2
+ <input type="text" placeholder="username" name="log" />
3
+ <input type="password" placeholder="password" name="pwd" />
4
+
5
+ <?php if (!empty($redirect)) { ?>
6
+ <input type="hidden" name="redirect_to" value="<?php echo $redirect; ?>" />
7
+ <?php } ?>
8
+ <input type="submit" value="<?php _e('Login', 'wp-maintenance-mode'); ?>" />
9
  </form>
views/maintenance.php CHANGED
@@ -1,119 +1,120 @@
1
- <!DOCTYPE html>
2
- <html>
3
- <head>
4
- <title><?php echo stripslashes($title); ?></title>
5
- <meta name="author" content="<?php echo esc_attr($author); ?>" />
6
- <meta name="description" content="<?php echo esc_attr($description); ?>" />
7
- <meta name="keywords" content="<?php echo esc_attr($keywords); ?>" />
8
- <meta name="robots" content="<?php echo esc_attr($robots); ?>" />
9
- <?php
10
- if (!empty($styles) && is_array($styles)) {
11
- foreach ($styles as $src) {
12
- ?>
13
- <link rel="stylesheet" href="<?php echo $src; ?>">
14
- <?php
15
- }
16
- }
17
- if (!empty($custom_css) && is_array($custom_css)) {
18
- echo '<style>' . implode(array_map('stripslashes', $custom_css)) . '</style>';
19
- }
20
-
21
- // do some actions
22
- do_action('wm_head'); // this hook will be removed in the next versions
23
- do_action('wpmm_head');
24
- ?>
25
- </head>
26
- <body class="<?php echo $body_classes ? $body_classes : ''; ?>">
27
- <div class="wrap">
28
- <?php if (!empty($heading)) { ?><h1><?php echo stripslashes($heading); ?></h1><?php } ?>
29
- <?php if (!empty($text)) { ?><h2><?php echo stripslashes($text); ?></h2><?php } ?>
30
-
31
- <?php
32
- if (!empty($this->plugin_settings['modules']['countdown_status']) && $this->plugin_settings['modules']['countdown_status'] == 1) {
33
- ?>
34
- <div class="countdown" data-start="<?php echo date('F d, Y H:i:s', strtotime($countdown_start)); ?>" data-end="<?php echo date('F d, Y H:i:s', $countdown_end); ?>"></div>
35
- <?php } ?>
36
-
37
- <?php if (!empty($this->plugin_settings['modules']['subscribe_status']) && $this->plugin_settings['modules']['subscribe_status'] == 1) { ?>
38
- <?php if (!empty($this->plugin_settings['modules']['subscribe_text'])) { ?><h3><?php echo stripslashes($this->plugin_settings['modules']['subscribe_text']); ?></h3><?php } ?>
39
- <div class="subscribe_wrapper" style="min-height: 100px;">
40
- <form class="subscribe_form">
41
- <input type="text" placeholder="<?php _e('your e-mail...', $this->plugin_slug); ?>" name="email" class="email_input" data-rule-required="true" data-rule-email="true" />
42
- <input type="submit" value="<?php _e('Subscribe', $this->plugin_slug); ?>" />
43
- </form>
44
- </div>
45
- <?php } ?>
46
-
47
- <?php if (!empty($this->plugin_settings['modules']['social_status']) && $this->plugin_settings['modules']['social_status'] == 1) { ?>
48
- <div class="social" data-target="<?php echo!empty($this->plugin_settings['modules']['social_target']) ? 1 : 0; ?>">
49
- <?php if (!empty($this->plugin_settings['modules']['social_twitter'])) { ?>
50
- <a class="tw" href="<?php echo stripslashes($this->plugin_settings['modules']['social_twitter']); ?>">twitter</a>
51
- <?php } ?>
52
-
53
- <?php if (!empty($this->plugin_settings['modules']['social_facebook'])) { ?>
54
- <a class="fb" href="<?php echo stripslashes($this->plugin_settings['modules']['social_facebook']); ?>">facebook</a>
55
- <?php } ?>
56
-
57
- <?php if (!empty($this->plugin_settings['modules']['social_pinterest'])) { ?>
58
- <a class="pin" href="<?php echo stripslashes($this->plugin_settings['modules']['social_pinterest']); ?>">pinterest</a>
59
- <?php } ?>
60
-
61
- <?php if (!empty($this->plugin_settings['modules']['social_github'])) { ?>
62
- <a class="git" href="<?php echo stripslashes($this->plugin_settings['modules']['social_github']); ?>">github</a>
63
- <?php } ?>
64
-
65
- <?php if (!empty($this->plugin_settings['modules']['social_dribbble'])) { ?>
66
- <a class="dribbble" href="<?php echo stripslashes($this->plugin_settings['modules']['social_dribbble']); ?>">dribbble</a>
67
- <?php } ?>
68
-
69
- <?php if (!empty($this->plugin_settings['modules']['social_google+'])) { ?>
70
- <a class="gplus" href="<?php echo stripslashes($this->plugin_settings['modules']['social_google+']); ?>">google plus</a>
71
- <?php } ?>
72
-
73
- <?php if (!empty($this->plugin_settings['modules']['social_linkedin'])) { ?>
74
- <a class="linkedin" href="<?php echo stripslashes($this->plugin_settings['modules']['social_linkedin']); ?>">linkedin</a>
75
- <?php } ?>
76
- </div>
77
- <?php } ?>
78
- <?php if (!empty($this->plugin_settings['modules']['contact_status']) && $this->plugin_settings['modules']['contact_status'] == 1) { ?>
79
- <div class="contact">
80
- <?php list($open, $close) = !empty($this->plugin_settings['modules']['contact_effects']) && strstr($this->plugin_settings['modules']['contact_effects'], '|') ? explode('|', $this->plugin_settings['modules']['contact_effects']) : explode('|', 'move_top|move_bottom'); ?>
81
- <div class="form <?php echo esc_attr($open); ?>">
82
- <form class="contact_form">
83
- <p class="col"><input type="text" placeholder="<?php _e('Name', $this->plugin_slug); ?>" data-rule-required="true" name="name" class="name_input" /></p>
84
- <p class="col last"><input type="text" placeholder="<?php _e('E-mail', $this->plugin_slug); ?>" data-rule-required="true" data-rule-email="true" name="email" class="email_input" /></p>
85
- <br clear="all" />
86
- <p><textarea placeholder="<?php _e('Your message', $this->plugin_slug); ?>" data-rule-required="true" name="content" class="content_textarea"></textarea></p>
87
- <p class="submit"><input type="submit" value="<?php _e('Send', $this->plugin_slug); ?>"></p>
88
- </form>
89
- </div>
90
- </div>
91
-
92
- <a class="contact_us" href="javascript:void(0);" data-open="<?php echo esc_attr($open); ?>" data-close="<?php echo esc_attr($close); ?>"><?php _e('Contact us', $this->plugin_slug); ?></a>
93
- <?php } ?>
94
-
95
- <?php if (!empty($this->plugin_settings['general']['admin_link']) && $this->plugin_settings['general']['admin_link'] == 1) { ?>
96
- <div class="author_link">
97
- <a href="<?php echo admin_url(); ?>"><?php _e('Dashboard', $this->plugin_slug); ?></a>
98
- </div>
99
- <?php } ?>
100
- </div>
101
-
102
- <script type='text/javascript'>
103
- var wpmm_vars = {"ajax_url": "<?php echo admin_url('admin-ajax.php'); ?>"};
104
- </script>
105
- <?php
106
- if (!empty($scripts) && is_array($scripts)) {
107
- foreach ($scripts as $src) {
108
- ?>
109
- <script src="<?php echo $src; ?>"></script>
110
- <?php
111
- }
112
- }
113
-
114
- // Do some actions
115
- do_action('wm_footer'); // this hook will be removed in the next versions
116
- do_action('wpmm_footer');
117
- ?>
118
- </body>
119
- </html>
 
1
+ <!DOCTYPE html>
2
+ <html>
3
+ <head>
4
+ <title><?php echo stripslashes($title); ?></title>
5
+ <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no" />
6
+ <meta name="author" content="<?php echo esc_attr($author); ?>" />
7
+ <meta name="description" content="<?php echo esc_attr($description); ?>" />
8
+ <meta name="keywords" content="<?php echo esc_attr($keywords); ?>" />
9
+ <meta name="robots" content="<?php echo esc_attr($robots); ?>" />
10
+ <?php
11
+ if (!empty($styles) && is_array($styles)) {
12
+ foreach ($styles as $src) {
13
+ ?>
14
+ <link rel="stylesheet" href="<?php echo $src; ?>">
15
+ <?php
16
+ }
17
+ }
18
+ if (!empty($custom_css) && is_array($custom_css)) {
19
+ echo '<style>' . implode(array_map('stripslashes', $custom_css)) . '</style>';
20
+ }
21
+
22
+ // do some actions
23
+ do_action('wm_head'); // this hook will be removed in the next versions
24
+ do_action('wpmm_head');
25
+ ?>
26
+ </head>
27
+ <body class="<?php echo $body_classes ? $body_classes : ''; ?>">
28
+ <div class="wrap">
29
+ <?php if (!empty($heading)) { ?><h1><?php echo stripslashes($heading); ?></h1><?php } ?>
30
+ <?php if (!empty($text)) { ?><h2><?php echo stripslashes($text); ?></h2><?php } ?>
31
+
32
+ <?php
33
+ if (!empty($this->plugin_settings['modules']['countdown_status']) && $this->plugin_settings['modules']['countdown_status'] == 1) {
34
+ ?>
35
+ <div class="countdown" data-start="<?php echo date('F d, Y H:i:s', strtotime($countdown_start)); ?>" data-end="<?php echo date('F d, Y H:i:s', $countdown_end); ?>"></div>
36
+ <?php } ?>
37
+
38
+ <?php if (!empty($this->plugin_settings['modules']['subscribe_status']) && $this->plugin_settings['modules']['subscribe_status'] == 1) { ?>
39
+ <?php if (!empty($this->plugin_settings['modules']['subscribe_text'])) { ?><h3><?php echo stripslashes($this->plugin_settings['modules']['subscribe_text']); ?></h3><?php } ?>
40
+ <div class="subscribe_wrapper" style="min-height: 100px;">
41
+ <form class="subscribe_form">
42
+ <input type="text" placeholder="<?php _e('your e-mail...', $this->plugin_slug); ?>" name="email" class="email_input" data-rule-required="true" data-rule-email="true" data-rule-required="true" data-rule-email="true" />
43
+ <input type="submit" value="<?php _e('Subscribe', $this->plugin_slug); ?>" />
44
+ </form>
45
+ </div>
46
+ <?php } ?>
47
+
48
+ <?php if (!empty($this->plugin_settings['modules']['social_status']) && $this->plugin_settings['modules']['social_status'] == 1) { ?>
49
+ <div class="social" data-target="<?php echo!empty($this->plugin_settings['modules']['social_target']) ? 1 : 0; ?>">
50
+ <?php if (!empty($this->plugin_settings['modules']['social_twitter'])) { ?>
51
+ <a class="tw" href="<?php echo stripslashes($this->plugin_settings['modules']['social_twitter']); ?>">twitter</a>
52
+ <?php } ?>
53
+
54
+ <?php if (!empty($this->plugin_settings['modules']['social_facebook'])) { ?>
55
+ <a class="fb" href="<?php echo stripslashes($this->plugin_settings['modules']['social_facebook']); ?>">facebook</a>
56
+ <?php } ?>
57
+
58
+ <?php if (!empty($this->plugin_settings['modules']['social_pinterest'])) { ?>
59
+ <a class="pin" href="<?php echo stripslashes($this->plugin_settings['modules']['social_pinterest']); ?>">pinterest</a>
60
+ <?php } ?>
61
+
62
+ <?php if (!empty($this->plugin_settings['modules']['social_github'])) { ?>
63
+ <a class="git" href="<?php echo stripslashes($this->plugin_settings['modules']['social_github']); ?>">github</a>
64
+ <?php } ?>
65
+
66
+ <?php if (!empty($this->plugin_settings['modules']['social_dribbble'])) { ?>
67
+ <a class="dribbble" href="<?php echo stripslashes($this->plugin_settings['modules']['social_dribbble']); ?>">dribbble</a>
68
+ <?php } ?>
69
+
70
+ <?php if (!empty($this->plugin_settings['modules']['social_google+'])) { ?>
71
+ <a class="gplus" href="<?php echo stripslashes($this->plugin_settings['modules']['social_google+']); ?>">google plus</a>
72
+ <?php } ?>
73
+
74
+ <?php if (!empty($this->plugin_settings['modules']['social_linkedin'])) { ?>
75
+ <a class="linkedin" href="<?php echo stripslashes($this->plugin_settings['modules']['social_linkedin']); ?>">linkedin</a>
76
+ <?php } ?>
77
+ </div>
78
+ <?php } ?>
79
+ <?php if (!empty($this->plugin_settings['modules']['contact_status']) && $this->plugin_settings['modules']['contact_status'] == 1) { ?>
80
+ <div class="contact">
81
+ <?php list($open, $close) = !empty($this->plugin_settings['modules']['contact_effects']) && strstr($this->plugin_settings['modules']['contact_effects'], '|') ? explode('|', $this->plugin_settings['modules']['contact_effects']) : explode('|', 'move_top|move_bottom'); ?>
82
+ <div class="form <?php echo esc_attr($open); ?>">
83
+ <form class="contact_form">
84
+ <p class="col"><input type="text" placeholder="<?php _e('Name', $this->plugin_slug); ?>" data-rule-required="true" data-msg-required="<?php esc_attr_e('This field is required.', $this->plugin_slug); ?>" name="name" class="name_input" /></p>
85
+ <p class="col last"><input type="text" placeholder="<?php _e('E-mail', $this->plugin_slug); ?>" data-rule-required="true" data-rule-email="true" data-msg-required="<?php esc_attr_e('This field is required.', $this->plugin_slug); ?>" data-msg-email="<?php esc_attr_e('Please enter a valid email address.', $this->plugin_slug); ?>" name="email" class="email_input" /></p>
86
+ <br clear="all" />
87
+ <p><textarea placeholder="<?php _e('Your message', $this->plugin_slug); ?>" data-rule-required="true" data-msg-required="<?php esc_attr_e('This field is required.', $this->plugin_slug); ?>" name="content" class="content_textarea"></textarea></p>
88
+ <p class="submit"><input type="submit" value="<?php _e('Send', $this->plugin_slug); ?>"></p>
89
+ </form>
90
+ </div>
91
+ </div>
92
+
93
+ <a class="contact_us" href="javascript:void(0);" data-open="<?php echo esc_attr($open); ?>" data-close="<?php echo esc_attr($close); ?>"><?php _e('Contact us', $this->plugin_slug); ?></a>
94
+ <?php } ?>
95
+
96
+ <?php if (!empty($this->plugin_settings['general']['admin_link']) && $this->plugin_settings['general']['admin_link'] == 1) { ?>
97
+ <div class="author_link">
98
+ <a href="<?php echo admin_url(); ?>"><?php _e('Dashboard', $this->plugin_slug); ?></a>
99
+ </div>
100
+ <?php } ?>
101
+ </div>
102
+
103
+ <script type='text/javascript'>
104
+ var wpmm_vars = {"ajax_url": "<?php echo admin_url('admin-ajax.php'); ?>"};
105
+ </script>
106
+ <?php
107
+ if (!empty($scripts) && is_array($scripts)) {
108
+ foreach ($scripts as $src) {
109
+ ?>
110
+ <script src="<?php echo $src; ?>"></script>
111
+ <?php
112
+ }
113
+ }
114
+
115
+ // Do some actions
116
+ do_action('wm_footer'); // this hook will be removed in the next versions
117
+ do_action('wpmm_footer');
118
+ ?>
119
+ </body>
120
+ </html>
views/notice.php CHANGED
@@ -1,5 +1,10 @@
1
- <?php foreach ($notices as $notice) { ?>
2
- <div id="message" class="<?php echo $notice['class']; ?> fade">
3
- <p><?php echo $notice['msg']; ?></p>
4
- </div>
 
 
 
 
 
5
  <?php } ?>
1
+ <?php
2
+ foreach ($notices as $key => $notice) {
3
+ if (in_array($key, $dismissed_notices) && $this->plugin_screen_hook_suffix != $screen->id) {
4
+ continue;
5
+ }
6
+ ?>
7
+ <div id="message" class="<?php echo $notice['class']; ?>" data-key="<?php echo $key; ?>">
8
+ <p><?php echo $notice['msg']; ?></p>
9
+ </div>
10
  <?php } ?>
views/promo-codepad.php ADDED
@@ -0,0 +1,10 @@
 
 
 
 
 
 
 
 
 
 
1
+ <strong>Announcement: Introducing Codepad.co!</strong>
2
+ <br /><br />
3
+ <a href="https://codepad.co/?utm_source=wpmm&utm_medium=wpmmlinks&utm_campaign=wpmm" target="_blank">Codepad</a> is a new developers community who like to share/save code snippets and get/give feedback.<br />
4
+ The website was featured on Product Hunt, Codrops, Designmodo, Speckyboy, Webdesigner Depot, eWebDesign and more!
5
+ <br /><br />
6
+ You always can follow the best developers on the <a href="https://codepad.co/developers/?utm_source=wpmm&utm_medium=wpmmlinks&utm_campaign=wpmm" target="_blank">Codepad developers page</a>.
7
+ <br /><br />
8
+ Follow the Codepad blog on <a href="https://medium.com/@Codepad" target="_blank">Medium</a>.
9
+ <br /><br />
10
+ <a class="button button-primary" href="https://codepad.co/?utm_source=wpmm&utm_medium=wpmmlinks&utm_campaign=wpmm" target="_blank">Open Codepad!</a>
views/settings.php CHANGED
@@ -1,430 +1,441 @@
1
- <div class="wrap">
2
- <h2 class="wpmm-title">WP Maintenance Mode</h2>
3
-
4
- <?php if (!empty($_POST)) { ?>
5
- <div class="updated settings-error" id="setting-error-settings_updated">
6
- <p><strong><?php _e('Settings saved.', $this->plugin_slug); ?></strong></p>
7
- </div>
8
- <?php } ?>
9
-
10
- <div class="wpmm-wrapper">
11
- <div id="content" class="wrapper-cell">
12
- <div class="nav-tab-wrapper">
13
- <a class="nav-tab nav-tab-active" href="#general"><?php _e('General', $this->plugin_slug); ?></a>
14
- <a class="nav-tab" href="#design"><?php _e('Design', $this->plugin_slug); ?></a>
15
- <a class="nav-tab" href="#modules"><?php _e('Modules', $this->plugin_slug); ?></a>
16
- </div>
17
-
18
- <div class="tabs-content">
19
- <div id="tab-general" class="">
20
- <form method="post">
21
- <table class="form-table">
22
- <tbody>
23
- <tr valign="top">
24
- <th scope="row"><label for="options[general][status]"><?php _e('Status', $this->plugin_slug); ?></label></th>
25
- <td>
26
- <label><input type="radio" value="1" name="options[general][status]" <?php checked($this->plugin_settings['general']['status'], 1); ?>> <?php _e('Activated', $this->plugin_slug); ?></label> <br />
27
- <label><input type="radio" value="0" name="options[general][status]" <?php checked($this->plugin_settings['general']['status'], 0); ?>> <?php _e('Deactivated', $this->plugin_slug); ?></label>
28
- </td>
29
- </tr>
30
- <tr valign="top">
31
- <th scope="row"><label for="options[general][bypass_bots]"><?php _e('Bypass for Search Bots', $this->plugin_slug); ?></label></th>
32
- <td>
33
- <select name="options[general][bypass_bots]">
34
- <option value="1" <?php selected($this->plugin_settings['general']['bypass_bots'], 1); ?>><?php _e('Yes', $this->plugin_slug); ?></option>
35
- <option value="0" <?php selected($this->plugin_settings['general']['bypass_bots'], 0); ?>><?php _e('No', $this->plugin_slug); ?></option>
36
- </select>
37
- <p class="description"><?php _e('Allow Search Bots to bypass maintenance mode?', $this->plugin_slug); ?></p>
38
- </td>
39
- </tr>
40
- <tr valign="top">
41
- <th scope="row"><label for="options[general][backend_role]"><?php _e('Backend Role', $this->plugin_slug); ?></label></th>
42
- <td>
43
- <select name="options[general][backend_role]">
44
- <?php foreach ($wp_roles->roles as $role => $details) { ?>
45
- <option value="<?php echo esc_attr($role); ?>" <?php selected($this->plugin_settings['general']['backend_role'], $role); ?>><?php echo $details['name'] . ' (' . $role . ')'; ?></option>
46
- <?php } ?>
47
- </select>
48
- <p class="description"><?php _e('Which user role is allowed to access the backend of this blog?', $this->plugin_slug); ?></p>
49
- </td>
50
- </tr>
51
- <tr valign="top">
52
- <th scope="row"><label for="options[general][frontend_role]"><?php _e('Frontend Role', $this->plugin_slug); ?></label></th>
53
- <td>
54
- <select name="options[general][frontend_role]">
55
- <?php foreach ($wp_roles->roles as $role => $details) { ?>
56
- <option value="<?php echo esc_attr($role); ?>" <?php selected($this->plugin_settings['general']['frontend_role'], $role); ?>><?php echo $details['name'] . ' (' . $role . ')'; ?></option>
57
- <?php } ?>
58
- </select>
59
- <p class="description"><?php _e('Which user role is allowed to access the frontend of this blog?', $this->plugin_slug); ?></p>
60
- </td>
61
- </tr>
62
- <tr valign="top">
63
- <th scope="row"><label for="options[general][meta_robots]"><?php _e('Robots Meta Tag', $this->plugin_slug); ?></label></th>
64
- <td>
65
- <select name="options[general][meta_robots]">
66
- <option value="1" <?php selected($this->plugin_settings['general']['meta_robots'], 1); ?>>noindex, nofollow</option>
67
- <option value="0" <?php selected($this->plugin_settings['general']['meta_robots'], 0); ?>>index, follow</option>
68
- </select>
69
- <p class="description"><?php _e('The robots meta tag lets you use a granular, page-specific approach to control how an individual page should be indexed and served to users in search results.', $this->plugin_slug); ?></p>
70
- </td>
71
- </tr>
72
- <tr valign="top">
73
- <th scope="row"><label for="options[general][redirection]"><?php _e('Redirection', $this->plugin_slug); ?></label></th>
74
- <td>
75
- <input type="text" value="<?php echo esc_attr(stripslashes($this->plugin_settings['general']['redirection'])); ?>" name="options[general][redirection]" />
76
- <p class="description"><?php _e('If you want to redirect a user to a URL (which is not the WordPress dashboard) after login, then define a URL (incl. http://)', $this->plugin_slug); ?></p>
77
- </td>
78
- </tr>
79
- <tr valign="top">
80
- <th scope="row"><label for="options[general][exclude]"><?php _e('Exclude', $this->plugin_slug); ?></label></th>
81
- <td>
82
- <textarea rows="7" name="options[general][exclude]" style="width: 625px;"><?php
83
- if (!empty($this->plugin_settings['general']['exclude']) && is_array($this->plugin_settings['general']['exclude'])) {
84
- echo implode("\n", stripslashes_deep($this->plugin_settings['general']['exclude']));
85
- }
86
- ?></textarea>
87
- <p class="description"><?php _e('Exclude feed, pages, archives or IPs from maintenance mode. Add one slug / IP per line!', $this->plugin_slug); ?></p>
88
- </td>
89
- </tr>
90
- <tr valign="top">
91
- <th scope="row"><label for="options[general][notice]"><?php _e('Notice', $this->plugin_slug); ?></label></th>
92
- <td>
93
- <select name="options[general][notice]">
94
- <option value="1" <?php selected($this->plugin_settings['general']['notice'], 1); ?>><?php _e('Yes', $this->plugin_slug); ?></option>
95
- <option value="0" <?php selected($this->plugin_settings['general']['notice'], 0); ?>><?php _e('No', $this->plugin_slug); ?></option>
96
- </select>
97
- <p class="description"><?php _e('Do you want to see notices when maintenance mode is activated?', $this->plugin_slug); ?></p>
98
- </td>
99
- </tr>
100
- <tr valign="top">
101
- <th scope="row"><label for="options[general][admin_link]"><?php _e('Dashboard link', $this->plugin_slug); ?></label></th>
102
- <td>
103
- <select name="options[general][admin_link]">
104
- <option value="1" <?php selected($this->plugin_settings['general']['admin_link'], 1); ?>><?php _e('Yes', $this->plugin_slug); ?></option>
105
- <option value="0" <?php selected($this->plugin_settings['general']['admin_link'], 0); ?>><?php _e('No', $this->plugin_slug); ?></option>
106
- </select>
107
- <p class="description"><?php _e('Do you want to add a link to the dashboard on your maintenance mode page?', $this->plugin_slug); ?></p>
108
- </td>
109
- </tr>
110
- </tbody>
111
- </table>
112
-
113
- <?php wp_nonce_field('tab-general'); ?>
114
- <input type="hidden" value="general" name="tab" />
115
- <input type="submit" value="<?php _e('Save settings', $this->plugin_slug); ?>" class="button button-primary" name="submit" />
116
- <input type="button" value="<?php _e('Reset settings', $this->plugin_slug); ?>" class="button button-secondary reset_settings" data-tab="general" name="submit">
117
- </form>
118
- </div>
119
- <div id="tab-design" class="hidden">
120
- <form method="post">
121
- <h3>&raquo; <?php _e('Content', $this->plugin_slug); ?></h3>
122
-
123
- <table class="form-table">
124
- <tbody>
125
- <tr valign="top">
126
- <th scope="row"><label for="options[design][title]"><?php _e('Title (HTML tag)', $this->plugin_slug); ?></label></th>
127
- <td>
128
- <input type="text" value="<?php echo esc_attr(stripslashes($this->plugin_settings['design']['title'])); ?>" name="options[design][title]" />
129
- </td>
130
- </tr>
131
- <tr valign="top">
132
- <th scope="row"><label for="options[design][heading]"><?php _e('Heading', $this->plugin_slug); ?></label></th>
133
- <td>
134
- <input type="text" value="<?php echo esc_attr(stripslashes($this->plugin_settings['design']['heading'])); ?>" name="options[design][heading]" />
135
- <input type="text" value="<?php echo esc_attr(stripslashes($this->plugin_settings['design']['heading_color'])); ?>" name="options[design][heading_color]" data-default-color="<?php echo esc_attr(stripslashes($this->plugin_settings['design']['heading_color'])); ?>" class="color_picker_trigger"/>
136
- </td>
137
- </tr>
138
- <tr valign="top">
139
- <th scope="row"><label for="options[design][text]"><?php _e('Text', $this->plugin_slug); ?></label></th>
140
- <td>
141
- <?php
142
- wp_editor(stripslashes($this->plugin_settings['design']['text']), 'options_design_text', array(
143
- 'textarea_name' => 'options[design][text]',
144
- 'textarea_rows' => 8,
145
- 'editor_class' => 'large-text',
146
- 'media_buttons' => false,
147
- 'wpautop' => false,
148
- 'default_editor' => 'tinymce',
149
- 'teeny' => true
150
- ));
151
- ?>
152
- <br />
153
- <input type="text" value="<?php echo esc_attr(stripslashes($this->plugin_settings['design']['text_color'])); ?>" data-default-color="<?php echo esc_attr(stripslashes($this->plugin_settings['design']['text_color'])); ?>" name="options[design][text_color]" class="color_picker_trigger" />
154
- </td>
155
- </tr>
156
- </tbody>
157
- </table>
158
-
159
- <h3>&raquo; <?php _e('Background', $this->plugin_slug); ?></h3>
160
-
161
- <table class="form-table">
162
- <tbody>
163
- <tr valign="top">
164
- <th scope="row"><label for="options[design][bg_type]"><?php _e('Choose type', $this->plugin_slug); ?></label></th>
165
- <td>
166
- <select name="options[design][bg_type]" id="design_bg_type">
167
- <option value="color" <?php selected($this->plugin_settings['design']['bg_type'], 'color'); ?>><?php _e('Custom color', $this->plugin_slug); ?></option>
168
- <option value="custom" <?php selected($this->plugin_settings['design']['bg_type'], 'custom'); ?>><?php _e('Uploaded background', $this->plugin_slug); ?></option>
169
- <option value="predefined" <?php selected($this->plugin_settings['design']['bg_type'], 'predefined'); ?>><?php _e('Predefined background', $this->plugin_slug); ?></option>
170
- </select>
171
- </td>
172
- </tr>
173
- <tr valign="top" class="design_bg_types <?php echo $this->plugin_settings['design']['bg_type'] != 'color' ? 'hidden' : ''; ?>" id="show_color">
174
- <th scope="row"><label for="options[design][bg_color]"><?php _e('Choose color', $this->plugin_slug); ?></label></th>
175
- <td>
176
- <input type="text" value="<?php echo $this->plugin_settings['design']['bg_color']; ?>" data-default-color="<?php echo $this->plugin_settings['design']['bg_color']; ?>" name="options[design][bg_color]" class="color_picker_trigger"/>
177
- </td>
178
- </tr>
179
- <tr valign="top" class="design_bg_types <?php echo $this->plugin_settings['design']['bg_type'] != 'custom' ? 'hidden' : ''; ?>" id="show_custom">
180
- <th scope="row"><label for="options[design][bg_custom]"><?php _e('Upload background', $this->plugin_slug); ?></label></th>
181
- <td>
182
- <input type="text" value="<?php echo esc_attr(stripslashes($this->plugin_settings['design']['bg_custom'])); ?>" name="options[design][bg_custom]" class="upload_image_url" />
183
- <input type="button" value="Upload" class="button" id="upload_image_trigger" />
184
- <p class="description"><?php _e('Backgrounds should have 1920x1280 px size.', $this->plugin_slug); ?></p>
185
- </td>
186
- </tr>
187
- <tr valign="top" class="design_bg_types <?php echo $this->plugin_settings['design']['bg_type'] != 'predefined' ? 'hidden' : ''; ?>" id="show_predefined">
188
- <th scope="row">
189
- <label for="options[design][bg_predefined]"><?php _e('Choose background', $this->plugin_slug); ?></label>
190
- <p class="description">
191
- * <?php echo sprintf(__('source <a href="%" target="_blank">Free Photos</a>', $this->plugin_slug), 'http://designmodo.com/free-photos/' . WPMM_AUTHOR_UTM); ?>
192
- </p>
193
- </th>
194
- <td>
195
- <ul class="bg_list">
196
- <?php
197
- foreach (glob(WPMM_PATH . 'assets/images/backgrounds/*_thumb.jpg') as $filename) {
198
- $file_thumb = basename($filename);
199
- $file = str_replace('_thumb', '', $file_thumb);
200
- ?>
201
- <li class="<?php echo $this->plugin_settings['design']['bg_predefined'] == $file ? 'active' : ''; ?>">
202
- <label>
203
- <input type="radio" value="<?php echo esc_attr($file); ?>" name="options[design][bg_predefined]" <?php checked($this->plugin_settings['design']['bg_predefined'], $file); ?>>
204
- <img src="<?php echo WPMM_URL . 'assets/images/backgrounds/' . $file_thumb; ?>" width="200" height="150" />
205
- </label>
206
- </li>
207
- <?php
208
- }
209
- ?>
210
- </ul>
211
- </td>
212
- </tr>
213
- </tbody>
214
- </table>
215
-
216
- <?php wp_nonce_field('tab-design'); ?>
217
- <input type="hidden" value="design" name="tab" />
218
- <input type="submit" value="<?php _e('Save settings', $this->plugin_slug); ?>" class="button button-primary" name="submit">
219
- <input type="button" value="<?php _e('Reset settings', $this->plugin_slug); ?>" class="button button-secondary reset_settings" data-tab="design" name="submit">
220
- </form>
221
- </div>
222
- <div id="tab-modules" class="hidden">
223
- <form method="post">
224
- <h3>&raquo; <?php _e('Countdown', $this->plugin_slug); ?></h3>
225
-
226
- <table class="form-table">
227
- <tbody>
228
- <tr valign="top">
229
- <th scope="row"><label for="options[modules][countdown_status]"><?php _e('Show countdown?', $this->plugin_slug); ?></label></th>
230
- <td>
231
- <select name="options[modules][countdown_status]">
232
- <option value="1" <?php selected($this->plugin_settings['modules']['countdown_status'], 1); ?>><?php _e('Yes', $this->plugin_slug); ?></option>
233
- <option value="0" <?php selected($this->plugin_settings['modules']['countdown_status'], 0); ?>><?php _e('No', $this->plugin_slug); ?></option>
234
- </select>
235
- </td>
236
- </tr>
237
- <tr valign="top">
238
- <th scope="row"><label for="options[modules][countdown_start]"><?php _e('Start date', $this->plugin_slug); ?></label></th>
239
- <td>
240
- <input type="text" value="<?php echo esc_attr(stripslashes($this->plugin_settings['modules']['countdown_start'])); ?>" name="options[modules][countdown_start]" class="countdown_start" />
241
- </td>
242
- </tr>
243
- <tr valign="top">
244
- <th scope="row"><label for="options[modules][countdown_details]"><?php _e('Countdown (remaining time)', $this->plugin_slug); ?></label></th>
245
- <td class="countdown_details">
246
- <input type="text" value="<?php echo esc_attr(stripslashes($this->plugin_settings['modules']['countdown_details']['days'])); ?>" name="options[modules][countdown_details][days]" /> <?php _e('Days', $this->plugin_slug); ?>
247
- <input type="text" value="<?php echo esc_attr(stripslashes($this->plugin_settings['modules']['countdown_details']['hours'])); ?>" name="options[modules][countdown_details][hours]" class="margin_left"/> <?php _e('Hours', $this->plugin_slug); ?>
248
- <input type="text" value="<?php echo esc_attr(stripslashes($this->plugin_settings['modules']['countdown_details']['minutes'])); ?>" name="options[modules][countdown_details][minutes]" class="margin_left" /> <?php _e('Minutes', $this->plugin_slug); ?>
249
- </td>
250
- </tr>
251
- <tr valign="top">
252
- <th scope="row"><label for="options[modules][countdown_color]"><?php _e('Color', $this->plugin_slug); ?></label></th>
253
- <td>
254
- <input type="text" value="<?php echo esc_attr(stripslashes($this->plugin_settings['modules']['countdown_color'])); ?>" name="options[modules][countdown_color]" data-default-color="<?php echo esc_attr(stripslashes($this->plugin_settings['modules']['countdown_color'])); ?>" class="color_picker_trigger"/>
255
- </td>
256
- </tr>
257
- </tbody>
258
- </table>
259
-
260
- <h3>&raquo; <?php _e('Subscribe', $this->plugin_slug); ?></h3>
261
-
262
- <table class="form-table">
263
- <tbody>
264
- <tr valign="top">
265
- <th scope="row"><label for="options[modules][subscribe_status]"><?php _e('Show subscribe?', $this->plugin_slug); ?></label></th>
266
- <td>
267
- <select name="options[modules][subscribe_status]">
268
- <option value="1" <?php selected($this->plugin_settings['modules']['subscribe_status'], 1); ?>><?php _e('Yes', $this->plugin_slug); ?></option>
269
- <option value="0" <?php selected($this->plugin_settings['modules']['subscribe_status'], 0); ?>><?php _e('No', $this->plugin_slug); ?></option>
270
- </select>
271
- </td>
272
- </tr>
273
- <tr valign="top">
274
- <th scope="row"><label for="options[modules][subscribe_text]"><?php _e('Text', $this->plugin_slug); ?></label></th>
275
- <td>
276
- <input type="text" value="<?php echo esc_attr(stripslashes($this->plugin_settings['modules']['subscribe_text'])); ?>" name="options[modules][subscribe_text]" />
277
- <input type="text" value="<?php echo esc_attr(stripslashes($this->plugin_settings['modules']['subscribe_text_color'])); ?>" name="options[modules][subscribe_text_color]" data-default-color="<?php echo esc_attr(stripslashes($this->plugin_settings['modules']['subscribe_text_color'])); ?>" class="color_picker_trigger"/>
278
- </td>
279
- </tr>
280
- <tr valign="top">
281
- <th scope="row"><label for="options[modules][stats]"><?php _e('Stats', $this->plugin_slug); ?></label></th>
282
- <td>
283
- <?php
284
- $subscribers_no = wpmm_count_where('wpmm_subscribers', 'id_subscriber');
285
- echo sprintf(__('You have %d subscriber(s)', $this->plugin_slug), $subscribers_no);
286
-
287
- if ($subscribers_no > 0) {
288
- ?>
289
- <br />
290
- <a class="button button-secondary" id="subscribers-export" href="javascript:void(0);"><?php _e('Export as CSV', $this->plugin_slug); ?></a>
291
- <?php } ?>
292
- </td>
293
- </tr>
294
- </tbody>
295
- </table>
296
-
297
- <h3>&raquo; <?php _e('Social Networks', $this->plugin_slug); ?></h3>
298
-
299
- <table class="form-table">
300
- <tbody>
301
- <tr valign="top">
302
- <th scope="row"><label for="options[modules][social_status]"><?php _e('Show social networks?', $this->plugin_slug); ?></label></th>
303
- <td>
304
- <select name="options[modules][social_status]">
305
- <option value="1" <?php selected($this->plugin_settings['modules']['social_status'], 1); ?>><?php _e('Yes', $this->plugin_slug); ?></option>
306
- <option value="0" <?php selected($this->plugin_settings['modules']['social_status'], 0); ?>><?php _e('No', $this->plugin_slug); ?></option>
307
- </select>
308
- </td>
309
- </tr>
310
- <tr valign="top">
311
- <th scope="row"><label for="options[modules][social_target]"><?php _e('Links target?', $this->plugin_slug); ?></label></th>
312
- <td>
313
- <select name="options[modules][social_target]">
314
- <option value="1" <?php selected($this->plugin_settings['modules']['social_target'], 1); ?>><?php _e('New page', $this->plugin_slug); ?></option>
315
- <option value="0" <?php selected($this->plugin_settings['modules']['social_target'], 0); ?>><?php _e('Same page', $this->plugin_slug); ?></option>
316
- </select>
317
- <p class="description"><?php _e('Choose how the links will open.', $this->plugin_slug); ?></p>
318
- </td>
319
- </tr>
320
- <tr valign="top">
321
- <th scope="row"><label for="options[modules][social_github]">Github</label></th>
322
- <td>
323
- <input type="text" value="<?php echo esc_attr(stripslashes($this->plugin_settings['modules']['social_github'])); ?>" name="options[modules][social_github]" />
324
- </td>
325
- </tr>
326
- <tr valign="top">
327
- <th scope="row"><label for="options[modules][social_dribbble]">Dribbble</label></th>
328
- <td>
329
- <input type="text" value="<?php echo esc_attr(stripslashes($this->plugin_settings['modules']['social_dribbble'])); ?>" name="options[modules][social_dribbble]" />
330
- </td>
331
- </tr>
332
- <tr valign="top">
333
- <th scope="row"><label for="options[modules][social_twitter]">Twitter</label></th>
334
- <td>
335
- <input type="text" value="<?php echo esc_attr(stripslashes($this->plugin_settings['modules']['social_twitter'])); ?>" name="options[modules][social_twitter]" />
336
- </td>
337
- </tr>
338
- <tr valign="top">
339
- <th scope="row"><label for="options[modules][social_facebook]">Facebook</label></th>
340
- <td>
341
- <input type="text" value="<?php echo esc_attr(stripslashes($this->plugin_settings['modules']['social_facebook'])); ?>" name="options[modules][social_facebook]" />
342
- </td>
343
- </tr>
344
- <tr valign="top">
345
- <th scope="row"><label for="options[modules][social_pinterest]">Pinterest</label></th>
346
- <td>
347
- <input type="text" value="<?php echo esc_attr(stripslashes($this->plugin_settings['modules']['social_pinterest'])); ?>" name="options[modules][social_pinterest]" />
348
- </td>
349
- </tr>
350
- <tr valign="top">
351
- <th scope="row"><label for="options[modules][social_google+]">Google+</label></th>
352
- <td>
353
- <input type="text" value="<?php echo esc_attr(stripslashes($this->plugin_settings['modules']['social_google+'])); ?>" name="options[modules][social_google+]" />
354
- </td>
355
- </tr>
356
- <tr valign="top">
357
- <th scope="row"><label for="options[modules][social_linkedin]">Linkedin</label></th>
358
- <td>
359
- <input type="text" value="<?php echo esc_attr(stripslashes($this->plugin_settings['modules']['social_linkedin'])); ?>" name="options[modules][social_linkedin]" />
360
- </td>
361
- </tr>
362
- </tbody>
363
- </table>
364
-
365
- <h3>&raquo; <?php _e('Contact', $this->plugin_slug); ?></h3>
366
-
367
- <table class="form-table">
368
- <tbody>
369
- <tr valign="top">
370
- <th scope="row"><label for="options[modules][contact_status]"><?php _e('Show contact?', $this->plugin_slug); ?></label></th>
371
- <td>
372
- <select name="options[modules][contact_status]">
373
- <option value="1" <?php selected($this->plugin_settings['modules']['contact_status'], 1); ?>><?php _e('Yes', $this->plugin_slug); ?></option>
374
- <option value="0" <?php selected($this->plugin_settings['modules']['contact_status'], 0); ?>><?php _e('No', $this->plugin_slug); ?></option>
375
- </select>
376
- </td>
377
- </tr>
378
- <tr valign="top">
379
- <th scope="row"><label for="options[modules][contact_email]"><?php _e('Email address', $this->plugin_slug); ?></label></th>
380
- <td>
381
- <input type="text" value="<?php echo esc_attr(stripslashes($this->plugin_settings['modules']['contact_email'])); ?>" name="options[modules][contact_email]" />
382
- </td>
383
- </tr>
384
- <tr valign="top">
385
- <th scope="row"><label for="options[modules][contact_effects]"><?php _e('Effects', $this->plugin_slug); ?></label></th>
386
- <td>
387
- <select name="options[modules][contact_effects]">
388
- <option value="move_top|move_bottom" <?php selected($this->plugin_settings['modules']['contact_effects'], 'move_top|move_bottom'); ?>><?php _e('Move top - Move bottom', $this->plugin_slug); ?></option>
389
- <option value="zoom|zoomed" <?php selected($this->plugin_settings['modules']['contact_effects'], 'zoom|zoomed'); ?>><?php _e('Zoom - Zoomed', $this->plugin_slug); ?></option>
390
- <option value="fold|unfold" <?php selected($this->plugin_settings['modules']['contact_effects'], 'fold|unfold'); ?>><?php _e('Fold - Unfold', $this->plugin_slug); ?></option>
391
- </select>
392
- </td>
393
- </tr>
394
- </tbody>
395
- </table>
396
-
397
- <h3>&raquo; <?php _e('Google Analytics', $this->plugin_slug); ?></h3>
398
-
399
- <table class="form-table">
400
- <tbody>
401
- <tr valign="top">
402
- <th scope="row"><label for="options[modules][ga_status]"><?php _e('Use Google Analytics?', $this->plugin_slug); ?></label></th>
403
- <td>
404
- <select name="options[modules][ga_status]">
405
- <option value="1" <?php selected($this->plugin_settings['modules']['ga_status'], 1); ?>><?php _e('Yes', $this->plugin_slug); ?></option>
406
- <option value="0" <?php selected($this->plugin_settings['modules']['ga_status'], 0); ?>><?php _e('No', $this->plugin_slug); ?></option>
407
- </select>
408
- </td>
409
- </tr>
410
- <tr valign="top">
411
- <th scope="row"><label for="options[modules][ga_code]"><?php _e('Tracking code', $this->plugin_slug); ?></label></th>
412
- <td>
413
- <textarea rows="7" name="options[modules][ga_code]" style="width: 625px;"><?php echo stripslashes($this->plugin_settings['modules']['ga_code']); ?></textarea>
414
- </td>
415
- </tr>
416
- </tbody>
417
- </table>
418
-
419
- <?php wp_nonce_field('tab-modules'); ?>
420
- <input type="hidden" value="modules" name="tab" />
421
- <input type="submit" value="<?php _e('Save settings', $this->plugin_slug); ?>" class="button button-primary" name="submit">
422
- <input type="button" value="<?php _e('Reset settings', $this->plugin_slug); ?>" class="button button-secondary reset_settings" data-tab="modules" name="submit">
423
- </form>
424
- </div>
425
- </div>
426
- </div>
427
-
428
- <?php include_once('sidebar.php'); ?>
429
- </div>
 
 
 
 
 
 
 
 
 
 
 
430
  </div>
1
+ <div class="wrap">
2
+ <h2 class="wpmm-title"><?php echo get_admin_page_title(); ?></h2>
3
+
4
+ <?php if (!empty($_POST)) { ?>
5
+ <div class="updated settings-error" id="setting-error-settings_updated">
6
+ <p><strong><?php _e('Settings saved.', $this->plugin_slug); ?></strong></p>
7
+ </div>
8
+ <?php } ?>
9
+
10
+ <div class="wpmm-wrapper">
11
+ <div id="content" class="wrapper-cell">
12
+ <div class="nav-tab-wrapper">
13
+ <a class="nav-tab nav-tab-active" href="#general"><?php _e('General', $this->plugin_slug); ?></a>
14
+ <a class="nav-tab" href="#design"><?php _e('Design', $this->plugin_slug); ?></a>
15
+ <a class="nav-tab" href="#modules"><?php _e('Modules', $this->plugin_slug); ?></a>
16
+ </div>
17
+
18
+ <div class="tabs-content">
19
+ <div id="tab-general" class="">
20
+ <form method="post">
21
+ <table class="form-table">
22
+ <tbody>
23
+ <tr valign="top">
24
+ <th scope="row"><label for="options[general][status]"><?php _e('Status', $this->plugin_slug); ?></label></th>
25
+ <td>
26
+ <label><input type="radio" value="1" name="options[general][status]" <?php checked($this->plugin_settings['general']['status'], 1); ?>> <?php _e('Activated', $this->plugin_slug); ?></label> <br />
27
+ <label><input type="radio" value="0" name="options[general][status]" <?php checked($this->plugin_settings['general']['status'], 0); ?>> <?php _e('Deactivated', $this->plugin_slug); ?></label>
28
+ </td>
29
+ </tr>
30
+ <tr valign="top">
31
+ <th scope="row"><label for="options[general][bypass_bots]"><?php _e('Bypass for Search Bots', $this->plugin_slug); ?></label></th>
32
+ <td>
33
+ <select name="options[general][bypass_bots]">
34
+ <option value="1" <?php selected($this->plugin_settings['general']['bypass_bots'], 1); ?>><?php _e('Yes', $this->plugin_slug); ?></option>
35
+ <option value="0" <?php selected($this->plugin_settings['general']['bypass_bots'], 0); ?>><?php _e('No', $this->plugin_slug); ?></option>
36
+ </select>
37
+ <p class="description"><?php _e('Allow Search Bots to bypass maintenance mode?', $this->plugin_slug); ?></p>
38
+ </td>
39
+ </tr>
40
+ <tr valign="top">
41
+ <th scope="row"><label for="options[general][backend_role][]"><?php _e('Backend Role', $this->plugin_slug); ?></label></th>
42
+ <td>
43
+ <select name="options[general][backend_role][]" multiple="multiple" class="chosen-select" data-placeholder="<?php _e('Select role(s)', $this->plugin_slug); ?>">
44
+ <?php
45
+ foreach ($wp_roles->roles as $role => $details) {
46
+ if ($role == 'administrator') {
47
+ continue;
48
+ }
49
+ ?>
50
+ <option value="<?php echo esc_attr($role); ?>" <?php echo wpmm_multiselect((array) $this->plugin_settings['general']['backend_role'], $role); ?>><?php echo $details['name']; ?></option>
51
+ <?php } ?>
52
+ </select>
53
+ <p class="description"><?php _e('Which user role is allowed to access the backend of this blog? Administrators will always have access.', $this->plugin_slug); ?></p>
54
+ </td>
55
+ </tr>
56
+ <tr valign="top">
57
+ <th scope="row"><label for="options[general][frontend_role][]"><?php _e('Frontend Role', $this->plugin_slug); ?></label></th>
58
+ <td>
59
+ <select name="options[general][frontend_role][]" multiple="multiple" class="chosen-select" data-placeholder="<?php _e('Select role(s)', $this->plugin_slug); ?>">
60
+ <?php
61
+ foreach ($wp_roles->roles as $role => $details) {
62
+ if ($role == 'administrator') {
63
+ continue;
64
+ }
65
+ ?>
66
+ <option value="<?php echo esc_attr($role); ?>" <?php echo wpmm_multiselect((array) $this->plugin_settings['general']['frontend_role'], $role); ?>><?php echo $details['name']; ?></option>
67
+ <?php } ?>
68
+ </select>
69
+ <p class="description"><?php _e('Which user role is allowed to access the frontend of this blog? Administrators will always have access.', $this->plugin_slug); ?></p>
70
+ </td>
71
+ </tr>
72
+ <tr valign="top">
73
+ <th scope="row"><label for="options[general][meta_robots]"><?php _e('Robots Meta Tag', $this->plugin_slug); ?></label></th>
74
+ <td>
75
+ <select name="options[general][meta_robots]">
76
+ <option value="1" <?php selected($this->plugin_settings['general']['meta_robots'], 1); ?>>noindex, nofollow</option>
77
+ <option value="0" <?php selected($this->plugin_settings['general']['meta_robots'], 0); ?>>index, follow</option>
78
+ </select>
79
+ <p class="description"><?php _e('The robots meta tag lets you use a granular, page-specific approach to control how an individual page should be indexed and served to users in search results.', $this->plugin_slug); ?></p>
80
+ </td>
81
+ </tr>
82
+ <tr valign="top">
83
+ <th scope="row"><label for="options[general][redirection]"><?php _e('Redirection', $this->plugin_slug); ?></label></th>
84
+ <td>
85
+ <input type="text" value="<?php echo esc_attr(stripslashes($this->plugin_settings['general']['redirection'])); ?>" name="options[general][redirection]" />
86
+ <p class="description"><?php _e('If you want to redirect a user (with no access to Dashboard/Backend) to a URL (different from WordPress Dashboard URL) after login, then define a URL (incl. http://)', $this->plugin_slug); ?></p>
87
+ </td>
88
+ </tr>
89
+ <tr valign="top">
90
+ <th scope="row"><label for="options[general][exclude]"><?php _e('Exclude', $this->plugin_slug); ?></label></th>
91
+ <td>
92
+ <textarea rows="7" name="options[general][exclude]" style="width: 625px;"><?php
93
+ if (!empty($this->plugin_settings['general']['exclude']) && is_array($this->plugin_settings['general']['exclude'])) {
94
+ echo implode("\n", stripslashes_deep($this->plugin_settings['general']['exclude']));
95
+ }
96
+ ?></textarea>
97
+ <p class="description"><?php _e('Exclude feed, pages, archives or IPs from maintenance mode. Add one slug / IP per line!', $this->plugin_slug); ?></p>
98
+ </td>
99
+ </tr>
100
+ <tr valign="top">
101
+ <th scope="row"><label for="options[general][notice]"><?php _e('Notice', $this->plugin_slug); ?></label></th>
102
+ <td>
103
+ <select name="options[general][notice]">
104
+ <option value="1" <?php selected($this->plugin_settings['general']['notice'], 1); ?>><?php _e('Yes', $this->plugin_slug); ?></option>
105
+ <option value="0" <?php selected($this->plugin_settings['general']['notice'], 0); ?>><?php _e('No', $this->plugin_slug); ?></option>
106
+ </select>
107
+ <p class="description"><?php _e('Do you want to see notices when maintenance mode is activated?', $this->plugin_slug); ?></p>
108
+ </td>
109
+ </tr>
110
+ <tr valign="top">
111
+ <th scope="row"><label for="options[general][admin_link]"><?php _e('Dashboard link', $this->plugin_slug); ?></label></th>
112
+ <td>
113
+ <select name="options[general][admin_link]">
114
+ <option value="1" <?php selected($this->plugin_settings['general']['admin_link'], 1); ?>><?php _e('Yes', $this->plugin_slug); ?></option>
115
+ <option value="0" <?php selected($this->plugin_settings['general']['admin_link'], 0); ?>><?php _e('No', $this->plugin_slug); ?></option>
116
+ </select>
117
+ <p class="description"><?php _e('Do you want to add a link to the dashboard on your maintenance mode page?', $this->plugin_slug); ?></p>
118
+ </td>
119
+ </tr>
120
+ </tbody>
121
+ </table>
122
+
123
+ <?php wp_nonce_field('tab-general'); ?>
124
+ <input type="hidden" value="general" name="tab" />
125
+ <input type="submit" value="<?php _e('Save settings', $this->plugin_slug); ?>" class="button button-primary" name="submit" />
126
+ <input type="button" value="<?php _e('Reset settings', $this->plugin_slug); ?>" class="button button-secondary reset_settings" data-tab="general" name="submit">
127
+ </form>
128
+ </div>
129
+ <div id="tab-design" class="hidden">
130
+ <form method="post">
131
+ <h3>&raquo; <?php _e('Content', $this->plugin_slug); ?></h3>
132
+
133
+ <table class="form-table">
134
+ <tbody>
135
+ <tr valign="top">
136
+ <th scope="row"><label for="options[design][title]"><?php _e('Title (HTML tag)', $this->plugin_slug); ?></label></th>
137
+ <td>
138
+ <input type="text" value="<?php echo esc_attr(stripslashes($this->plugin_settings['design']['title'])); ?>" name="options[design][title]" />
139
+ </td>
140
+ </tr>
141
+ <tr valign="top">
142
+ <th scope="row"><label for="options[design][heading]"><?php _e('Heading', $this->plugin_slug); ?></label></th>
143
+ <td>
144
+ <input type="text" value="<?php echo esc_attr(stripslashes($this->plugin_settings['design']['heading'])); ?>" name="options[design][heading]" />
145
+ <input type="text" value="<?php echo esc_attr(stripslashes($this->plugin_settings['design']['heading_color'])); ?>" name="options[design][heading_color]" data-default-color="<?php echo esc_attr(stripslashes($this->plugin_settings['design']['heading_color'])); ?>" class="color_picker_trigger"/>
146
+ </td>
147
+ </tr>
148
+ <tr valign="top">
149
+ <th scope="row"><label for="options[design][text]"><?php _e('Text', $this->plugin_slug); ?></label></th>
150
+ <td>
151
+ <?php
152
+ wp_editor(stripslashes($this->plugin_settings['design']['text']), 'options_design_text', array(
153
+ 'textarea_name' => 'options[design][text]',
154
+ 'textarea_rows' => 8,
155
+ 'editor_class' => 'large-text',
156
+ 'media_buttons' => false,
157
+ 'wpautop' => false,
158
+ 'default_editor' => 'tinymce',
159
+ 'teeny' => true
160
+ ));
161
+ ?>
162
+ <br />
163
+ <input type="text" value="<?php echo esc_attr(stripslashes($this->plugin_settings['design']['text_color'])); ?>" data-default-color="<?php echo esc_attr(stripslashes($this->plugin_settings['design']['text_color'])); ?>" name="options[design][text_color]" class="color_picker_trigger" />
164
+ </td>
165
+ </tr>
166
+ </tbody>
167
+ </table>
168
+
169
+ <h3>&raquo; <?php _e('Background', $this->plugin_slug); ?></h3>
170
+
171
+ <table class="form-table">
172
+ <tbody>
173
+ <tr valign="top">
174
+ <th scope="row"><label for="options[design][bg_type]"><?php _e('Choose type', $this->plugin_slug); ?></label></th>
175
+ <td>
176
+ <select name="options[design][bg_type]" id="design_bg_type">
177
+ <option value="color" <?php selected($this->plugin_settings['design']['bg_type'], 'color'); ?>><?php _e('Custom color', $this->plugin_slug); ?></option>
178
+ <option value="custom" <?php selected($this->plugin_settings['design']['bg_type'], 'custom'); ?>><?php _e('Uploaded background', $this->plugin_slug); ?></option>
179
+ <option value="predefined" <?php selected($this->plugin_settings['design']['bg_type'], 'predefined'); ?>><?php _e('Predefined background', $this->plugin_slug); ?></option>
180
+ </select>
181
+ </td>
182
+ </tr>
183
+ <tr valign="top" class="design_bg_types <?php echo $this->plugin_settings['design']['bg_type'] != 'color' ? 'hidden' : ''; ?>" id="show_color">
184
+ <th scope="row"><label for="options[design][bg_color]"><?php _e('Choose color', $this->plugin_slug); ?></label></th>
185
+ <td>
186
+ <input type="text" value="<?php echo $this->plugin_settings['design']['bg_color']; ?>" data-default-color="<?php echo $this->plugin_settings['design']['bg_color']; ?>" name="options[design][bg_color]" class="color_picker_trigger"/>
187
+ </td>
188
+ </tr>
189
+ <tr valign="top" class="design_bg_types <?php echo $this->plugin_settings['design']['bg_type'] != 'custom' ? 'hidden' : ''; ?>" id="show_custom">
190
+ <th scope="row"><label for="options[design][bg_custom]"><?php _e('Upload background', $this->plugin_slug); ?></label></th>
191
+ <td>
192
+ <input type="text" value="<?php echo esc_attr(stripslashes($this->plugin_settings['design']['bg_custom'])); ?>" name="options[design][bg_custom]" class="upload_image_url" />
193
+ <input type="button" value="Upload" class="button" id="upload_image_trigger" />
194
+ <p class="description"><?php _e('Backgrounds should have 1920x1280 px size.', $this->plugin_slug); ?></p>
195
+ </td>
196
+ </tr>
197
+ <tr valign="top" class="design_bg_types <?php echo $this->plugin_settings['design']['bg_type'] != 'predefined' ? 'hidden' : ''; ?>" id="show_predefined">
198
+ <th scope="row">
199
+ <label for="options[design][bg_predefined]"><?php _e('Choose background', $this->plugin_slug); ?></label>
200
+ <p class="description">
201
+ * <?php echo sprintf(__('source <a href="%s" target="_blank">Free Photos</a>', $this->plugin_slug), 'http://designmodo.com/free-photos/' . WPMM_AUTHOR_UTM); ?>
202
+ </p>
203
+ </th>
204
+ <td>
205
+ <ul class="bg_list">
206
+ <?php
207
+ foreach (glob(WPMM_PATH . 'assets/images/backgrounds/*_thumb.jpg') as $filename) {
208
+ $file_thumb = basename($filename);
209
+ $file = str_replace('_thumb', '', $file_thumb);
210
+ ?>
211
+ <li class="<?php echo $this->plugin_settings['design']['bg_predefined'] == $file ? 'active' : ''; ?>">
212
+ <label>
213
+ <input type="radio" value="<?php echo esc_attr($file); ?>" name="options[design][bg_predefined]" <?php checked($this->plugin_settings['design']['bg_predefined'], $file); ?>>
214
+ <img src="<?php echo WPMM_URL . 'assets/images/backgrounds/' . $file_thumb; ?>" width="200" height="150" />
215
+ </label>
216
+ </li>
217
+ <?php
218
+ }
219
+ ?>
220
+ </ul>
221
+ </td>
222
+ </tr>
223
+ </tbody>
224
+ </table>
225
+
226
+ <?php wp_nonce_field('tab-design'); ?>
227
+ <input type="hidden" value="design" name="tab" />
228
+ <input type="submit" value="<?php _e('Save settings', $this->plugin_slug); ?>" class="button button-primary" name="submit">
229
+ <input type="button" value="<?php _e('Reset settings', $this->plugin_slug); ?>" class="button button-secondary reset_settings" data-tab="design" name="submit">
230
+ </form>
231
+ </div>
232
+ <div id="tab-modules" class="hidden">
233
+ <form method="post">
234
+ <h3>&raquo; <?php _e('Countdown', $this->plugin_slug); ?></h3>
235
+
236
+ <table class="form-table">
237
+ <tbody>
238
+ <tr valign="top">
239
+ <th scope="row"><label for="options[modules][countdown_status]"><?php _e('Show countdown?', $this->plugin_slug); ?></label></th>
240
+ <td>
241
+ <select name="options[modules][countdown_status]">
242
+ <option value="1" <?php selected($this->plugin_settings['modules']['countdown_status'], 1); ?>><?php _e('Yes', $this->plugin_slug); ?></option>
243
+ <option value="0" <?php selected($this->plugin_settings['modules']['countdown_status'], 0); ?>><?php _e('No', $this->plugin_slug); ?></option>
244
+ </select>
245
+ </td>
246
+ </tr>
247
+ <tr valign="top">
248
+ <th scope="row"><label for="options[modules][countdown_start]"><?php _e('Start date', $this->plugin_slug); ?></label></th>
249
+ <td>
250
+ <input type="text" value="<?php echo esc_attr(stripslashes($this->plugin_settings['modules']['countdown_start'])); ?>" name="options[modules][countdown_start]" class="countdown_start" />
251
+ </td>
252
+ </tr>
253
+ <tr valign="top">
254
+ <th scope="row"><label for="options[modules][countdown_details]"><?php _e('Countdown (remaining time)', $this->plugin_slug); ?></label></th>
255
+ <td class="countdown_details">
256
+ <input type="text" value="<?php echo esc_attr(stripslashes($this->plugin_settings['modules']['countdown_details']['days'])); ?>" name="options[modules][countdown_details][days]" /> <?php _e('Days', $this->plugin_slug); ?>
257
+ <input type="text" value="<?php echo esc_attr(stripslashes($this->plugin_settings['modules']['countdown_details']['hours'])); ?>" name="options[modules][countdown_details][hours]" class="margin_left"/> <?php _e('Hours', $this->plugin_slug); ?>
258
+ <input type="text" value="<?php echo esc_attr(stripslashes($this->plugin_settings['modules']['countdown_details']['minutes'])); ?>" name="options[modules][countdown_details][minutes]" class="margin_left" /> <?php _e('Minutes', $this->plugin_slug); ?>
259
+ </td>
260
+ </tr>
261
+ <tr valign="top">
262
+ <th scope="row"><label for="options[modules][countdown_color]"><?php _e('Color', $this->plugin_slug); ?></label></th>
263
+ <td>
264
+ <input type="text" value="<?php echo esc_attr(stripslashes($this->plugin_settings['modules']['countdown_color'])); ?>" name="options[modules][countdown_color]" data-default-color="<?php echo esc_attr(stripslashes($this->plugin_settings['modules']['countdown_color'])); ?>" class="color_picker_trigger"/>
265
+ </td>
266
+ </tr>
267
+ </tbody>
268
+ </table>
269
+
270
+ <h3>&raquo; <?php _e('Subscribe', $this->plugin_slug); ?></h3>
271
+
272
+ <table class="form-table">
273
+ <tbody>
274
+ <tr valign="top">
275
+ <th scope="row"><label for="options[modules][subscribe_status]"><?php _e('Show subscribe?', $this->plugin_slug); ?></label></th>
276
+ <td>
277
+ <select name="options[modules][subscribe_status]">
278
+ <option value="1" <?php selected($this->plugin_settings['modules']['subscribe_status'], 1); ?>><?php _e('Yes', $this->plugin_slug); ?></option>
279
+ <option value="0" <?php selected($this->plugin_settings['modules']['subscribe_status'], 0); ?>><?php _e('No', $this->plugin_slug); ?></option>
280
+ </select>
281
+ </td>
282
+ </tr>
283
+ <tr valign="top">
284
+ <th scope="row"><label for="options[modules][subscribe_text]"><?php _e('Text', $this->plugin_slug); ?></label></th>
285
+ <td>
286
+ <input type="text" value="<?php echo esc_attr(stripslashes($this->plugin_settings['modules']['subscribe_text'])); ?>" name="options[modules][subscribe_text]" />
287
+ <input type="text" value="<?php echo esc_attr(stripslashes($this->plugin_settings['modules']['subscribe_text_color'])); ?>" name="options[modules][subscribe_text_color]" data-default-color="<?php echo esc_attr(stripslashes($this->plugin_settings['modules']['subscribe_text_color'])); ?>" class="color_picker_trigger"/>
288
+ </td>
289
+ </tr>
290
+ <tr valign="top">
291
+ <th scope="row"><label for="options[modules][stats]"><?php _e('Stats', $this->plugin_slug); ?></label></th>
292
+ <td id="subscribers_wrap">
293
+ <?php
294
+ $subscribers_no = wpmm_count_where('wpmm_subscribers', 'id_subscriber');
295
+ echo sprintf(__('You have %d subscriber(s)', $this->plugin_slug), $subscribers_no);
296
+
297
+ if ($subscribers_no > 0) {
298
+ ?>
299
+ <br />
300
+ <a class="button button-primary" id="subscribers-export" href="javascript:void(0);"><?php _e('Export as CSV', $this->plugin_slug); ?></a>
301
+ <a class="button button-secondary" id="subscribers-empty-list" href="javascript:void(0);"><?php _e('Empty subscribers list', $this->plugin_slug); ?></a>
302
+ <?php } ?>
303
+ </td>
304
+ </tr>
305
+ </tbody>
306
+ </table>
307
+
308
+ <h3>&raquo; <?php _e('Social Networks', $this->plugin_slug); ?></h3>
309
+
310
+ <table class="form-table">
311
+ <tbody>
312
+ <tr valign="top">
313
+ <th scope="row"><label for="options[modules][social_status]"><?php _e('Show social networks?', $this->plugin_slug); ?></label></th>
314
+ <td>
315
+ <select name="options[modules][social_status]">
316
+ <option value="1" <?php selected($this->plugin_settings['modules']['social_status'], 1); ?>><?php _e('Yes', $this->plugin_slug); ?></option>
317
+ <option value="0" <?php selected($this->plugin_settings['modules']['social_status'], 0); ?>><?php _e('No', $this->plugin_slug); ?></option>
318
+ </select>
319
+ </td>
320
+ </tr>
321
+ <tr valign="top">
322
+ <th scope="row"><label for="options[modules][social_target]"><?php _e('Links target?', $this->plugin_slug); ?></label></th>
323
+ <td>
324
+ <select name="options[modules][social_target]">
325
+ <option value="1" <?php selected($this->plugin_settings['modules']['social_target'], 1); ?>><?php _e('New page', $this->plugin_slug); ?></option>
326
+ <option value="0" <?php selected($this->plugin_settings['modules']['social_target'], 0); ?>><?php _e('Same page', $this->plugin_slug); ?></option>
327
+ </select>
328
+ <p class="description"><?php _e('Choose how the links will open.', $this->plugin_slug); ?></p>
329
+ </td>
330
+ </tr>
331
+ <tr valign="top">
332
+ <th scope="row"><label for="options[modules][social_github]">Github</label></th>
333
+ <td>
334
+ <input type="text" value="<?php echo esc_attr(stripslashes($this->plugin_settings['modules']['social_github'])); ?>" name="options[modules][social_github]" />
335
+ </td>
336
+ </tr>
337
+ <tr valign="top">
338
+ <th scope="row"><label for="options[modules][social_dribbble]">Dribbble</label></th>
339
+ <td>
340
+ <input type="text" value="<?php echo esc_attr(stripslashes($this->plugin_settings['modules']['social_dribbble'])); ?>" name="options[modules][social_dribbble]" />
341
+ </td>
342
+ </tr>
343
+ <tr valign="top">
344
+ <th scope="row"><label for="options[modules][social_twitter]">Twitter</label></th>
345
+ <td>
346
+ <input type="text" value="<?php echo esc_attr(stripslashes($this->plugin_settings['modules']['social_twitter'])); ?>" name="options[modules][social_twitter]" />
347
+ </td>
348
+ </tr>
349
+ <tr valign="top">
350
+ <th scope="row"><label for="options[modules][social_facebook]">Facebook</label></th>
351
+ <td>
352
+ <input type="text" value="<?php echo esc_attr(stripslashes($this->plugin_settings['modules']['social_facebook'])); ?>" name="options[modules][social_facebook]" />
353
+ </td>
354
+ </tr>
355
+ <tr valign="top">
356
+ <th scope="row"><label for="options[modules][social_pinterest]">Pinterest</label></th>
357
+ <td>
358
+ <input type="text" value="<?php echo esc_attr(stripslashes($this->plugin_settings['modules']['social_pinterest'])); ?>" name="options[modules][social_pinterest]" />
359
+ </td>
360
+ </tr>
361
+ <tr valign="top">
362
+ <th scope="row"><label for="options[modules][social_google+]">Google+</label></th>
363
+ <td>
364
+ <input type="text" value="<?php echo esc_attr(stripslashes($this->plugin_settings['modules']['social_google+'])); ?>" name="options[modules][social_google+]" />
365
+ </td>
366
+ </tr>
367
+ <tr valign="top">
368
+ <th scope="row"><label for="options[modules][social_linkedin]">Linkedin</label></th>
369
+ <td>
370
+ <input type="text" value="<?php echo esc_attr(stripslashes($this->plugin_settings['modules']['social_linkedin'])); ?>" name="options[modules][social_linkedin]" />
371
+ </td>
372
+ </tr>
373
+ </tbody>
374
+ </table>
375
+
376
+ <h3>&raquo; <?php _e('Contact', $this->plugin_slug); ?></h3>
377
+
378
+ <table class="form-table">
379
+ <tbody>
380
+ <tr valign="top">
381
+ <th scope="row"><label for="options[modules][contact_status]"><?php _e('Show contact?', $this->plugin_slug); ?></label></th>
382
+ <td>
383
+ <select name="options[modules][contact_status]">
384
+ <option value="1" <?php selected($this->plugin_settings['modules']['contact_status'], 1); ?>><?php _e('Yes', $this->plugin_slug); ?></option>
385
+ <option value="0" <?php selected($this->plugin_settings['modules']['contact_status'], 0); ?>><?php _e('No', $this->plugin_slug); ?></option>
386
+ </select>
387
+ </td>
388
+ </tr>
389
+ <tr valign="top">
390
+ <th scope="row"><label for="options[modules][contact_email]"><?php _e('Email address', $this->plugin_slug); ?></label></th>
391
+ <td>
392
+ <input type="text" value="<?php echo esc_attr(stripslashes($this->plugin_settings['modules']['contact_email'])); ?>" name="options[modules][contact_email]" />
393
+ </td>
394
+ </tr>
395
+ <tr valign="top">
396
+ <th scope="row"><label for="options[modules][contact_effects]"><?php _e('Effects', $this->plugin_slug); ?></label></th>
397
+ <td>
398
+ <select name="options[modules][contact_effects]">
399
+ <option value="move_top|move_bottom" <?php selected($this->plugin_settings['modules']['contact_effects'], 'move_top|move_bottom'); ?>><?php _e('Move top - Move bottom', $this->plugin_slug); ?></option>
400
+ <option value="zoom|zoomed" <?php selected($this->plugin_settings['modules']['contact_effects'], 'zoom|zoomed'); ?>><?php _e('Zoom - Zoomed', $this->plugin_slug); ?></option>
401
+ <option value="fold|unfold" <?php selected($this->plugin_settings['modules']['contact_effects'], 'fold|unfold'); ?>><?php _e('Fold - Unfold', $this->plugin_slug); ?></option>
402
+ </select>
403
+ </td>
404
+ </tr>
405
+ </tbody>
406
+ </table>
407
+
408
+ <h3>&raquo; <?php _e('Google Analytics', $this->plugin_slug); ?></h3>
409
+
410
+ <table class="form-table">
411
+ <tbody>
412
+ <tr valign="top">
413
+ <th scope="row"><label for="options[modules][ga_status]"><?php _e('Use Google Analytics?', $this->plugin_slug); ?></label></th>
414
+ <td>
415
+ <select name="options[modules][ga_status]">
416
+ <option value="1" <?php selected($this->plugin_settings['modules']['ga_status'], 1); ?>><?php _e('Yes', $this->plugin_slug); ?></option>
417
+ <option value="0" <?php selected($this->plugin_settings['modules']['ga_status'], 0); ?>><?php _e('No', $this->plugin_slug); ?></option>
418
+ </select>
419
+ </td>
420
+ </tr>
421
+ <tr valign="top">
422
+ <th scope="row"><label for="options[modules][ga_code]"><?php _e('Tracking code', $this->plugin_slug); ?></label></th>
423
+ <td>
424
+ <textarea rows="7" name="options[modules][ga_code]" style="width: 625px;"><?php echo stripslashes($this->plugin_settings['modules']['ga_code']); ?></textarea>
425
+ </td>
426
+ </tr>
427
+ </tbody>
428
+ </table>
429
+
430
+ <?php wp_nonce_field('tab-modules'); ?>
431
+ <input type="hidden" value="modules" name="tab" />
432
+ <input type="submit" value="<?php _e('Save settings', $this->plugin_slug); ?>" class="button button-primary" name="submit">
433
+ <input type="button" value="<?php _e('Reset settings', $this->plugin_slug); ?>" class="button button-secondary reset_settings" data-tab="modules" name="submit">
434
+ </form>
435
+ </div>
436
+ </div>
437
+ </div>
438
+
439
+ <?php include_once('sidebar.php'); ?>
440
+ </div>
441
  </div>
views/sidebar.php CHANGED
@@ -1,40 +1,56 @@
1
- <div id="sidebar" class="wrapper-cell">
2
- <div class="sidebar_box info_box">
3
- <h3><?php _e('Plugin Info', $this->plugin_slug); ?></h3>
4
- <div class="inside">
5
- <?php $plugin_data = wpmm_plugin_info($this->plugin_slug); ?>
6
- <ul>
7
- <li><?php _e('Name', $this->plugin_slug); ?>:
8
- <?php
9
- echo!empty($plugin_data['Name']) ? $plugin_data['Name'] : '';
10
- echo!empty($plugin_data['Version']) ? ' v' . $plugin_data['Version'] : '';
11
- ?>
12
- </li>
13
- <li><?php _e('Author', $this->plugin_slug); ?>: <?php echo!empty($plugin_data['AuthorName']) ? $plugin_data['AuthorName'] : ''; ?></li>
14
- <li><?php _e('Website', $this->plugin_slug); ?>: <?php echo!empty($plugin_data['AuthorURI']) ? '<a href="' . $plugin_data['AuthorURI'] . WPMM_AUTHOR_UTM . '" target="_blank">' . $plugin_data['AuthorName'] . '</a>' : ''; ?></li>
15
- <li><?php _e('Twitter', $this->plugin_slug); ?>: <?php echo!empty($plugin_data['Twitter']) ? '<a href="http://twitter.com/' . $plugin_data['Twitter'] . '" target="_blank">@' . $plugin_data['Twitter'] . '</a>' : ''; ?></li>
16
- <li><?php _e('GitHub', $this->plugin_slug); ?>: <?php echo!empty($plugin_data['GitHub URI']) ? '<a href="' . $plugin_data['GitHub URI'] . '" target="_blank">' . basename($plugin_data['GitHub URI']) . '</a>' : ''; ?></li>
17
- </ul>
18
- </div>
19
- </div>
20
-
21
- <div class="sidebar_box themes_box">
22
- <h3><?php _e('WordPress Themes', $this->plugin_slug); ?></h3>
23
- <div class="inside">
24
- <ul>
25
- <li><a href="<?php echo 'http://designmodo.com/startup-wordpress/' . WPMM_AUTHOR_UTM; ?>" target="_blank"><img src="<?php echo WPMM_URL . 'assets/images/resources/startup-wordpress.jpg'; ?>" /></a></li>
26
- </ul>
27
- </div>
28
- </div>
29
-
30
- <div class="sidebar_box resources_box">
31
- <h3><?php _e('Resources', $this->plugin_slug); ?></h3>
32
- <div class="inside">
33
- <ul>
34
- <li><a href="<?php echo 'http://designmodo.com/free-wordpress-theme/' . WPMM_AUTHOR_UTM; ?>" target="_blank"><img src="<?php echo WPMM_URL . 'assets/images/resources/ayoshop.jpg'; ?>" /></a></li>
35
- <li><a href="<?php echo 'http://designmodo.com/linecons-free/' . WPMM_AUTHOR_UTM; ?>" target="_blank"><img src="<?php echo WPMM_URL . 'assets/images/resources/linecons.jpg'; ?>" /></a></li>
36
- <li><a href="<?php echo 'http://designmodo.com/flat-free/' . WPMM_AUTHOR_UTM; ?>" target="_blank"><img src="<?php echo WPMM_URL . 'assets/images/resources/flatui.jpg'; ?>" /></a></li>
37
- </ul>
38
- </div>
39
- </div>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
40
  </div>
1
+ <div id="sidebar" class="wrapper-cell">
2
+ <div class="sidebar_box info_box">
3
+ <h3><?php _e('Plugin Info', $this->plugin_slug); ?></h3>
4
+ <div class="inside">
5
+ <?php $plugin_data = wpmm_plugin_info($this->plugin_slug); ?>
6
+ <ul>
7
+ <li><?php _e('Name', $this->plugin_slug); ?>:
8
+ <?php
9
+ echo!empty($plugin_data['Name']) ? $plugin_data['Name'] : '';
10
+ echo!empty($plugin_data['Version']) ? ' v' . $plugin_data['Version'] : '';
11
+ ?>
12
+ </li>
13
+ <li><?php _e('Author', $this->plugin_slug); ?>: <?php echo!empty($plugin_data['AuthorName']) ? $plugin_data['AuthorName'] : ''; ?></li>
14
+ <li><?php _e('Website', $this->plugin_slug); ?>: <?php echo!empty($plugin_data['AuthorURI']) ? '<a href="' . $plugin_data['AuthorURI'] . WPMM_AUTHOR_UTM . '" target="_blank">' . $plugin_data['AuthorName'] . '</a>' : ''; ?></li>
15
+ <li><?php _e('Twitter', $this->plugin_slug); ?>: <?php echo!empty($plugin_data['Twitter']) ? '<a href="http://twitter.com/' . $plugin_data['Twitter'] . '" target="_blank">@' . $plugin_data['Twitter'] . '</a>' : ''; ?></li>
16
+ <li><?php _e('GitHub', $this->plugin_slug); ?>: <?php echo!empty($plugin_data['GitHub Plugin URI']) ? '<a href="' . $plugin_data['GitHub Plugin URI'] . '" target="_blank">' . basename($plugin_data['GitHub Plugin URI']) . '</a>' : ''; ?></li>
17
+ </ul>
18
+ </div>
19
+ </div>
20
+
21
+ <?php
22
+ $banners = wpmm_get_banners();
23
+
24
+ if (!empty($banners['product'])) {
25
+ ?>
26
+ <div class="sidebar_box themes_box">
27
+ <h3><?php _e('Other products', $this->plugin_slug); ?></h3>
28
+ <div class="inside">
29
+ <ul>
30
+ <?php
31
+ foreach ($banners['product'] as $item) {
32
+ printf('<li><a href="%s" target="_blank" title="%s"><img src="%s" alt="%s" /></a></li>', $item['link'] . WPMM_AUTHOR_UTM, $item['title'], $item['image'], $item['title']);
33
+ }
34
+ ?>
35
+ </ul>
36
+ </div>
37
+ </div>
38
+ <?php } ?>
39
+
40
+ <?php
41
+ if (!empty($banners['resource'])) {
42
+ ?>
43
+ <div class="sidebar_box resources_box">
44
+ <h3><?php _e('Resources', $this->plugin_slug); ?></h3>
45
+ <div class="inside">
46
+ <ul>
47
+ <?php
48
+ foreach ($banners['resource'] as $item) {
49
+ printf('<li><a href="%s" target="_blank" title="%s"><img src="%s" alt="%s" /></a></li>', $item['link'] . WPMM_AUTHOR_UTM, $item['title'], $item['image'], $item['title']);
50
+ }
51
+ ?>
52
+ </ul>
53
+ </div>
54
+ </div>
55
+ <?php } ?>
56
  </div>
wp-maintenance-mode.php CHANGED
@@ -1,65 +1,72 @@
1
- <?php
2
-
3
- /**
4
- * WP Maintenance Mode
5
- *
6
- * Plugin Name: WP Maintenance Mode
7
- * Plugin URI: http://designmodo.com/
8
- * Description: Adds a splash page to your site that lets visitors know your site is down for maintenance. It's perfect for a coming soon page.
9
- * Version: 2.0.3
10
- * Author: Designmodo
11
- * Author URI: http://designmodo.com/
12
- * Twitter: designmodo
13
- * GitHub URI: https://github.com/Designmodocom/WP-Maintenance-Mode
14
- * Text Domain: wp-maintenance-mode
15
- * License: GPL-2.0+
16
- * License URI: http://www.gnu.org/licenses/gpl-2.0.txt
17
- * Domain Path: /languages
18
- */
19
- // Exit if accessed directly
20
- if (!defined('ABSPATH'))
21
- exit;
22
-
23
- /**
24
- * DEFINE PATHS
25
- */
26
- define('WPMM_PATH', plugin_dir_path(__FILE__));
27
- define('WPMM_CLASSES_PATH', WPMM_PATH . 'includes/classes/');
28
- define('WPMM_FUNCTIONS_PATH', WPMM_PATH . 'includes/functions/');
29
- define('WPMM_LANGUAGES_PATH', basename(WPMM_PATH) . '/languages/');
30
- define('WPMM_VIEWS_PATH', WPMM_PATH . 'views/');
31
- define('WPMM_CSS_PATH', WPMM_PATH . 'assets/css/');
32
-
33
- /**
34
- * DEFINE URLS
35
- */
36
- define('WPMM_URL', plugin_dir_url(__FILE__));
37
- define('WPMM_JS_URL', WPMM_URL . 'assets/js/');
38
- define('WPMM_CSS_URL', WPMM_URL . 'assets/css/');
39
- define('WPMM_AUTHOR_UTM', '?utm_source=wpplugin&utm_medium=wpmaintenance');
40
-
41
- /**
42
- * FUNCTIONS
43
- */
44
- require_once(WPMM_FUNCTIONS_PATH . 'helpers.php');
45
- if (is_multisite() && !function_exists('is_plugin_active_for_network')) {
46
- require_once( ABSPATH . '/wp-admin/includes/plugin.php' );
47
- }
48
-
49
- /**
50
- * FRONTEND
51
- */
52
- require_once(WPMM_CLASSES_PATH . 'wp-maintenance-mode-shortcodes.php');
53
- require_once(WPMM_CLASSES_PATH . 'wp-maintenance-mode.php');
54
- register_activation_hook(__FILE__, array('WP_Maintenance_Mode', 'activate'));
55
- register_deactivation_hook(__FILE__, array('WP_Maintenance_Mode', 'deactivate'));
56
-
57
- add_action('plugins_loaded', array('WP_Maintenance_Mode', 'get_instance'));
58
-
59
- /**
60
- * DASHBOARD
61
- */
62
- if (is_admin()) {
63
- require_once(WPMM_CLASSES_PATH . 'wp-maintenance-mode-admin.php');
64
- add_action('plugins_loaded', array('WP_Maintenance_Mode_Admin', 'get_instance'));
 
 
 
 
 
 
 
65
  }
1
+ <?php
2
+
3
+ /**
4
+ * WP Maintenance Mode
5
+ *
6
+ * Plugin Name: WP Maintenance Mode
7
+ * Plugin URI: http://designmodo.com/
8
+ * Description: Adds a splash page to your site that lets visitors know your site is down for maintenance. It's perfect for a coming soon page.
9
+ * Version: 2.0.4
10
+ * Author: Designmodo
11
+ * Author URI: http://designmodo.com/
12
+ * Twitter: designmodo
13
+ * GitHub Plugin URI: https://github.com/Designmodocom/WP-Maintenance-Mode
14
+ * GitHub Branch: master
15
+ * Text Domain: wp-maintenance-mode
16
+ * License: GPL-2.0+
17
+ * License URI: http://www.gnu.org/licenses/gpl-2.0.txt
18
+ * Domain Path: /languages
19
+ */
20
+ // Exit if accessed directly
21
+ if (!defined('ABSPATH'))
22
+ exit;
23
+
24
+ /**
25
+ * DEFINE PATHS
26
+ */
27
+ define('WPMM_PATH', plugin_dir_path(__FILE__));
28
+ define('WPMM_CLASSES_PATH', WPMM_PATH . 'includes/classes/');
29
+ define('WPMM_FUNCTIONS_PATH', WPMM_PATH . 'includes/functions/');
30
+ define('WPMM_LANGUAGES_PATH', basename(WPMM_PATH) . '/languages/');
31
+ define('WPMM_VIEWS_PATH', WPMM_PATH . 'views/');
32
+ define('WPMM_CSS_PATH', WPMM_PATH . 'assets/css/');
33
+
34
+ /**
35
+ * DEFINE URLS
36
+ */
37
+ define('WPMM_URL', plugin_dir_url(__FILE__));
38
+ define('WPMM_JS_URL', WPMM_URL . 'assets/js/');
39
+ define('WPMM_CSS_URL', WPMM_URL . 'assets/css/');
40
+ define('WPMM_IMAGES_URL', WPMM_URL . 'assets/images/');
41
+ define('WPMM_AUTHOR_UTM', '?utm_source=wpplugin&utm_medium=wpmaintenance');
42
+
43
+ /**
44
+ * OTHER DEFINES
45
+ */
46
+ define('WPMM_ASSETS_SUFFIX', (defined('SCRIPT_DEBUG') && SCRIPT_DEBUG) ? '' : '.min');
47
+
48
+ /**
49
+ * FUNCTIONS
50
+ */
51
+ require_once(WPMM_FUNCTIONS_PATH . 'helpers.php');
52
+ if (is_multisite() && !function_exists('is_plugin_active_for_network')) {
53
+ require_once( ABSPATH . '/wp-admin/includes/plugin.php' );
54
+ }
55
+
56
+ /**
57
+ * FRONTEND
58
+ */
59
+ require_once(WPMM_CLASSES_PATH . 'wp-maintenance-mode-shortcodes.php');
60
+ require_once(WPMM_CLASSES_PATH . 'wp-maintenance-mode.php');
61
+ register_activation_hook(__FILE__, array('WP_Maintenance_Mode', 'activate'));
62
+ register_deactivation_hook(__FILE__, array('WP_Maintenance_Mode', 'deactivate'));
63
+
64
+ add_action('plugins_loaded', array('WP_Maintenance_Mode', 'get_instance'));
65
+
66
+ /**
67
+ * DASHBOARD
68
+ */
69
+ if (is_admin()) {
70
+ require_once(WPMM_CLASSES_PATH . 'wp-maintenance-mode-admin.php');
71
+ add_action('plugins_loaded', array('WP_Maintenance_Mode_Admin', 'get_instance'));
72
  }