VaultPress - Version 1.6.2

Version Description

  • Bugfix: Make sure the key and secret options are always strings. This fixes an error when run with HHVM.
  • Feature: Instantly register for a VaultPress trial via Jetpack.
Download this release

Release Info

Developer thingalon
Plugin Icon 128x128 VaultPress
Version 1.6.2
Comparing to
See all releases

Code changes from version 1.6.1 to 1.6.2

Files changed (3) hide show
  1. readme.txt +6 -2
  2. styles.css +522 -413
  3. vaultpress.php +92 -20
readme.txt CHANGED
@@ -1,9 +1,9 @@
1
  === VaultPress ===
2
  Contributors: automattic, apokalyptik, briancolinger, josephscott, shaunandrews, xknown, thingalon
3
- Tags: security, malware, virus, backups, scanning
4
  Requires at least: 2.9.2
5
  Tested up to: 3.9.1
6
- Stable tag: 1.6.1
7
  License: GPLv2
8
 
9
  VaultPress is a subscription service offering realtime backup, automated security scanning, and support from WordPress experts.
@@ -51,6 +51,10 @@ A VaultPress subscription is for a single WordPress site. You can purchase addit
51
  Yes, VaultPress supports Multisite installs. Each site will require its own subscription.
52
 
53
  == Changelog ==
 
 
 
 
54
  = 1.6.1 =
55
  * Security: Add a new security hotfix.
56
 
1
  === VaultPress ===
2
  Contributors: automattic, apokalyptik, briancolinger, josephscott, shaunandrews, xknown, thingalon
3
+ Tags: security, malware, virus, archive, back up, back ups, backup, backups, scanning, restore, wordpress backup, site backup, website backup
4
  Requires at least: 2.9.2
5
  Tested up to: 3.9.1
6
+ Stable tag: 1.6.2
7
  License: GPLv2
8
 
9
  VaultPress is a subscription service offering realtime backup, automated security scanning, and support from WordPress experts.
51
  Yes, VaultPress supports Multisite installs. Each site will require its own subscription.
52
 
53
  == Changelog ==
54
+ = 1.6.2 =
55
+ * Bugfix: Make sure the key and secret options are always strings. This fixes an error when run with HHVM.
56
+ * Feature: Instantly register for a VaultPress trial via Jetpack.
57
+
58
  = 1.6.1 =
59
  * Security: Add a new security hotfix.
60
 
styles.css CHANGED
@@ -1,333 +1,505 @@
1
- /* --- Misc --- */
2
- .clrfix { zoom:1; }
3
- .clrfix:after { content:".";display:block;height:0;width:0;line-height:0;clear:both;visibility:hidden; }
 
 
 
 
 
 
 
 
 
 
 
4
 
5
- /* --- Structure --- */
6
- #vp-wrap {
 
 
 
 
 
 
7
  }
8
 
9
- /* --- Old Plugin Head 0.x --- */
10
- #vp-head {
11
- padding: 10px 0;
 
 
 
 
 
 
12
  }
13
- #vp-head:after {
14
- content: "."; display: block; height: 0; clear: both; visibility: hidden;
 
 
15
  }
16
- #vp-head h2 a.vp-visit-dashboard {
17
- position: absolute;
18
- top: 27px;
19
- right: 15px;
20
- -webkit-font-smoothing: antialiased;
21
- font-weight: bold;
22
- float: right;
23
- text-shadow: none;
24
- font-size: 13px;
25
- line-height: 100%;
26
- padding: 5px 15px 7px 15px;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
27
  text-decoration: none;
28
- color: #999;
29
- border: 1px solid #CCC;
30
- border: 1px solid rgba(0,0,0,0.3);
31
- -webkit-border-radius: 3px;
32
- -moz-border-radius: 3px;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
33
  border-radius: 3px;
34
- box-shadow: 0 1px 0 rgba(0,0,0,0.1);
 
 
 
 
 
 
 
 
 
35
  }
36
- #vp-head a.vp-visit-dashboard:hover {
37
- background: #0098C4;
38
- color: #FFF;
39
- border-color: rgba(0,0,0,0.3);
40
- box-shadow: inset 0 1px 0 rgba(255,255,255,0.3), 0 1px 0 rgba(0,0,0,0.1);
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
41
  }
42
- #vp-head a.vp-visit-dashboard:active {
43
- color: rgba(255,255,255,0.6);
44
- box-shadow: inset 0 2px 2px rgba(0,0,0,0.2);
45
- top: 28px;
 
 
 
 
 
 
 
 
 
 
 
 
46
  }
 
47
  #vp-head h2 {
48
- float: left;
49
- height: 32px;
50
  background: url(images/plugin-shield.png) 0 7px no-repeat;
51
  background-size: 31px 32px;
52
  font-size: 23px;
53
- padding: 11px 15px 4px 40px;
54
  line-height: 29px;
55
  }
56
- #vp-head .updated {
57
- clear: left;
 
 
 
58
  }
59
 
60
- /* --- Header 1.x --- */
61
- #icon-vaultpress {
62
- background: url(images/plugin-shield.png) 0 0 no-repeat;
 
 
 
63
  }
64
 
65
 
66
- /* --- Notices --- */
67
- #vp-notice {
68
- clear: both;
 
 
69
  display: block;
70
- background: #343434 url(images/logo_plugin-notice.png) 15px 17px no-repeat;
71
- border: 1px solid rgba(0,0,0,0.5);
72
- box-shadow: 0 2px 1px rgba(0,0,0,0.1);
73
- padding: 20px 15px 20px 55px;
74
- margin: 10px 0;
75
- -webkit-border-radius: 3px;
76
- -moz-border-radius: 3px;
77
- border-radius: 3px;
78
- font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;;
 
79
  }
80
- #vp-notice:after {
81
- content: "."; display: block; height: 0; clear: both; visibility: hidden;
 
 
 
 
82
  }
83
 
84
- #vp-notice .vp-message {
85
- color: #FFF;
86
- -webkit-font-smoothing: antialiased;
87
- }
88
- #vp-notice .vp-message h3 {
89
- font-size: 20px;
90
- font-weight: normal;
91
- font-family: HelveticaNeue-Light, 'Helvetica Neue Light', 'Helvetica Neue', Arial, Helvetica, sans-serif;
92
- margin: 0 0 10px 0;
93
- }
94
- #vp-notice .vp-message p {
95
- margin: 0;
96
- padding: 0;
97
- font-size: 12px;
98
- line-height: 180%;
99
- }
100
- #vp-notice .vp-message a {
101
- padding: 3px 10px;
102
- text-decoration: none;
103
- color: #CCC;
104
- border: 1px solid #FFF;
105
- border: 1px solid rgba(255,255,255,0.3);
106
- -webkit-border-radius: 10px;
107
- -moz-border-radius: 10px;
108
- border-radius: 10px;
109
- box-shadow: 0 1px 0 rgba(0,0,0,0.1);
110
- }
111
- #vp-notice .vp-message a:hover {
112
- background: #0098C4;
113
- color: #FFF;
114
- border-color: rgba(0,0,0,0.3);
115
- box-shadow: inset 0 1px 0 rgba(255,255,255,0.3);
116
- }
117
- #vp-notice .vp-message a:active {
118
- color: rgba(255,255,255,0.6);
119
- box-shadow: inset 0 2px 2px rgba(0,0,0,0.2);
120
- position: relative;
121
- top: 1px;
122
- }
123
-
124
- #vp-notice.vp-error {
125
  background-color: #AB0300;
 
 
 
 
 
 
126
  }
127
- #vp-notice.vp-error a { color: #FFF; }
128
- #vp-notice.vp-error a:hover { background: #333; box-shadow: inset 0 1px 0 rgba(255,255,255,0.1) }
129
- #vp-notice.vp-error a:active { }
130
 
131
 
132
- /* --- Remote Access Notice --- */
133
- #no-access-credentials {
134
  clear: both;
135
  background: #FBFBDF;
136
  padding: 1px 25px;
137
- margin: 0 0 20px 0;
138
- font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
139
  clear: both;
140
- -webkit-border-top-left-radius: 4px;
141
- -webkit-border-top-right-radius: 4px;
142
- -moz-border-radius-topleft: 4px;
143
- -moz-border-radius-topright: 4px;
144
- border-top-left-radius: 4px;
145
- border-top-right-radius: 4px;
146
  -webkit-background-clip: padding-box;
147
- -webkit-font-smoothing: antialiased;
 
 
 
 
 
 
 
 
 
 
 
148
  }
 
149
  #no-access-credentials p {
150
- font-size: 14px;
151
  color: #333;
 
152
  text-shadow: 0 1px 0 rgba(255, 255, 255, 0.8);
153
  text-align: left;
154
- padding-left: 42px;
155
- line-height: 32px;
156
- background: url(images/dashboard-icon-sprite.png) no-repeat -270px -391px;
157
- background-size: 300px 420px;
158
  }
159
 
 
 
 
 
 
160
 
161
  /* --- Toolbar --- */
162
  #wpadminbar #wp-admin-bar-vp-notice a {
163
- padding: 0 4px;
164
- }
165
- #wpadminbar #wp-admin-bar-vp-notice strong {
166
- float: left;
167
  margin-top: 3px;
168
- padding: 1px 7px 0 5px;
 
169
  background-color: #ff9a00;
170
  color: #fff;
171
  color: rgba(255,255,255,0.9);
172
  font-size: 12px;
173
  text-shadow: 0 -1px 0 rgba(0,0,0,0.3);
174
- line-height: 21px;
175
  text-shadow: none;
176
- -webkit-border-radius: 2px;
177
- -moz-border-radius: 2px;
178
  border-radius: 2px;
179
  overflow: hidden;
180
- height: 21px;
181
  }
182
 
183
- #wpadminbar #wp-admin-bar-vp-notice a:active strong {
184
  position: relative;
185
  top: 1px;
186
- box-shadow: inset 0 1px 3px rgba(0,0,0,0.3);
187
  }
188
 
189
- #wpadminbar #wp-admin-bar-vp-notice.error strong {
190
  background-color: #ac0300;
191
  }
192
 
193
- #wpadminbar #wp-admin-bar-vp-notice strong .ab-icon {
 
 
 
 
 
 
 
 
194
  width: 16px;
195
  height: 21px;
196
- margin: 0 6px 0 0;
197
- background: transparent url(images/vp-toolbar-icon-trans.png) no-repeat 0 2px;
198
  background-size: 16px;
199
  }
200
 
201
-
202
- /* gray hover */
203
- /*
204
- #wpadminbar #wp-admin-bar-vp-notice a:hover strong {
205
- background-color: #333;
206
- -webkit-box-shadow: inset 0px 1px 1px 0px rgba(0, 0, 0, .4);
207
- -moz-box-shadow: inset 0px 1px 1px 0px rgba(0, 0, 0, .4);
208
- box-shadow: inset 0px 1px 1px 0px rgba(0, 0, 0, .4);
209
- border-bottom: 1px solid #444;
210
  }
211
- */
212
-
213
- /* reset hover state */
214
 
215
- #wpadminbar #wp-admin-bar-vp-notice a.ab-item:hover {
216
- background-image: none;
217
- background-color: #222;
218
- }
219
 
 
 
 
220
 
221
- /* --- Status Ticker --- */
222
  #vp-ticker {
223
- margin: 0 0 20px 0;
224
- padding: 8px 8px;
225
- position: relative;
226
  top: 0px;
227
- border-top: 1px solid #CCC;
228
- border-bottom: 1px solid #CCC;
229
- background: #EFEFEF url(images/noise.png) repeat 0 0;
230
- font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
231
- -webkit-font-smoothing: antialiased;
232
  }
 
233
  #vp-ticker h3 {
 
234
  margin: 0;
235
  padding: 0 5px 0 0;
236
- font-size: 13px;
237
- line-height: 1em;
238
- color: #999;
239
- display: inline;
240
- font-style: normal;
241
- text-shadow: 0 1px 0 #FFF;
242
- font-weight: bold;
243
-
244
- -webkit-font-smoothing: antialiased;
245
- -webkit-border-radius: 4px;
246
- -moz-border-radius: 4px;
247
  border-radius: 4px;
 
 
 
 
248
  }
 
249
  #vp-ticker p {
 
250
  margin: 0;
251
  padding: 0;
252
- display: inline;
253
  font-size: 13px;
254
- line-height: 1em;
255
- color: #000;
256
- text-shadow: none;
257
  }
258
 
259
 
260
- /* --- Tabs --- */
261
- #vp-tabs {
 
 
 
262
  /* IE 7 specific */
263
  *position: relative;
264
  *z-index: 1;
 
265
  }
266
- #vp-tabs .menu-tabs {
 
267
  float: left;
268
  height: 28px;
269
  line-height: 28px;
270
  margin: 0 5px 0 0;
271
  padding: 0 8px;
272
- border-width: 1px 1px 1px;
273
- border-style: solid;
274
- border-color: #ddd #ddd #fff;
275
  font-size: 13px;
276
  color: #818181;
277
  background-color: #fff;
278
  text-decoration: none;
279
- text-shadow: #fff 0px 1px 0px;
280
  text-transform: uppercase;
281
  font-family: "Lucida Grande", Lucida, Helvetica, Verdana, Arial, sans-serif;
282
  }
283
- #vp-tabs .menu-tab-inactive {
284
- border-color: #ddd;
285
- background-color: #ededed;
286
- color: #21759b;
287
  }
288
- #vp-tabs .menu-tab-inactive:hover {
 
289
  text-decoration: underline;
290
  }
 
291
  #vp-tab-content {
292
- min-width: 568px;
293
- max-width: 1000px;
294
- margin-top: -1px;
295
  padding: 20px;
296
- border: 1px solid #ddd;
 
 
297
  background-color: #fff;
 
298
  }
 
299
  #vp-tab-content .label {
300
  padding-left: 8px;
301
  }
302
- #vp-totals table td {
 
303
  border-top: #ececec 1px solid;
304
  padding: 3px 0;
305
  white-space: nowrap;
306
  }
307
- #vp-totals table tr.first td {
308
- border-top: none;
309
- }
310
- #vp-totals td.b {
311
  padding-right: 6px;
312
  text-align: right;
313
  font-family: Georgia, "Times New Roman", "Bitstream Charter", Times, serif;
314
  font-size: 18px;
315
  }
 
316
  #vp-totals .t {
317
  font-size: 12px;
318
  padding-right: 12px;
319
  padding-top: 6px;
320
  color: #777;
321
  }
322
- #vp-totals td.first,
323
- #vp-totals td.last {
 
324
  width: 1%;
325
  }
326
- #vp-totals .col1 {
327
- float: left;
328
- width: 45%;
329
- margin-right: 1em;
330
- }
331
  #vp-totals p,
332
  #vp-activity p {
333
  margin-top: 0;
@@ -335,23 +507,46 @@
335
  font-family: Georgia, "Times New Roman", "Bitstream Charter", Times, serif;
336
  font-size: 16px;
337
  }
338
- #vp-totals p em {
 
339
  color: #666;
340
  font-size: 13px;
341
  font-style: italic;
342
  }
343
- #vp-totals .col2 {
 
 
344
  float: left;
 
 
 
 
345
  width: 25%;
346
  }
347
- #vp-totals .col3 {
 
 
 
 
 
 
348
  float: right;
349
- width: 25%;
350
  }
 
 
 
 
 
 
 
 
 
 
351
  #vp-totals p {
352
  clear: both;
353
  width: 100%;
354
  }
 
355
  #vp-activity td {
356
  padding: 12px 8px;
357
  color: #666;
@@ -359,238 +554,109 @@
359
  font-size: 13px;
360
  vertical-align: middle;
361
  }
362
- #vp-activity td .ago {
 
363
  color: #000;
364
  font-size: 1.2em;
365
  }
366
- #vp-activity td.date {
 
367
  width: 1%;
368
  padding-right: 15px;
369
  white-space: nowrap;
370
  }
371
 
372
 
 
 
 
373
 
374
- /* --- Not Registered/Activated --- */
375
- #vp_registration {
376
- clear: both;
377
- position: relative;
378
- margin: 10px 0 20px 0;
379
- -webkit-font-smoothing: antialiased;
380
- }
381
- #vp_registration:after { content: "."; display: block; height: 0; clear: both; visibility: hidden; }
382
-
383
- #vp_registration .vp_view-plans {
384
- background: #333 url(images/noise.png) repeat 0 0;
385
- color: #FFF;
386
- float: left;
387
- width: 360px;
388
- padding: 20px 30px 30px 30px;
389
- margin-right: 30px;
390
- -webkit-border-radius: 6px;
391
- -moz-border-radius: 6px;
392
- border-radius: 6px;
393
- }
394
- #vp_registration .vp_view-plans h1 {
395
- font-size: 24px;
396
- font-weight: normal;
397
- font-family: HelveticaNeue-Light, 'Helvetica Neue Light', 'Helvetica Neue', Arial, Helvetica, sans-serif;
398
- margin: 0 0 10px 0;
399
- line-height: 140%;
400
- }
401
- #vp_registration .vp_view-plans h1 strong {}
402
- #vp_registration .vp_view-plans p {
403
- color: #CCC;
404
- font-size: 15px;
405
- line-height: 140%;
406
- margin: 0 0 25px 0;
407
- }
408
- #vp_registration .vp_view-plans h5 strong {}
409
- #vp_registration .vp_view-plans p.vp_plans-btn {
410
- position: relative;
411
- left: -5px;
412
- }
413
- #vp_registration .vp_view-plans p.vp_plans-btn a {
414
- float: left;
415
- padding: 4px;
416
- background-color: rgba(0,0,0,0.8);
417
- background-color: #000;
418
- -webkit-border-radius: 30px;
419
- -moz-border-radius: 30px;
420
- border-radius: 30px;
421
- text-decoration: none;
422
- color: #FFF;
423
- font-size: 13px;
424
- text-shadow: 0 -1px 0 rgba(0,0,0,0.3);
425
- }
426
- #vp_registration .vp_view-plans p.vp_plans-btn a:hover {}
427
- #vp_registration .vp_view-plans p.vp_plans-btn a:active {}
428
- #vp_registration .vp_view-plans p.vp_plans-btn a strong {
429
- background: #0090BA;
430
- padding: 10px 55px;
431
- float: left;
432
- border: 1px solid rgba(0, 0, 0, 0.4);
433
- box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.3);
434
- -moz-border-radius: 30px;
435
- -webkit-border-radius: 30px;
436
- border-radius: 30px;
437
- -webkit-background-clip: padding-box;
438
- text-decoration: none;
439
- color: white;
440
- font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
441
- font-size: 16px;
442
- font-weight: normal;
443
- text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.2);
444
- background: -moz-linear-gradient(top, #10C3EF 0%, #10A6CC 3%, #039BC1 43%, #009AC4 46%, #0084A5 100%);
445
- background: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #10C3EF), color-stop(3%, #10A6CC), color-stop(43%, #039BC1), color-stop(46%, #009AC4), color-stop(100%, #0084A5));
446
- background: -webkit-linear-gradient(top, #10C3EF 0%, #10A6CC 3%, #039BC1 43%, #009AC4 46%, #0084A5 100%);
447
- background: -o-linear-gradient(top, #10C3EF 0%, #10A6CC 3%, #039BC1 43%, #009AC4 46%, #0084A5 100%);
448
- background: -ms-linear-gradient(top, #10C3EF 0%, #10A6CC 3%, #039BC1 43%, #009AC4 46%, #0084A5 100%);
449
- background: linear-gradient(top, #10C3EF 0%, #10A6CC 3%, #039BC1 43%, #009AC4 46%, #0084A5 100%);
450
- }
451
- #vp_registration .vp_view-plans p.vp_plans-btn a strong b { font-weight: bold; }
452
- #vp_registration .vp_view-plans p.vp_plans-btn a:hover strong {
453
- box-shadow: 0 3px 4px #000;
454
- text-decoration: underline;
455
- }
456
- #vp_registration .vp_view-plans p.vp_plans-btn a:active strong {
457
- background: #007ca0; /* Old browsers */
458
- background: -moz-linear-gradient(top, #007ca0 0%, #7db9e8 100%); /* FF3.6+ */
459
- background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#007ca0), color-stop(100%,#7db9e8)); /* Chrome,Safari4+ */
460
- background: -webkit-linear-gradient(top, #007ca0 0%,#7db9e8 100%); /* Chrome10+,Safari5.1+ */
461
- background: -o-linear-gradient(top, #007ca0 0%,#7db9e8 100%); /* Opera11.10+ */
462
- background: -ms-linear-gradient(top, #007ca0 0%,#7db9e8 100%); /* IE10+ */
463
- filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#007ca0', endColorstr='#7db9e8',GradientType=0 ); /* IE6-9 */
464
- background: linear-gradient(top, #007ca0 0%,#7db9e8 100%); /* W3C */
465
  }
466
 
467
- #vp_registration .vp_register-plugin {
468
- float: left;
469
- padding: 50px 0 0 0;
470
- }
471
- #vp_registration .vp_register-plugin h3 {
472
- font-size: 15px;
473
- color: #333;
474
- text-shadow: 0 1px 0 #FFF;
475
- margin: 0 0 5px 0;
476
- }
477
- #vp_registration .vp_register-plugin p {
478
- margin: 0 0 15px 0;
479
- color: #666;
480
- }
481
- #vp_registration .vp_register-plugin fieldset {}
482
- #vp_registration .vp_register-plugin textarea {
483
  display: block;
484
- width: 350px;
485
- height: 60px;
486
- border: 1px solid #999;
487
- box-shadow: inset 0 2px 4px rgba(0,0,0,0.2);
488
- padding: 5px;
489
- font-size: 14px;
490
- font-family: Georgia, Constantia, "Palatino Linotype", "Book Antiqua", serif;;
491
- -webkit-border-radius: 3px;
492
- -moz-border-radius: 3px;
493
- border-radius: 3px;
494
- }
495
- #vp_registration .vp_register-plugin button {
496
- -webkit-font-smoothing: antialiased;
497
- float: left;
498
- font-family: HelveticaNeue-Light, 'Helvetica Neue Light', 'Helvetica Neue', Arial, Helvetica, sans-serif;
499
- padding: 0;
500
- border: none !important;
501
- background: transparent;
502
- text-decoration: none;
503
- color: #333;
504
- font-size: 13px;
505
- text-shadow: 0 1px 0 #FFF;
506
- cursor: pointer;
507
- position: relative;
508
- top: 10px;
509
- left: -4px;
510
- }
511
- #vp_registration .vp_register-plugin button strong {
512
- float: left;
513
- padding: 7px 25px;
514
- border: 1px solid #999;
515
- -webkit-border-radius: 30px;
516
- -moz-border-radius: 30px;
517
- border-radius: 30px;
518
-
519
- background: #ffffff; /* Old browsers */
520
- background: -moz-linear-gradient(top, #ffffff 0%, #dddddd 100%); /* FF3.6+ */
521
- background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#ffffff), color-stop(100%,#dddddd)); /* Chrome,Safari4+ */
522
- background: -webkit-linear-gradient(top, #ffffff 0%,#dddddd 100%); /* Chrome10+,Safari5.1+ */
523
- background: -o-linear-gradient(top, #ffffff 0%,#dddddd 100%); /* Opera11.10+ */
524
- background: -ms-linear-gradient(top, #ffffff 0%,#dddddd 100%); /* IE10+ */
525
- filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#ffffff', endColorstr='#dddddd',GradientType=0 ); /* IE6-9 */
526
- background: linear-gradient(top, #ffffff 0%,#dddddd 100%); /* W3C */
527
- }
528
- #vp_registration .vp_register-plugin button strong:active { background: #CCC; position: relative; top: 1px; }
529
-
530
-
531
-
532
- /* Progress Bars */
533
- #vp_progress {
534
- font-family: Helvetica, Arial, Sans-serif;
535
  }
536
- #vp_progress:after { content: "."; display: block; height: 0; clear: both; visibility: hidden; }
537
 
538
- #vp_progress .vp_graphs {
539
  background: #333 url(images/noise.png) repeat 0 0;
540
  color: #FFF;
541
  float: left;
542
  width: 380px;
543
  padding: 0;
544
- -webkit-border-radius: 6px;
545
- -moz-border-radius: 6px;
546
  border-radius: 6px;
547
- -webkit-font-smoothing: antialiased;
548
  }
549
- #vp_progress .vp_graphs:after { content: "."; display: block; height: 0; clear: both; visibility: hidden; }
550
 
551
- #vp_progress .vp_graphs h1 {
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
552
  color: #FFF;
553
  text-shadow: 0 -1px 0 rgba(0,0,0,0.4);
554
  padding: 20px 30px 20px 30px;
555
  margin: 0;
556
  border-bottom: 1px solid rgba(255,255,255,0.05);
557
-
558
  font-size: 24px;
559
- font-weight: normal;
560
- font-family: HelveticaNeue-Light, 'Helvetica Neue Light', 'Helvetica Neue', Arial, Helvetica, sans-serif;
561
- line-height: 140%;
 
 
 
 
 
562
  }
563
- #vp_progress .vp_graphs ul {
 
 
564
  padding: 0 0 5px 0;
565
  float: left;
566
- width: 380px;
567
  background: rgba(0,0,0,0.1);
568
  }
569
- #vp_progress .vp_graphs ul li {
 
570
  float: left;
571
  clear: both;
572
  margin: 0;
573
- width: 320px;
574
  padding: 15px 30px;
 
575
  line-height: 100%;
576
  border-top: 1px solid rgba(0,0,0,0.3);
577
  border-bottom: 1px solid rgba(255,255,255,0.05);
578
  }
579
- #vp_progress .vp_graphs ul li.completed { }
580
- #vp_progress .vp_graphs ul li.completed .bar { }
581
- #vp_progress .vp_graphs ul li.completed .bar span {
582
  background: rgb(41,154,11);
583
- background: -moz-linear-gradient(top, rgba(41,154,11,1) 0%, rgba(41,154,11,1) 100%);
584
  background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,rgba(41,154,11,1)), color-stop(100%,rgba(41,154,11,1)));
585
  background: -webkit-linear-gradient(top, rgba(41,154,11,1) 0%,rgba(41,154,11,1) 100%);
586
- background: -o-linear-gradient(top, rgba(41,154,11,1) 0%,rgba(41,154,11,1) 100%);
587
- background: -ms-linear-gradient(top, rgba(41,154,11,1) 0%,rgba(41,154,11,1) 100%);
588
  filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#299a0b', endColorstr='#299a0b',GradientType=0 );
589
  background: linear-gradient(top, rgba(41,154,11,1) 0%,rgba(41,154,11,1) 100%);
590
  }
591
- #vp_progress .vp_graphs ul li.completed .percentage,
592
- #vp_progress .vp_graphs ul li.completed .title {
593
- color: #FFF;
 
594
  }
595
 
596
  #vp_progress .bar {
@@ -600,31 +666,37 @@
600
  background: #252525 url(images/noise.png) repeat 0 0;
601
  margin: 0 5px 0 0;
602
  border: 1px solid rgba(255,255,255,0.1);
603
- -webkit-border-radius: 20px;
604
- -moz-border-radius: 20px;
605
  border-radius: 20px;
 
606
  box-shadow: inset 0 1px 1px rgba(0,0,0,0.6);
607
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
608
  #vp_progress .bar span {
609
  float: left;
610
  height: 22px;
611
-
612
  background: #63b6db;
613
- background: -moz-linear-gradient(top, #63b6db 0%, #309dcf 100%);
614
  background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#63b6db), color-stop(100%,#309dcf));
615
  background: -webkit-linear-gradient(top, #63b6db 0%,#309dcf 100%);
616
- background: -o-linear-gradient(top, #63b6db 0%,#309dcf 100%);
617
- background: -ms-linear-gradient(top, #63b6db 0%,#309dcf 100%);
618
  filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#63b6db', endColorstr='#309dcf',GradientType=0 );
619
  background: linear-gradient(top, #63b6db 0%,#309dcf 100%);
620
-
621
-
622
  box-shadow: inset 0 1px 0 rgba(255,255,255,0.2);
623
-
624
- -webkit-border-radius: 20px;
625
- -moz-border-radius: 20px;
626
  border-radius: 20px;
627
  }
 
628
  #vp_progress .percentage {
629
  float: right;
630
  position: relative;
@@ -636,6 +708,7 @@
636
  font-weight: bold;
637
  color: #999;
638
  }
 
639
  #vp_progress .title {
640
  float: left;
641
  width: 60px;
@@ -645,28 +718,42 @@
645
  color: #CCC;
646
  }
647
 
648
- #vp_progress .vp_progress-description {
649
  margin: 0 0 0 400px;
650
- padding: 20px 20px 0 20px;
 
 
 
 
 
 
 
 
651
  }
652
- #vp_progress .vp_progress-description h3 {
 
 
653
  font-size: 12px;
654
- color: #AAA;
655
  }
656
- #vp_progress .vp_progress-description ul {
 
657
  margin: 0 0 20px 0;
658
  }
659
- #vp_progress .vp_progress-description li {
 
660
  list-style: square;
661
  color: #777;
662
  margin: 0 0 15px 0;
663
  font-size: 12px;
664
  line-height: 160%;
665
  }
666
- #vp_progress .vp_progress-description li strong {
 
667
  color: #555;
668
  }
669
- #vp_progress .vp_progress-description p {
 
670
  font-size: 12px;
671
  color: #999;
672
  font-style: italic;
@@ -674,9 +761,31 @@
674
  margin: 0 0 30px 0;
675
  }
676
 
 
 
 
 
677
 
678
- @media only screen and (-moz-min-device-pixel-ratio: 1.5), only screen and (-o-min-device-pixel-ratio: 3, '/', 2), only screen and (-webkit-min-device-pixel-ratio: 1.5), only screen and (min-device-pixel-ratio: 1.5) {
679
- #vp-head h2 { background-image: url(images/plugin-shield-2x.png); }
680
- #no-access-credentials p { background-image: url(images/dashboard-icon-sprite-2x.png); }
681
- #wpadminbar #wp-admin-bar-vp-notice strong .ab-icon { background-image: url(images/vp-toolbar-icon-trans-2x.png); }
682
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /* ==========================================================================
2
+ Mini normalize
3
+ ========================================================================== */
4
+ #vp-notice,
5
+ #vp-wrap,
6
+ #vp-wrap *,
7
+ #vp-wrap *:before,
8
+ #vp-wrap *:after {
9
+ -webkit-box-sizing: border-box;
10
+ -moz-box-sizing: border-box;
11
+ box-sizing: border-box;
12
+ -webkit-font-smoothing: antialiased;
13
+ }
14
+
15
 
16
+ /* ==========================================================================
17
+ Helpers
18
+ ========================================================================== */
19
+
20
+ /* Clearfix */
21
+ .clearfix,
22
+ .clrfix {
23
+ zoom:1;
24
  }
25
 
26
+ .clearfix:after,
27
+ .clrfix:after {
28
+ content:".";
29
+ display:block;
30
+ height:0;
31
+ width:0;
32
+ line-height:0;
33
+ clear:both;
34
+ visibility:hidden;
35
  }
36
+
37
+ /* grid container */
38
+ .grid {
39
+ margin: 0 -1%;
40
  }
41
+
42
+ .half {
43
+ margin: 0 1% 2%;
44
+ width: 48%;
45
+ float: left;
46
+ }
47
+
48
+ @media (max-width: 767px) {
49
+ .half {
50
+ float: none;
51
+ width: 98%;
52
+ }
53
+ }
54
+
55
+
56
+ /* ==========================================================================
57
+ Buttons
58
+ ========================================================================== */
59
+ .vp_button-mega,
60
+ .vp_button-mega:visited {
61
+ position: relative;
62
+ display: inline-block;
63
+ margin: 0;
64
+ padding: 10px 55px;
65
+ border: 1px solid rgba(0, 0, 0, 0.4);
66
+ border-radius: 30px;
67
+ -webkit-background-clip: padding-box;
68
+ background: #0090BA;
69
+ background: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #10C3EF), color-stop(3%, #10A6CC), color-stop(43%, #039BC1), color-stop(46%, #009AC4), color-stop(100%, #0084A5));
70
+ background: -webkit-linear-gradient(top, #10C3EF 0%, #10A6CC 3%, #039BC1 43%, #009AC4 46%, #0084A5 100%);
71
+ background: linear-gradient(top, #10C3EF 0%, #10A6CC 3%, #039BC1 43%, #009AC4 46%, #0084A5 100%);
72
+ color: #fff;
73
+ font-size: 16px;
74
+ line-height: 1.5;
75
+ font-weight: 400;
76
+ text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.2);
77
  text-decoration: none;
78
+ -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.3), 0 0 0 4px black;
79
+ box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.3), 0 0 0 4px black;
80
+ cursor: pointer;
81
+ outline: 0;
82
+ }
83
+
84
+ .vp_button-mega:hover,
85
+ .vp_button-mega:active,
86
+ .vp_button-mega:focus {
87
+ color: #fff;
88
+ }
89
+
90
+ .vp_card .vp_button-mega {
91
+ -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.3), 0 0 0 4px #eee;
92
+ box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.3), 0 0 0 4px #eee;
93
+ }
94
+
95
+ .vp_button-secondary {
96
+ position: relative;
97
+ top: 10px;
98
+ left: -4px;
99
+ float: left;
100
+ padding: 7px 25px;
101
+ border: 1px solid #999;
102
+ border-radius: 30px;
103
+ text-decoration: none;
104
+ color: #333;
105
+ font-size: 13px;
106
+ text-shadow: 0 1px 0 #FFF;
107
+ cursor: pointer;
108
+ background: #ffffff;
109
+ background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#ffffff), color-stop(100%,#dddddd));
110
+ background: -webkit-linear-gradient(top, #ffffff 0%,#dddddd 100%);
111
+ filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#ffffff', endColorstr='#dddddd',GradientType=0 );
112
+ background: linear-gradient(top, #ffffff 0%,#dddddd 100%);
113
+ outline: 0;
114
+ }
115
+
116
+ .vp_button-secondary:active,
117
+ .vp-botton-secondary:hover,
118
+ .vp-botton-secondary:focus {
119
+ position: relative;
120
+ top: 1px;
121
+ background: #ccc;
122
+ }
123
+
124
+ .vp-visit-dashboard {
125
+ /* same as .button-secondary */
126
+ display: inline-block;
127
+ height: 28px;
128
+ margin: 0;
129
+ border: 1px solid #ccc;
130
  border-radius: 3px;
131
+ padding: 0 10px 1px;
132
+ color: #555;
133
+ font-size: 13px;
134
+ line-height: 26px;
135
+ text-decoration: none;
136
+ cursor: pointer;
137
+ white-space: nowrap;
138
+ background: #f7f7f7;
139
+ -webkit-box-shadow: inset 0 1px 0 #fff,0 1px 0 rgba(0,0,0,.08);
140
+ box-shadow: inset 0 1px 0 #fff,0 1px 0 rgba(0,0,0,.08);
141
  }
142
+
143
+ .vp-visit-dashboard:hover,
144
+ .vp-visit-dashboard:focus {
145
+ border-color: #999;
146
+ background: #fafafa;
147
+ color: #222;
148
+ }
149
+
150
+ .vp-visit-dashboard:focus {
151
+ -webkit-box-shadow: 1px 1px 1px rgba(0,0,0,.2);
152
+ box-shadow: 1px 1px 1px rgba(0,0,0,.2);
153
+ }
154
+
155
+ .vp-visit-dashbord:active {
156
+ border-color: #999;
157
+ background: #eee;
158
+ color: #333;
159
+ -webkit-box-shadow: inset 0 2px 5px -3px rgba(0,0,0,.5);
160
+ box-shadow: inset 0 2px 5px -3px rgba(0,0,0,.5);
161
+ }
162
+
163
+
164
+ /* ==========================================================================
165
+ Cards - dark and light panel patterns
166
+ ========================================================================== */
167
+
168
+ .vp_card,
169
+ .vp_card-dark {
170
+ margin-bottom: 2%;
171
+ padding: 20px 30px 30px 30px;
172
+ border-radius: 6px;
173
+ background: #fff;
174
+ }
175
+
176
+ .vp_card-dark {
177
+ background: #333 url(images/noise.png) repeat 0 0;
178
+ color: #fff;
179
+ }
180
+
181
+ .vp_card h2,
182
+ .vp_card-dark h2 {
183
+ margin: 0 0 20px;
184
+ font-size: 28px;
185
+ font-weight: 300;
186
+ line-height: 1.4;
187
+ }
188
+
189
+ .vp_card-dark h2{
190
+ color: #fff;
191
+ }
192
+
193
+ .vp_card p,
194
+ .vp_card-dark p {
195
+ font-size: 15px;
196
+ }
197
+
198
+ .vp_card p:last-child,
199
+ .vp_card-dark p:last-child {
200
+ margin-bottom: 0;
201
+ }
202
+
203
+ .vp_card-dark p {
204
+ color: #ccc;
205
  }
206
+
207
+ .vp_card-description {
208
+ margin-bottom: 30px;
209
+ }
210
+
211
+
212
+ /* ==========================================================================
213
+ Header
214
+ ========================================================================== */
215
+
216
+ #vp-head {
217
+ position: relative;
218
+ margin-bottom: 10px;
219
+ padding: 10px 0;
220
+ width: 100%;
221
+ overflow: hidden;
222
  }
223
+
224
  #vp-head h2 {
225
+ margin-top: 0;
226
+ padding: 11px 15px 4px 40px;
227
  background: url(images/plugin-shield.png) 0 7px no-repeat;
228
  background-size: 31px 32px;
229
  font-size: 23px;
 
230
  line-height: 29px;
231
  }
232
+
233
+ @media only screen and (-moz-min-device-pixel-ratio: 1.5), only screen and (-o-min-device-pixel-ratio: 3, '/', 2), only screen and (-webkit-min-device-pixel-ratio: 1.5), only screen and (min-device-pixel-ratio: 1.5) {
234
+ #vp-head h2 {
235
+ background-image: url(images/plugin-shield-2x.png) no-repeat;
236
+ }
237
  }
238
 
239
+ /* Dashboard link */
240
+ #vp-head .button-secondary,
241
+ .vp-visit-dashboard {
242
+ position: absolute;
243
+ top: 20px;
244
+ right: 15px;
245
  }
246
 
247
 
248
+ /* ==========================================================================
249
+ Notices
250
+ ========================================================================== */
251
+
252
+ .vp-notice {
253
  display: block;
254
+ margin-top: 30px;
255
+ padding: 30px;
256
+ border-radius: 6px;
257
+ background: #fff;
258
+ }
259
+
260
+ .vp-notice h3 {
261
+ margin: 0 0 10px 0;
262
+ font-size: 20px;
263
+ font-weight: 400;
264
  }
265
+
266
+ .vp-notice p {
267
+ margin: 0;
268
+ padding: 0;
269
+ font-size: 14px;
270
+ line-height: 1.6;
271
  }
272
 
273
+ .vp-error {
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
274
  background-color: #AB0300;
275
+ color: #fff;
276
+ }
277
+
278
+ .vp-error h3,
279
+ .vp-error a {
280
+ color: #fff;
281
  }
 
 
 
282
 
283
 
284
+ /* --- Trial period notice --- */
285
+ .trial-notice {
286
  clear: both;
287
  background: #FBFBDF;
288
  padding: 1px 25px;
289
+ margin: 0 20px 20px 0;
290
+ border-radius: 4px;
291
+ -webkit-background-clip: padding-box;
292
+ }
293
+
294
+ .trial-expiring {
295
+ background: #fff;
296
+ }
297
+
298
+ .trial-expiring p {
299
+ font-size: 18px;
300
+ }
301
+
302
+ @media only screen and (-moz-min-device-pixel-ratio: 1.5), only screen and (-o-min-device-pixel-ratio: 3, '/', 2), only screen and (-webkit-min-device-pixel-ratio: 1.5), only screen and (min-device-pixel-ratio: 1.5) {
303
+ .trial-expiring p {
304
+ font-size: 16px;
305
+ }
306
+ }
307
+
308
+ /* --- Remote Access Notice --- */
309
+ #no-access-credentials {
310
+ position: relative;
311
  clear: both;
312
+ margin: 0 20px 20px 0;
313
+ padding: 0 25px 0 68px;
314
+ border-radius: 4px;
315
+ background: #FBFBDF;
 
 
316
  -webkit-background-clip: padding-box;
317
+ overflow: hidden;
318
+ }
319
+
320
+ #no-access-credentials:before {
321
+ content: '';
322
+ position: absolute;
323
+ top: 15px;
324
+ left: 20px;
325
+ width: 34px;
326
+ height: 32px;
327
+ background: url(images/dashboard-icon-sprite.png) no-repeat -270px -391px;
328
+ background-size: 300px 420px;
329
  }
330
+
331
  #no-access-credentials p {
332
+ margin: 20px 0;
333
  color: #333;
334
+ font-size: 14px;
335
  text-shadow: 0 1px 0 rgba(255, 255, 255, 0.8);
336
  text-align: left;
337
+ line-height: 1.4;
 
 
 
338
  }
339
 
340
+ @media only screen and (-moz-min-device-pixel-ratio: 1.5), only screen and (-o-min-device-pixel-ratio: 3, '/', 2), only screen and (-webkit-min-device-pixel-ratio: 1.5), only screen and (min-device-pixel-ratio: 1.5) {
341
+ #no-access-credentials:before {
342
+ background-image: url(images/dashboard-icon-sprite-2x.png) no-repeat;
343
+ }
344
+ }
345
 
346
  /* --- Toolbar --- */
347
  #wpadminbar #wp-admin-bar-vp-notice a {
348
+ position: relative;
349
+ display: block;
 
 
350
  margin-top: 3px;
351
+ padding: 1px 7px 0 26px;
352
+ height: 25px;
353
  background-color: #ff9a00;
354
  color: #fff;
355
  color: rgba(255,255,255,0.9);
356
  font-size: 12px;
357
  text-shadow: 0 -1px 0 rgba(0,0,0,0.3);
358
+ line-height: 24px;
359
  text-shadow: none;
 
 
360
  border-radius: 2px;
361
  overflow: hidden;
 
362
  }
363
 
364
+ #wpadminbar #wp-admin-bar-vp-notice a:active {
365
  position: relative;
366
  top: 1px;
 
367
  }
368
 
369
+ #wpadminbar #wp-admin-bar-vp-notice.error a {
370
  background-color: #ac0300;
371
  }
372
 
373
+ #wpadminbar #wp-admin-bar-vp-notice .ab-icon {
374
+ position: static;
375
+ }
376
+
377
+ #wpadminbar #wp-admin-bar-vp-notice .ab-icon:before {
378
+ content: '';
379
+ position: absolute;
380
+ top: 4px;
381
+ left: 8px;
382
  width: 16px;
383
  height: 21px;
384
+ background: blue url(images/vp-toolbar-icon-trans.png) no-repeat 0 2px;
 
385
  background-size: 16px;
386
  }
387
 
388
+ @media only screen and (-moz-min-device-pixel-ratio: 1.5), only screen and (-o-min-device-pixel-ratio: 3, '/', 2), only screen and (-webkit-min-device-pixel-ratio: 1.5), only screen and (min-device-pixel-ratio: 1.5) {
389
+ #wpadminbar #wp-admin-bar-vp-notice .ab-icon:before {
390
+ background: url(images/vp-toolbar-icon-trans-2x.png) no-repeat;
391
+ background-size: 16px;
392
+ }
 
 
 
 
393
  }
 
 
 
394
 
 
 
 
 
395
 
396
+ /* ==========================================================================
397
+ Status Ticker
398
+ ========================================================================== */
399
 
 
400
  #vp-ticker {
401
+ position: relative; /* WAT */
 
 
402
  top: 0px;
403
+ margin: 0 20px 20px 0;
404
+ padding: 9px 13px;
405
+ border-radius: 4px;
406
+ background: #333 url(images/noise.png) repeat 0 0;
407
+ color: #ddd;
408
  }
409
+
410
  #vp-ticker h3 {
411
+ display: inline;
412
  margin: 0;
413
  padding: 0 5px 0 0;
 
 
 
 
 
 
 
 
 
 
 
414
  border-radius: 4px;
415
+ color: #ddd;
416
+ font-size: 13px;
417
+ font-weight: 700;
418
+ line-height: 1;
419
  }
420
+
421
  #vp-ticker p {
422
+ display: inline;
423
  margin: 0;
424
  padding: 0;
 
425
  font-size: 13px;
426
+ line-height: 1;
 
 
427
  }
428
 
429
 
430
+ /* ==========================================================================
431
+ Tabs
432
+ ========================================================================== */
433
+
434
+ #vp-tabs { /* WAT */
435
  /* IE 7 specific */
436
  *position: relative;
437
  *z-index: 1;
438
+ overflow: hidden;
439
  }
440
+
441
+ .menu-tabs {
442
  float: left;
443
  height: 28px;
444
  line-height: 28px;
445
  margin: 0 5px 0 0;
446
  padding: 0 8px;
 
 
 
447
  font-size: 13px;
448
  color: #818181;
449
  background-color: #fff;
450
  text-decoration: none;
 
451
  text-transform: uppercase;
452
  font-family: "Lucida Grande", Lucida, Helvetica, Verdana, Arial, sans-serif;
453
  }
454
+
455
+ .menu-tab-inactive {
456
+ background-color: #ddd;
457
+ color: #888;
458
  }
459
+
460
+ .menu-tab-inactive:hover {
461
  text-decoration: underline;
462
  }
463
+
464
  #vp-tab-content {
465
+ margin-right: 20px;
 
 
466
  padding: 20px;
467
+ border-top-right-radius: 6px;
468
+ border-bottom-right-radius: 6px;
469
+ border-bottom-left-radius: 6px;
470
  background-color: #fff;
471
+ overflow: auto;
472
  }
473
+
474
  #vp-tab-content .label {
475
  padding-left: 8px;
476
  }
477
+
478
+ #vp-totals td {
479
  border-top: #ececec 1px solid;
480
  padding: 3px 0;
481
  white-space: nowrap;
482
  }
483
+
484
+ #vp-totals .b {
 
 
485
  padding-right: 6px;
486
  text-align: right;
487
  font-family: Georgia, "Times New Roman", "Bitstream Charter", Times, serif;
488
  font-size: 18px;
489
  }
490
+
491
  #vp-totals .t {
492
  font-size: 12px;
493
  padding-right: 12px;
494
  padding-top: 6px;
495
  color: #777;
496
  }
497
+
498
+ #vp-totals .first,
499
+ #vp-totals .last {
500
  width: 1%;
501
  }
502
+
 
 
 
 
503
  #vp-totals p,
504
  #vp-activity p {
505
  margin-top: 0;
507
  font-family: Georgia, "Times New Roman", "Bitstream Charter", Times, serif;
508
  font-size: 16px;
509
  }
510
+
511
+ #vp-totals em {
512
  color: #666;
513
  font-size: 13px;
514
  font-style: italic;
515
  }
516
+
517
+ .col1,
518
+ .col2 {
519
  float: left;
520
+ }
521
+
522
+ .col2,
523
+ .col3 {
524
  width: 25%;
525
  }
526
+
527
+ .col1 {
528
+ width: 45%;
529
+ margin-right: 1em;
530
+ }
531
+
532
+ .col3 {
533
  float: right;
 
534
  }
535
+
536
+ @media (max-width: 700px) {
537
+ .col1,
538
+ .col2,
539
+ .col3 {
540
+ float: none;
541
+ width: 100%;
542
+ }
543
+ }
544
+
545
  #vp-totals p {
546
  clear: both;
547
  width: 100%;
548
  }
549
+
550
  #vp-activity td {
551
  padding: 12px 8px;
552
  color: #666;
554
  font-size: 13px;
555
  vertical-align: middle;
556
  }
557
+
558
+ #vp-activity .ago {
559
  color: #000;
560
  font-size: 1.2em;
561
  }
562
+
563
+ #vp-activity .date {
564
  width: 1%;
565
  padding-right: 15px;
566
  white-space: nowrap;
567
  }
568
 
569
 
570
+ /* ==========================================================================
571
+ Progress Bars
572
+ ========================================================================== */
573
 
574
+ #vp_progress {
575
+ padding-right: 20px;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
576
  }
577
 
578
+ #vp_progress:after {
579
+ /* clearfix */
580
+ content: ".";
 
 
 
 
 
 
 
 
 
 
 
 
 
581
  display: block;
582
+ height: 0;
583
+ clear: both;
584
+ visibility: hidden;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
585
  }
 
586
 
587
+ .vp_graphs {
588
  background: #333 url(images/noise.png) repeat 0 0;
589
  color: #FFF;
590
  float: left;
591
  width: 380px;
592
  padding: 0;
 
 
593
  border-radius: 6px;
 
594
  }
 
595
 
596
+ @media (max-width: 767px) {
597
+ .vp_graphs {
598
+ float: none;
599
+ margin-bottom: 20px;
600
+ width: 100%;
601
+ }
602
+ }
603
+
604
+ .vp_graphs:after {
605
+ /* clearfix */
606
+ content: ".";
607
+ display: block;
608
+ height: 0;
609
+ clear: both;
610
+ visibility: hidden;
611
+ }
612
+
613
+ .vp_graphs h1 {
614
  color: #FFF;
615
  text-shadow: 0 -1px 0 rgba(0,0,0,0.4);
616
  padding: 20px 30px 20px 30px;
617
  margin: 0;
618
  border-bottom: 1px solid rgba(255,255,255,0.05);
 
619
  font-size: 24px;
620
+ font-weight: 400;
621
+ line-height: 1.4;
622
+ }
623
+
624
+ @media (max-width: 767px) {
625
+ .vp_graphs h1 {
626
+ font-size: 18px;
627
+ }
628
  }
629
+
630
+
631
+ .vp_graphs ul {
632
  padding: 0 0 5px 0;
633
  float: left;
634
+ width: 100%;
635
  background: rgba(0,0,0,0.1);
636
  }
637
+
638
+ .vp_graphs li {
639
  float: left;
640
  clear: both;
641
  margin: 0;
 
642
  padding: 15px 30px;
643
+ width: 100%;
644
  line-height: 100%;
645
  border-top: 1px solid rgba(0,0,0,0.3);
646
  border-bottom: 1px solid rgba(255,255,255,0.05);
647
  }
648
+
649
+ .vp_graphs .completed .bar span {
 
650
  background: rgb(41,154,11);
 
651
  background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,rgba(41,154,11,1)), color-stop(100%,rgba(41,154,11,1)));
652
  background: -webkit-linear-gradient(top, rgba(41,154,11,1) 0%,rgba(41,154,11,1) 100%);
 
 
653
  filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#299a0b', endColorstr='#299a0b',GradientType=0 );
654
  background: linear-gradient(top, rgba(41,154,11,1) 0%,rgba(41,154,11,1) 100%);
655
  }
656
+
657
+ #vp_progress .completed .percentage,
658
+ #vp_progress .completed .title {
659
+ color: #fff;
660
  }
661
 
662
  #vp_progress .bar {
666
  background: #252525 url(images/noise.png) repeat 0 0;
667
  margin: 0 5px 0 0;
668
  border: 1px solid rgba(255,255,255,0.1);
 
 
669
  border-radius: 20px;
670
+ -webkit-box-shadow: inset 0 1px 1px rgba(0,0,0,0.6);
671
  box-shadow: inset 0 1px 1px rgba(0,0,0,0.6);
672
  }
673
+
674
+ @media (max-width: 767px) {
675
+ #vp_progress .bar {
676
+ width: 76%;
677
+ }
678
+ }
679
+
680
+ @media (max-width: 500px) {
681
+ #vp_progress .bar {
682
+ width: 58%;
683
+ }
684
+ }
685
+
686
+
687
  #vp_progress .bar span {
688
  float: left;
689
  height: 22px;
 
690
  background: #63b6db;
 
691
  background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#63b6db), color-stop(100%,#309dcf));
692
  background: -webkit-linear-gradient(top, #63b6db 0%,#309dcf 100%);
 
 
693
  filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#63b6db', endColorstr='#309dcf',GradientType=0 );
694
  background: linear-gradient(top, #63b6db 0%,#309dcf 100%);
695
+ -webkit-box-shadow: inset 0 1px 0 rgba(255,255,255,0.2);
 
696
  box-shadow: inset 0 1px 0 rgba(255,255,255,0.2);
 
 
 
697
  border-radius: 20px;
698
  }
699
+
700
  #vp_progress .percentage {
701
  float: right;
702
  position: relative;
708
  font-weight: bold;
709
  color: #999;
710
  }
711
+
712
  #vp_progress .title {
713
  float: left;
714
  width: 60px;
718
  color: #CCC;
719
  }
720
 
721
+ .vp_progress-description {
722
  margin: 0 0 0 400px;
723
+ padding: 30px;
724
+ border-radius: 5px;
725
+ background: #fff;
726
+ }
727
+
728
+ @media (max-width: 767px) {
729
+ .vp_progress-description {
730
+ margin: 0;
731
+ }
732
  }
733
+
734
+ .vp_progress-description h3 {
735
+ margin-top: 0;
736
  font-size: 12px;
737
+ color: #aaa;
738
  }
739
+
740
+ .vp_progress-description ul {
741
  margin: 0 0 20px 0;
742
  }
743
+
744
+ .vp_progress-description li {
745
  list-style: square;
746
  color: #777;
747
  margin: 0 0 15px 0;
748
  font-size: 12px;
749
  line-height: 160%;
750
  }
751
+
752
+ .vp_progress-description strong {
753
  color: #555;
754
  }
755
+
756
+ .vp_progress-description p {
757
  font-size: 12px;
758
  color: #999;
759
  font-style: italic;
761
  margin: 0 0 30px 0;
762
  }
763
 
764
+ .vp_progress-description p:last-child {
765
+ margin-bottom: 0;
766
+ }
767
+
768
 
769
+ /* ==========================================================================
770
+ Not registered or activated
771
+ ========================================================================== */
772
+
773
+ .jetpack-available .vp_card-dark:not(.connect-via-jetpack) {
774
+ padding: 60px 30px;
775
+ width: 98%;
776
+ text-align: center;
777
+ }
778
+
779
+ .vp_input-register {
780
+ display: block;
781
+ padding: 5px;
782
+ width: 100%;
783
+ height: 60px;
784
+ border: 1px solid #999;
785
+ border-radius: 3px;
786
+ font-size: 14px;
787
+ font-family: Georgia, Constantia, "Palatino Linotype", "Book Antiqua", serif;;
788
+ -webkit-box-shadow: inset 0 2px 4px rgba(0,0,0,0.2);
789
+ box-shadow: inset 0 2px 4px rgba(0,0,0,0.2);
790
+ resize: vertical;
791
+ }
vaultpress.php CHANGED
@@ -3,7 +3,7 @@
3
  * Plugin Name: VaultPress
4
  * Plugin URI: http://vaultpress.com/?utm_source=plugin-uri&utm_medium=plugin-description&utm_campaign=1.0
5
  * Description: Protect your content, themes, plugins, and settings with <strong>realtime backup</strong> and <strong>automated security scanning</strong> from <a href="http://vaultpress.com/?utm_source=wp-admin&amp;utm_medium=plugin-description&amp;utm_campaign=1.0" rel="nofollow">VaultPress</a>. Activate, enter your registration key, and never worry again. <a href="http://vaultpress.com/help/?utm_source=wp-admin&amp;utm_medium=plugin-description&amp;utm_campaign=1.0" rel="nofollow">Need some help?</a>
6
- * Version: 1.6.1
7
  * Author: Automattic
8
  * Author URI: http://vaultpress.com/?utm_source=author-uri&amp;utm_medium=plugin-description&amp;utm_campaign=1.0
9
  * License: GPL2+
@@ -18,7 +18,7 @@ if ( !defined( 'ABSPATH' ) )
18
  class VaultPress {
19
  var $option_name = 'vaultpress';
20
  var $db_version = 3;
21
- var $plugin_version = '1.6.1';
22
 
23
  function __construct() {
24
  register_activation_hook( __FILE__, array( $this, 'activate' ) );
@@ -141,6 +141,14 @@ class VaultPress {
141
  return false;
142
  }
143
 
 
 
 
 
 
 
 
 
144
  if ( isset( $this->options[$key] ) )
145
  return $this->options[$key];
146
 
@@ -244,9 +252,8 @@ class VaultPress {
244
  $count = number_format( $count, 0 );
245
  $wp_admin_bar->add_node( array(
246
  'id' => 'vp-notice',
247
- 'title' => '<strong><span class="ab-icon"></span>' .
248
- sprintf( _n( '%s Security Threat', '%s Security Threats', $count , 'vaultpress'), $count ) .
249
- ' </strong>',
250
  'parent' => 'top-secondary',
251
  'href' => sprintf( 'https://dashboard.vaultpress.com/%d/security/', $messages['site_id'] ),
252
  'meta' => array(
@@ -374,7 +381,23 @@ class VaultPress {
374
  // reset the connection info so messages don't cross
375
  $this->clear_connection();
376
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
377
  $registration_key = trim( $_POST[ 'registration_key' ] );
 
 
378
  if ( empty( $registration_key ) ) {
379
  $this->update_option( 'connection_error_code', 1 );
380
  $this->update_option(
@@ -426,39 +449,60 @@ class VaultPress {
426
  }
427
 
428
  function ui_register() {
 
 
 
429
  ?>
430
  <div id="vp-wrap" class="wrap">
431
  <div id="vp-head">
432
- <h2>VaultPress<a href="https://dashboard.vaultpress.com/" class="vp-visit-dashboard" target="_blank"><?php _e( 'Visit Dashboard', 'vaultpress' ); ?></a></h2>
433
  </div>
434
 
435
- <div id="vp_registration">
436
- <div class="vp_view-plans">
437
- <h1><?php _e( 'The VaultPress plugin <strong>requires a monthly&nbsp;subscription</strong>.', 'vaultpress' ); ?></h1>
438
- <p><?php _e( 'Get realtime backups, automated security scanning, and support from WordPress&nbsp;experts.', 'vaultpress' ); ?></p>
439
- <p class="vp_plans-btn"><a href="https://vaultpress.com/plugin/?utm_source=plugin-unregistered&amp;utm_medium=view-plans-and-pricing&amp;utm_campaign=1.0-plugin"><strong><?php _e( 'View plans and pricing&nbsp;&raquo;', 'vaultpress' ); ?></strong></a></p>
 
 
440
  </div>
441
 
442
- <div class="vp_register-plugin">
443
- <h3><?php _e( 'Already have a VaultPress&nbsp;account?', 'vaultpress' ); ?></h3>
444
- <p><?php _e( 'Paste your registration key&nbsp;below:', 'vaultpress' ); ?></p>
 
445
  <form method="post" action="">
446
  <fieldset>
447
- <textarea placeholder="<?php echo esc_attr( __( 'Enter your key here...', 'vaultpress' ) ); ?>" name="registration_key"></textarea>
448
- <button><strong><?php _e( 'Register ', 'vaultpress' ); ?></strong></button>
449
  <input type="hidden" name="action" value="register" />
 
450
  <?php wp_nonce_field( 'vaultpress_register' ); ?>
451
  </fieldset>
452
  </form>
453
  </div>
 
 
 
 
 
 
 
 
 
 
 
 
 
454
  </div>
455
- </div>
 
 
456
  <?php
457
  }
458
 
459
  function ui_main() {
460
  ?>
461
- <div id="vp-wrap" class="wrap">
462
  <?php
463
  $response = base64_decode( $this->contact_service( 'plugin_ui' ) );
464
  echo $response;
@@ -469,7 +513,7 @@ class VaultPress {
469
 
470
  function ui_fatal_error() {
471
  ?>
472
- <div id="vp-wrap" class="wrap">
473
  <h2>VaultPress</h2>
474
 
475
  <p><?php printf( __( 'Yikes! We&rsquo;ve run into a serious issue and can&rsquo;t connect to %1$s.', 'vaultpress' ), esc_html( $this->get_option( 'hostname' ) ) ); ?></p>
@@ -495,7 +539,7 @@ class VaultPress {
495
  }
496
  }
497
  ?>
498
- <div id="vp-notice" class="vp-<?php echo $type; ?> updated">
499
  <div class="vp-message">
500
  <h3><?php echo $heading; ?></h3>
501
  <p><?php echo $message; ?></p>
@@ -2157,6 +2201,34 @@ JS;
2157
  // VaultPress likes being first in line
2158
  add_filter( 'pre_update_option_active_plugins', array( $this, 'load_first' ) );
2159
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2160
  }
2161
 
2162
  $vaultpress = VaultPress::init();
3
  * Plugin Name: VaultPress
4
  * Plugin URI: http://vaultpress.com/?utm_source=plugin-uri&amp;utm_medium=plugin-description&amp;utm_campaign=1.0
5
  * Description: Protect your content, themes, plugins, and settings with <strong>realtime backup</strong> and <strong>automated security scanning</strong> from <a href="http://vaultpress.com/?utm_source=wp-admin&amp;utm_medium=plugin-description&amp;utm_campaign=1.0" rel="nofollow">VaultPress</a>. Activate, enter your registration key, and never worry again. <a href="http://vaultpress.com/help/?utm_source=wp-admin&amp;utm_medium=plugin-description&amp;utm_campaign=1.0" rel="nofollow">Need some help?</a>
6
+ * Version: 1.6.2
7
  * Author: Automattic
8
  * Author URI: http://vaultpress.com/?utm_source=author-uri&amp;utm_medium=plugin-description&amp;utm_campaign=1.0
9
  * License: GPL2+
18
  class VaultPress {
19
  var $option_name = 'vaultpress';
20
  var $db_version = 3;
21
+ var $plugin_version = '1.6.2';
22
 
23
  function __construct() {
24
  register_activation_hook( __FILE__, array( $this, 'activate' ) );
141
  return false;
142
  }
143
 
144
+ if ( 'key' == $key && !isset( $this->options[$key] ) ) {
145
+ return '';
146
+ }
147
+
148
+ if ( 'secret' == $key && !isset( $this->options[$key] ) ) {
149
+ return '';
150
+ }
151
+
152
  if ( isset( $this->options[$key] ) )
153
  return $this->options[$key];
154
 
252
  $count = number_format( $count, 0 );
253
  $wp_admin_bar->add_node( array(
254
  'id' => 'vp-notice',
255
+ 'title' => '<span class="ab-icon"></span>' .
256
+ sprintf( _n( '%s Security Threat', '%s Security Threats', $count , 'vaultpress'), $count ),
 
257
  'parent' => 'top-secondary',
258
  'href' => sprintf( 'https://dashboard.vaultpress.com/%d/security/', $messages['site_id'] ),
259
  'meta' => array(
381
  // reset the connection info so messages don't cross
382
  $this->clear_connection();
383
 
384
+ // if registering via Jetpack, get a key...
385
+ if ( isset( $_POST['key_source'] ) && 'jetpack' === $_POST['key_source'] ) {
386
+ $registration_key = $this->register_via_jetpack();
387
+ if ( is_wp_error( $registration_key ) ) {
388
+ $this->update_option( 'connection_error_code', -2 );
389
+ $this->update_option(
390
+ 'connection_error_message',
391
+ sprintf( __('<strong>Failed to register VaultPress via Jetpack</strong>: %s. If you&rsquo;re still having issues please <a href="%1$s">contact the VaultPress&nbsp;Safekeepers</a>.', 'vaultpress' ),
392
+ esc_html( $registration_key->get_error_message() ), 'http://vaultpress.com/contact/' )
393
+ );
394
+ wp_redirect( admin_url( 'admin.php?page=vaultpress&error=true' ) );
395
+ exit();
396
+ }
397
+ } else {
398
  $registration_key = trim( $_POST[ 'registration_key' ] );
399
+ }
400
+
401
  if ( empty( $registration_key ) ) {
402
  $this->update_option( 'connection_error_code', 1 );
403
  $this->update_option(
449
  }
450
 
451
  function ui_register() {
452
+ $jetpack_email = $this->get_jetpack_email();
453
+ $jetpack_available = ! empty( $jetpack_email ) && ! is_wp_error( $jetpack_email );
454
+
455
  ?>
456
  <div id="vp-wrap" class="wrap">
457
  <div id="vp-head">
458
+ <h2>VaultPress <a href="https://dashboard.vaultpress.com/" class="button-secondary" target="_blank"><?php _e( 'Visit Dashboard', 'vaultpress' ); ?></a></h2>
459
  </div>
460
 
461
+ <div id="vp_registration" <?php if ( $jetpack_available ) { echo 'class="jetpack-available"'; } ?>>
462
+
463
+ <div class="grid">
464
+ <div class="vp_card-dark half">
465
+ <h2><?php _e( 'The VaultPress plugin <strong>requires a subscription</strong>.', 'vaultpress' ); ?></h2>
466
+ <p class="vp_card-description"><?php _e( 'Get realtime backups, automated security scanning, and support from WordPress&nbsp;experts.', 'vaultpress' ); ?></p>
467
+ <a class="vp_button-mega" href="https://vaultpress.com/plugin/?utm_source=plugin-unregistered&amp;utm_medium=view-plans-and-pricing&amp;utm_campaign=1.0-plugin"><?php _e( 'View plans and pricing&nbsp;&raquo;', 'vaultpress' ); ?></a>
468
  </div>
469
 
470
+ <?php if ( $jetpack_available ): ?>
471
+ <div class="vp_card half connect-via-jetpack">
472
+ <h2><?php _e( 'Instantly connect through Jetpack', 'vaultpress' ); ?></h2>
473
+ <p class="vp_card-description"><?php printf( __( 'Start a <strong>free</strong> five-day trial of VaultPress Lite. Registering will create a VaultPress account for %s.', 'vaultpress' ), $jetpack_email); ?></p>
474
  <form method="post" action="">
475
  <fieldset>
476
+ <button class="vp_button-mega"><?php _e( 'Start free trial', 'vaultpress' ); ?></button>
 
477
  <input type="hidden" name="action" value="register" />
478
+ <input type="hidden" name="key_source" value="jetpack" />
479
  <?php wp_nonce_field( 'vaultpress_register' ); ?>
480
  </fieldset>
481
  </form>
482
  </div>
483
+ <?php endif ?>
484
+
485
+ <div class="vp_card half">
486
+ <h2><?php _e( 'Already have a VaultPress&nbsp;account?', 'vaultpress' ); ?></h2>
487
+ <p class="vp_card-description"><?php _e( 'Paste your registration key&nbsp;below:', 'vaultpress' ); ?></p>
488
+ <form method="post" action="">
489
+ <fieldset>
490
+ <textarea class="vp_input-register" placeholder="<?php echo esc_attr( __( 'Enter your key here...', 'vaultpress' ) ); ?>" name="registration_key"></textarea>
491
+ <button class="vp_button-secondary"><?php _e( 'Register ', 'vaultpress' ); ?></button>
492
+ <input type="hidden" name="action" value="register" />
493
+ <?php wp_nonce_field( 'vaultpress_register' ); ?>
494
+ </fieldset>
495
+ </form>
496
  </div>
497
+ </div><!-- .card-grid -->
498
+ </div><!-- #vp_registration -->
499
+ </div><!-- #vp-head -->
500
  <?php
501
  }
502
 
503
  function ui_main() {
504
  ?>
505
+ <div id="vp-wrap" class="vp-wrap">
506
  <?php
507
  $response = base64_decode( $this->contact_service( 'plugin_ui' ) );
508
  echo $response;
513
 
514
  function ui_fatal_error() {
515
  ?>
516
+ <div id="vp-wrap" class="vp-wrap">
517
  <h2>VaultPress</h2>
518
 
519
  <p><?php printf( __( 'Yikes! We&rsquo;ve run into a serious issue and can&rsquo;t connect to %1$s.', 'vaultpress' ), esc_html( $this->get_option( 'hostname' ) ) ); ?></p>
539
  }
540
  }
541
  ?>
542
+ <div id="vp-notice" class="vp-notice vp-<?php echo $type; ?> wrap clearfix">
543
  <div class="vp-message">
544
  <h3><?php echo $heading; ?></h3>
545
  <p><?php echo $message; ?></p>
2201
  // VaultPress likes being first in line
2202
  add_filter( 'pre_update_option_active_plugins', array( $this, 'load_first' ) );
2203
  }
2204
+
2205
+ function get_jetpack_email() {
2206
+ if ( !class_exists('Jetpack') )
2207
+ return false;
2208
+
2209
+ Jetpack::load_xml_rpc_client();
2210
+ $xml = new Jetpack_IXR_Client( array( 'user_id' => get_current_user_id() ) );
2211
+ $xml->query( 'wpcom.getUserEmail' );
2212
+ if ( ! $xml->isError() ) {
2213
+ return $xml->getResponse();
2214
+ }
2215
+
2216
+ return new WP_Error( $xml->getErrorCode(), $xml->getErrorMessage() );
2217
+ }
2218
+
2219
+ function register_via_jetpack() {
2220
+ if ( !class_exists('Jetpack') )
2221
+ return false;
2222
+
2223
+ Jetpack::load_xml_rpc_client();
2224
+ $xml = new Jetpack_IXR_Client( array( 'user_id' => get_current_user_id() ) );
2225
+ $xml->query( 'vaultpress.registerSite' );
2226
+ if ( ! $xml->isError() ) {
2227
+ return $xml->getResponse();
2228
+ }
2229
+
2230
+ return new WP_Error( $xml->getErrorCode(), $xml->getErrorMessage() );
2231
+ }
2232
  }
2233
 
2234
  $vaultpress = VaultPress::init();