Speed Booster Pack - Version 3.7.2

Version Description

  • minor tweaks & version bump
  • removed ShortPixel aff integration
Download this release

Release Info

Developer machothemes
Plugin Icon 128x128 Speed Booster Pack
Version 3.7.2
Comparing to
See all releases

Code changes from version 3.6.1 to 3.7.2

Files changed (44) hide show
  1. css/dynamic-css.php +0 -111
  2. css/jquery-ui.min.css +0 -7
  3. css/sbp_style.min.css +0 -1
  4. css/style.css +868 -0
  5. css/style.dev.css +0 -622
  6. css/vendors/jquery-ui/images/ui-icons_444444_256x240.png +0 -0
  7. css/vendors/jquery-ui/images/ui-icons_555555_256x240.png +0 -0
  8. css/vendors/jquery-ui/images/ui-icons_777620_256x240.png +0 -0
  9. css/vendors/jquery-ui/images/ui-icons_777777_256x240.png +0 -0
  10. css/vendors/jquery-ui/images/ui-icons_cc0000_256x240.png +0 -0
  11. css/vendors/jquery-ui/images/ui-icons_ffffff_256x240.png +0 -0
  12. css/vendors/jquery-ui/jquery-ui.min.css +7 -0
  13. feedback/class-epsilon-feedback.php +271 -0
  14. feedback/class-epsilon-plugin-request.php +225 -0
  15. inc/core.php +447 -374
  16. inc/crazy-lazy.class.php +0 -172
  17. inc/crazy-lazy.php +0 -37
  18. inc/css-optimizer.php +78 -54
  19. inc/images/icon-128x128.jpg +0 -0
  20. inc/images/icon-16x16.png +0 -0
  21. inc/js/admin-scripts.js +100 -0
  22. inc/js/jquery.unveil.js +0 -72
  23. inc/js/jquery.unveil.min.js +0 -12
  24. inc/js/lazyload.js +0 -91
  25. inc/js/lazyload.min.js +0 -8
  26. inc/js/plugin-install.js +55 -0
  27. inc/js/post-tabs-edit.js +0 -9
  28. inc/js/sbp-hide.js +0 -16
  29. inc/js/sbp-slide.js +0 -13
  30. inc/sbp-minifier.php +2 -1
  31. inc/settings.php +229 -263
  32. inc/template/notice.php +1 -1
  33. inc/template/options.php +634 -444
  34. inc/use-google-libraries.php +37 -25
  35. lang/es_ES.mo +0 -0
  36. lang/es_ES.po +0 -372
  37. lang/ro_RO.mo +0 -0
  38. lang/ro_RO.po +0 -374
  39. lang/sb-pack.mo +0 -0
  40. lang/sb-pack.po +0 -339
  41. lang/sb-pack.pot +0 -339
  42. readme.txt +46 -9
  43. speed-booster-pack.php +179 -189
  44. widgets/dashboard-widget.php +70 -0
css/dynamic-css.php DELETED
@@ -1,111 +0,0 @@
1
- <style type="text/css">
2
-
3
- /*progress-bar-time*/
4
-
5
- @-webkit-keyframes progress-bar-time {
6
- from { }
7
- to { width: 5<?php echo $page_time; ?>% }
8
- }
9
-
10
- @-moz-keyframes progress-bar-time {
11
- from { }
12
- to { width: 5<?php echo $page_time; ?>% }
13
- }
14
-
15
- @-ms-keyframes progress-bar-time {
16
- from { }
17
- to { width: 5<?php echo $page_time; ?>% }
18
- }
19
-
20
- @-o-keyframes progress-bar-time {
21
- from { }
22
- to { width: 5<?php echo $page_time; ?>% }
23
- }
24
-
25
- @keyframes progress-bar-time {
26
- from { }
27
- to { width: 5<?php echo $page_time; ?>% }
28
- }
29
-
30
- /*progress-bar-queries*/
31
-
32
- @-webkit-keyframes progress-bar-queries {
33
- from { }
34
- to { width: <?php echo $page_queries; ?>% }
35
- }
36
-
37
- @-moz-keyframes progress-bar-queries {
38
- from { }
39
- to { width: <?php echo $page_queries; ?>% }
40
- }
41
-
42
- @-ms-keyframes progress-bar-queries {
43
- from { }
44
- to { width: <?php echo $page_queries; ?>% }
45
- }
46
-
47
- @-o-keyframes progress-bar-queries {
48
- from { }
49
- to { width: <?php echo $page_queries; ?>% }
50
- }
51
-
52
- @keyframes progress-bar-queries {
53
- from { }
54
- to { width: <?php echo $page_queries; ?>% }
55
- }
56
-
57
- <?php
58
-
59
- if ( $page_time >=1.00 and $page_time <=2.00 ) { ?>
60
-
61
- .wrap .sbp-progress.time > span {
62
- background-color: #f1a165;
63
- background-image: -webkit-gradient(linear,left top,left bottom,color-stop(0, #f1a165),color-stop(1, #f36d0a));
64
- background-image: -webkit-linear-gradient(top, #f1a165, #f36d0a);
65
- background-image: -moz-linear-gradient(top, #f1a165, #f36d0a);
66
- background-image: -ms-linear-gradient(top, #f1a165, #f36d0a);
67
- background-image: -o-linear-gradient(top, #f1a165, #f36d0a);
68
- }
69
-
70
- <?php }
71
-
72
- if ( $page_time >=2.00 ) { ?>
73
- .wrap .sbp-progress.time > span {
74
- background-color: #FB8A88;
75
- background-image: -webkit-gradient(linear,left top,left bottom,color-stop(0, #FB8A88),color-stop(1, #FF4136));
76
- background-image: -webkit-linear-gradient(top, #FB8A88, #FF4136);
77
- background-image: -moz-linear-gradient(top, #FB8A88, #FF4136);
78
- background-image: -ms-linear-gradient(top, #FB8A88, #FF4136);
79
- background-image: -o-linear-gradient(top, #f1a165, #f36d0a);
80
- }
81
-
82
- <?php }
83
-
84
- if ( $page_queries >=100 and $page_queries <=200 ) { ?>
85
-
86
- .wrap .sbp-progress.queries > span {
87
- background-color: #f1a165;
88
- background-image: -webkit-gradient(linear,left top,left bottom,color-stop(0, #f1a165),color-stop(1, #f36d0a));
89
- background-image: -webkit-linear-gradient(top, #f1a165, #f36d0a);
90
- background-image: -moz-linear-gradient(top, #f1a165, #f36d0a);
91
- background-image: -ms-linear-gradient(top, #f1a165, #f36d0a);
92
- background-image: -o-linear-gradient(top, #f1a165, #f36d0a);
93
- }
94
-
95
- <?php }
96
-
97
- if ( $page_queries >=200 ) { ?>
98
- .wrap .sbp-progress.queries > span {
99
- background-color: #FB8A88;
100
- background-image: -webkit-gradient(linear,left top,left bottom,color-stop(0, #FB8A88),color-stop(1, #FF4136));
101
- background-image: -webkit-linear-gradient(top, #FB8A88, #FF4136);
102
- background-image: -moz-linear-gradient(top, #FB8A88, #FF4136);
103
- background-image: -ms-linear-gradient(top, #FB8A88, #FF4136);
104
- background-image: -o-linear-gradient(top, #f1a165, #f36d0a);
105
- }
106
-
107
- <?php }
108
-
109
- ?>
110
-
111
- </style>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
css/jquery-ui.min.css DELETED
@@ -1,7 +0,0 @@
1
- /*! jQuery UI - v1.11.0 - 2014-06-26
2
- * http://jqueryui.com
3
- * Includes: core.css, accordion.css, autocomplete.css, button.css, datepicker.css, dialog.css, draggable.css, menu.css, progressbar.css, resizable.css, selectable.css, selectmenu.css, slider.css, sortable.css, spinner.css, tabs.css, tooltip.css, theme.css
4
- * To view and modify this theme, visit http://jqueryui.com/themeroller/?ffDefault=Trebuchet%20MS%2CTahoma%2CVerdana%2CArial%2Csans-serif&fwDefault=bold&fsDefault=1.1em&cornerRadius=4px&bgColorHeader=f6a828&bgTextureHeader=gloss_wave&bgImgOpacityHeader=35&borderColorHeader=e78f08&fcHeader=ffffff&iconColorHeader=ffffff&bgColorContent=eeeeee&bgTextureContent=highlight_soft&bgImgOpacityContent=100&borderColorContent=dddddd&fcContent=333333&iconColorContent=222222&bgColorDefault=f6f6f6&bgTextureDefault=glass&bgImgOpacityDefault=100&borderColorDefault=cccccc&fcDefault=1c94c4&iconColorDefault=ef8c08&bgColorHover=fdf5ce&bgTextureHover=glass&bgImgOpacityHover=100&borderColorHover=fbcb09&fcHover=c77405&iconColorHover=ef8c08&bgColorActive=ffffff&bgTextureActive=glass&bgImgOpacityActive=65&borderColorActive=fbd850&fcActive=eb8f00&iconColorActive=ef8c08&bgColorHighlight=ffe45c&bgTextureHighlight=highlight_soft&bgImgOpacityHighlight=75&borderColorHighlight=fed22f&fcHighlight=363636&iconColorHighlight=228ef1&bgColorError=b81900&bgTextureError=diagonals_thick&bgImgOpacityError=18&borderColorError=cd0a0a&fcError=ffffff&iconColorError=ffd27a&bgColorOverlay=666666&bgTextureOverlay=diagonals_thick&bgImgOpacityOverlay=20&opacityOverlay=50&bgColorShadow=000000&bgTextureShadow=flat&bgImgOpacityShadow=10&opacityShadow=20&thicknessShadow=5px&offsetTopShadow=-5px&offsetLeftShadow=-5px&cornerRadiusShadow=5px
5
- * Copyright 2014 jQuery Foundation and other contributors; Licensed MIT */
6
-
7
- .ui-helper-hidden{display:none}.ui-helper-hidden-accessible{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.ui-helper-reset{margin:0;padding:0;border:0;outline:0;line-height:1.3;text-decoration:none;font-size:100%;list-style:none}.ui-helper-clearfix:before,.ui-helper-clearfix:after{content:"";display:table;border-collapse:collapse}.ui-helper-clearfix:after{clear:both}.ui-helper-clearfix{min-height:0}.ui-helper-zfix{width:100%;height:100%;top:0;left:0;position:absolute;opacity:0;filter:Alpha(Opacity=0)}.ui-front{z-index:100}.ui-state-disabled{cursor:default!important}.ui-icon{display:block;text-indent:-99999px;overflow:hidden;background-repeat:no-repeat}.ui-widget-overlay{position:fixed;top:0;left:0;width:100%;height:100%}.ui-accordion .ui-accordion-header{display:block;cursor:pointer;position:relative;margin:2px 0 0 0;padding:.5em .5em .5em .7em;min-height:0;font-size:100%}.ui-accordion .ui-accordion-icons{padding-left:2.2em}.ui-accordion .ui-accordion-icons .ui-accordion-icons{padding-left:2.2em}.ui-accordion .ui-accordion-header .ui-accordion-header-icon{position:absolute;left:.5em;top:50%;margin-top:-8px}.ui-accordion .ui-accordion-content{padding:1em 2.2em;border-top:0;overflow:auto}.ui-autocomplete{position:absolute;top:0;left:0;cursor:default}.ui-button{display:inline-block;position:relative;padding:0;line-height:normal;margin-right:.1em;cursor:pointer;vertical-align:middle;text-align:center;overflow:visible}.ui-button,.ui-button:link,.ui-button:visited,.ui-button:hover,.ui-button:active{text-decoration:none}.ui-button-icon-only{width:2.2em}button.ui-button-icon-only{width:2.4em}.ui-button-icons-only{width:3.4em}button.ui-button-icons-only{width:3.7em}.ui-button .ui-button-text{display:block;line-height:normal}.ui-button-text-only .ui-button-text{padding:.4em 1em}.ui-button-icon-only .ui-button-text,.ui-button-icons-only .ui-button-text{padding:.4em;text-indent:-9999999px}.ui-button-text-icon-primary .ui-button-text,.ui-button-text-icons .ui-button-text{padding:.4em 1em .4em 2.1em}.ui-button-text-icon-secondary .ui-button-text,.ui-button-text-icons .ui-button-text{padding:.4em 2.1em .4em 1em}.ui-button-text-icons .ui-button-text{padding-left:2.1em;padding-right:2.1em}input.ui-button{padding:.4em 1em}.ui-button-icon-only .ui-icon,.ui-button-text-icon-primary .ui-icon,.ui-button-text-icon-secondary .ui-icon,.ui-button-text-icons .ui-icon,.ui-button-icons-only .ui-icon{position:absolute;top:50%;margin-top:-8px}.ui-button-icon-only .ui-icon{left:50%;margin-left:-8px}.ui-button-text-icon-primary .ui-button-icon-primary,.ui-button-text-icons .ui-button-icon-primary,.ui-button-icons-only .ui-button-icon-primary{left:.5em}.ui-button-text-icon-secondary .ui-button-icon-secondary,.ui-button-text-icons .ui-button-icon-secondary,.ui-button-icons-only .ui-button-icon-secondary{right:.5em}.ui-buttonset{margin-right:7px}.ui-buttonset .ui-button{margin-left:0;margin-right:-.3em}input.ui-button::-moz-focus-inner,button.ui-button::-moz-focus-inner{border:0;padding:0}.ui-datepicker{width:17em;padding:.2em .2em 0;display:none}.ui-datepicker .ui-datepicker-header{position:relative;padding:.2em 0}.ui-datepicker .ui-datepicker-prev,.ui-datepicker .ui-datepicker-next{position:absolute;top:2px;width:1.8em;height:1.8em}.ui-datepicker .ui-datepicker-prev-hover,.ui-datepicker .ui-datepicker-next-hover{top:1px}.ui-datepicker .ui-datepicker-prev{left:2px}.ui-datepicker .ui-datepicker-next{right:2px}.ui-datepicker .ui-datepicker-prev-hover{left:1px}.ui-datepicker .ui-datepicker-next-hover{right:1px}.ui-datepicker .ui-datepicker-prev span,.ui-datepicker .ui-datepicker-next span{display:block;position:absolute;left:50%;margin-left:-8px;top:50%;margin-top:-8px}.ui-datepicker .ui-datepicker-title{margin:0 2.3em;line-height:1.8em;text-align:center}.ui-datepicker .ui-datepicker-title select{font-size:1em;margin:1px 0}.ui-datepicker select.ui-datepicker-month,.ui-datepicker select.ui-datepicker-year{width:49%}.ui-datepicker table{width:100%;font-size:.9em;border-collapse:collapse;margin:0 0 .4em}.ui-datepicker th{padding:.7em .3em;text-align:center;font-weight:bold;border:0}.ui-datepicker td{border:0;padding:1px}.ui-datepicker td span,.ui-datepicker td a{display:block;padding:.2em;text-align:right;text-decoration:none}.ui-datepicker .ui-datepicker-buttonpane{background-image:none;margin:.7em 0 0 0;padding:0 .2em;border-left:0;border-right:0;border-bottom:0}.ui-datepicker .ui-datepicker-buttonpane button{float:right;margin:.5em .2em .4em;cursor:pointer;padding:.2em .6em .3em .6em;width:auto;overflow:visible}.ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current{float:left}.ui-datepicker.ui-datepicker-multi{width:auto}.ui-datepicker-multi .ui-datepicker-group{float:left}.ui-datepicker-multi .ui-datepicker-group table{width:95%;margin:0 auto .4em}.ui-datepicker-multi-2 .ui-datepicker-group{width:50%}.ui-datepicker-multi-3 .ui-datepicker-group{width:33.3%}.ui-datepicker-multi-4 .ui-datepicker-group{width:25%}.ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header,.ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header{border-left-width:0}.ui-datepicker-multi .ui-datepicker-buttonpane{clear:left}.ui-datepicker-row-break{clear:both;width:100%;font-size:0}.ui-datepicker-rtl{direction:rtl}.ui-datepicker-rtl .ui-datepicker-prev{right:2px;left:auto}.ui-datepicker-rtl .ui-datepicker-next{left:2px;right:auto}.ui-datepicker-rtl .ui-datepicker-prev:hover{right:1px;left:auto}.ui-datepicker-rtl .ui-datepicker-next:hover{left:1px;right:auto}.ui-datepicker-rtl .ui-datepicker-buttonpane{clear:right}.ui-datepicker-rtl .ui-datepicker-buttonpane button{float:left}.ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current,.ui-datepicker-rtl .ui-datepicker-group{float:right}.ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header,.ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header{border-right-width:0;border-left-width:1px}.ui-dialog{overflow:hidden;position:absolute;top:0;left:0;padding:.2em;outline:0}.ui-dialog .ui-dialog-titlebar{padding:.4em 1em;position:relative}.ui-dialog .ui-dialog-title{float:left;margin:.1em 0;white-space:nowrap;width:90%;overflow:hidden;text-overflow:ellipsis}.ui-dialog .ui-dialog-titlebar-close{position:absolute;right:.3em;top:50%;width:20px;margin:-10px 0 0 0;padding:1px;height:20px}.ui-dialog .ui-dialog-content{position:relative;border:0;padding:.5em 1em;background:none;overflow:auto}.ui-dialog .ui-dialog-buttonpane{text-align:left;border-width:1px 0 0 0;background-image:none;margin-top:.5em;padding:.3em 1em .5em .4em}.ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset{float:right}.ui-dialog .ui-dialog-buttonpane button{margin:.5em .4em .5em 0;cursor:pointer}.ui-dialog .ui-resizable-se{width:12px;height:12px;right:-5px;bottom:-5px;background-position:16px 16px}.ui-draggable .ui-dialog-titlebar{cursor:move}.ui-draggable-handle{-ms-touch-action:none;touch-action:none}.ui-menu{list-style:none;padding:0;margin:0;display:block;outline:none}.ui-menu .ui-menu{position:absolute}.ui-menu .ui-menu-item{position:relative;margin:0;padding:3px 1em 3px .4em;cursor:pointer;min-height:0;list-style-image:url("data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7")}.ui-menu .ui-menu-divider{margin:5px 0;height:0;font-size:0;line-height:0;border-width:1px 0 0 0}.ui-menu .ui-state-focus,.ui-menu .ui-state-active{margin:-1px}.ui-menu-icons{position:relative}.ui-menu-icons .ui-menu-item{padding-left:2em}.ui-menu .ui-icon{position:absolute;top:0;bottom:0;left:.2em;margin:auto 0}.ui-menu .ui-menu-icon{left:auto;right:0}.ui-progressbar{height:2em;text-align:left;overflow:hidden}.ui-progressbar .ui-progressbar-value{margin:-1px;height:100%}.ui-progressbar .ui-progressbar-overlay{background:url("images/animated-overlay.gif");height:100%;filter:alpha(opacity=25);opacity:0.25}.ui-progressbar-indeterminate .ui-progressbar-value{background-image:none}.ui-resizable{position:relative}.ui-resizable-handle{position:absolute;font-size:0.1px;display:block;-ms-touch-action:none;touch-action:none}.ui-resizable-disabled .ui-resizable-handle,.ui-resizable-autohide .ui-resizable-handle{display:none}.ui-resizable-n{cursor:n-resize;height:7px;width:100%;top:-5px;left:0}.ui-resizable-s{cursor:s-resize;height:7px;width:100%;bottom:-5px;left:0}.ui-resizable-e{cursor:e-resize;width:7px;right:-5px;top:0;height:100%}.ui-resizable-w{cursor:w-resize;width:7px;left:-5px;top:0;height:100%}.ui-resizable-se{cursor:se-resize;width:12px;height:12px;right:1px;bottom:1px}.ui-resizable-sw{cursor:sw-resize;width:9px;height:9px;left:-5px;bottom:-5px}.ui-resizable-nw{cursor:nw-resize;width:9px;height:9px;left:-5px;top:-5px}.ui-resizable-ne{cursor:ne-resize;width:9px;height:9px;right:-5px;top:-5px}.ui-selectable{-ms-touch-action:none;touch-action:none}.ui-selectable-helper{position:absolute;z-index:100;border:1px dotted black}.ui-selectmenu-menu{padding:0;margin:0;position:absolute;top:0;left:0;display:none}.ui-selectmenu-menu .ui-menu{overflow:auto;overflow-x:hidden;padding-bottom:1px}.ui-selectmenu-menu .ui-menu .ui-selectmenu-optgroup{font-size:1em;font-weight:bold;line-height:1.5;padding:2px 0.4em;margin:0.5em 0 0 0;height:auto;border:0}.ui-selectmenu-open{display:block}.ui-selectmenu-button{display:inline-block;overflow:hidden;position:relative;text-decoration:none;cursor:pointer}.ui-selectmenu-button span.ui-icon{right:0.5em;left:auto;margin-top:-8px;position:absolute;top:50%}.ui-selectmenu-button span.ui-selectmenu-text{text-align:left;padding:0.4em 2.1em 0.4em 1em;display:block;line-height:1.4;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ui-slider{position:relative;text-align:left}.ui-slider .ui-slider-handle{position:absolute;z-index:2;width:1.2em;height:1.2em;cursor:default;-ms-touch-action:none;touch-action:none}.ui-slider .ui-slider-range{position:absolute;z-index:1;font-size:.7em;display:block;border:0;background-position:0 0}.ui-slider.ui-state-disabled .ui-slider-handle,.ui-slider.ui-state-disabled .ui-slider-range{filter:inherit}.ui-slider-horizontal{height:.8em}.ui-slider-horizontal .ui-slider-handle{top:-.3em;margin-left:-.6em}.ui-slider-horizontal .ui-slider-range{top:0;height:100%}.ui-slider-horizontal .ui-slider-range-min{left:0}.ui-slider-horizontal .ui-slider-range-max{right:0}.ui-slider-vertical{width:.8em;height:100px}.ui-slider-vertical .ui-slider-handle{left:-.3em;margin-left:0;margin-bottom:-.6em}.ui-slider-vertical .ui-slider-range{left:0;width:100%}.ui-slider-vertical .ui-slider-range-min{bottom:0}.ui-slider-vertical .ui-slider-range-max{top:0}.ui-sortable-handle{-ms-touch-action:none;touch-action:none}.ui-spinner{position:relative;display:inline-block;overflow:hidden;padding:0;vertical-align:middle}.ui-spinner-input{border:none;background:none;color:inherit;padding:0;margin:.2em 0;vertical-align:middle;margin-left:.4em;margin-right:22px}.ui-spinner-button{width:16px;height:50%;font-size:.5em;padding:0;margin:0;text-align:center;position:absolute;cursor:default;display:block;overflow:hidden;right:0}.ui-spinner a.ui-spinner-button{border-top:none;border-bottom:none;border-right:none}.ui-spinner .ui-icon{position:absolute;margin-top:-8px;top:50%;left:0}.ui-spinner-up{top:0}.ui-spinner-down{bottom:0}.ui-spinner .ui-icon-triangle-1-s{background-position:-65px -16px}.ui-tabs{position:relative;padding:.2em}.ui-tabs .ui-tabs-nav{margin:0;padding:.2em .2em 0}.ui-tabs .ui-tabs-nav li{list-style:none;float:left;position:relative;top:0;margin:1px .2em 0 0;border-bottom-width:0;padding:0;white-space:nowrap}.ui-tabs .ui-tabs-nav .ui-tabs-anchor{float:left;padding:.5em 1em;text-decoration:none}.ui-tabs .ui-tabs-nav li.ui-tabs-active{margin-bottom:-1px;padding-bottom:1px}.ui-tabs .ui-tabs-nav li.ui-tabs-active .ui-tabs-anchor,.ui-tabs .ui-tabs-nav li.ui-state-disabled .ui-tabs-anchor,.ui-tabs .ui-tabs-nav li.ui-tabs-loading .ui-tabs-anchor{cursor:text}.ui-tabs-collapsible .ui-tabs-nav li.ui-tabs-active .ui-tabs-anchor{cursor:pointer}.ui-tabs .ui-tabs-panel{display:block;border-width:0;padding:1em 1.4em;background:none}.ui-tooltip{padding:8px;position:absolute;z-index:9999;max-width:300px;-webkit-box-shadow:0 0 5px #aaa;box-shadow:0 0 5px #aaa}body .ui-tooltip{border-width:2px}.ui-widget{font-family:Trebuchet MS,Tahoma,Verdana,Arial,sans-serif;font-size:1.1em}.ui-widget .ui-widget{font-size:1em}.ui-widget input,.ui-widget select,.ui-widget textarea,.ui-widget button{font-family:Trebuchet MS,Tahoma,Verdana,Arial,sans-serif;font-size:1em}.ui-widget-content{border:1px solid #ddd;background:#eee url("images/ui-bg_highlight-soft_100_eeeeee_1x100.png") 50% top repeat-x;color:#333}.ui-widget-content a{color:#333}.ui-widget-header{border:1px solid #e78f08;background:#f6a828 url("images/ui-bg_gloss-wave_35_f6a828_500x100.png") 50% 50% repeat-x;color:#fff;font-weight:bold}.ui-widget-header a{color:#fff}.ui-state-default,.ui-widget-content .ui-state-default,.ui-widget-header .ui-state-default{border:1px solid #ccc;background:#f6f6f6 url("images/ui-bg_glass_100_f6f6f6_1x400.png") 50% 50% repeat-x;font-weight:bold;color:#1c94c4}.ui-state-default a,.ui-state-default a:link,.ui-state-default a:visited{color:#1c94c4;text-decoration:none}.ui-state-hover,.ui-widget-content .ui-state-hover,.ui-widget-header .ui-state-hover,.ui-state-focus,.ui-widget-content .ui-state-focus,.ui-widget-header .ui-state-focus{border:1px solid #fbcb09;background:#fdf5ce url("images/ui-bg_glass_100_fdf5ce_1x400.png") 50% 50% repeat-x;font-weight:bold;color:#c77405}.ui-state-hover a,.ui-state-hover a:hover,.ui-state-hover a:link,.ui-state-hover a:visited,.ui-state-focus a,.ui-state-focus a:hover,.ui-state-focus a:link,.ui-state-focus a:visited{color:#c77405;text-decoration:none}.ui-state-active,.ui-widget-content .ui-state-active,.ui-widget-header .ui-state-active{border:1px solid #fbd850;background:#fff url("images/ui-bg_glass_65_ffffff_1x400.png") 50% 50% repeat-x;font-weight:bold;color:#eb8f00}.ui-state-active a,.ui-state-active a:link,.ui-state-active a:visited{color:#eb8f00;text-decoration:none}.ui-state-highlight,.ui-widget-content .ui-state-highlight,.ui-widget-header .ui-state-highlight{border:1px solid #fed22f;background:#ffe45c url("images/ui-bg_highlight-soft_75_ffe45c_1x100.png") 50% top repeat-x;color:#363636}.ui-state-highlight a,.ui-widget-content .ui-state-highlight a,.ui-widget-header .ui-state-highlight a{color:#363636}.ui-state-error,.ui-widget-content .ui-state-error,.ui-widget-header .ui-state-error{border:1px solid #cd0a0a;background:#b81900 url("images/ui-bg_diagonals-thick_18_b81900_40x40.png") 50% 50% repeat;color:#fff}.ui-state-error a,.ui-widget-content .ui-state-error a,.ui-widget-header .ui-state-error a{color:#fff}.ui-state-error-text,.ui-widget-content .ui-state-error-text,.ui-widget-header .ui-state-error-text{color:#fff}.ui-priority-primary,.ui-widget-content .ui-priority-primary,.ui-widget-header .ui-priority-primary{font-weight:bold}.ui-priority-secondary,.ui-widget-content .ui-priority-secondary,.ui-widget-header .ui-priority-secondary{opacity:.7;filter:Alpha(Opacity=70);font-weight:normal}.ui-state-disabled,.ui-widget-content .ui-state-disabled,.ui-widget-header .ui-state-disabled{opacity:.35;filter:Alpha(Opacity=35);background-image:none}.ui-state-disabled .ui-icon{filter:Alpha(Opacity=35)}.ui-icon{width:16px;height:16px}.ui-icon,.ui-widget-content .ui-icon{background-image:url("images/ui-icons_222222_256x240.png")}.ui-widget-header .ui-icon{background-image:url("images/ui-icons_ffffff_256x240.png")}.ui-state-default .ui-icon{background-image:url("images/ui-icons_ef8c08_256x240.png")}.ui-state-hover .ui-icon,.ui-state-focus .ui-icon{background-image:url("images/ui-icons_ef8c08_256x240.png")}.ui-state-active .ui-icon{background-image:url("images/ui-icons_ef8c08_256x240.png")}.ui-state-highlight .ui-icon{background-image:url("images/ui-icons_228ef1_256x240.png")}.ui-state-error .ui-icon,.ui-state-error-text .ui-icon{background-image:url("images/ui-icons_ffd27a_256x240.png")}.ui-icon-blank{background-position:16px 16px}.ui-icon-carat-1-n{background-position:0 0}.ui-icon-carat-1-ne{background-position:-16px 0}.ui-icon-carat-1-e{background-position:-32px 0}.ui-icon-carat-1-se{background-position:-48px 0}.ui-icon-carat-1-s{background-position:-64px 0}.ui-icon-carat-1-sw{background-position:-80px 0}.ui-icon-carat-1-w{background-position:-96px 0}.ui-icon-carat-1-nw{background-position:-112px 0}.ui-icon-carat-2-n-s{background-position:-128px 0}.ui-icon-carat-2-e-w{background-position:-144px 0}.ui-icon-triangle-1-n{background-position:0 -16px}.ui-icon-triangle-1-ne{background-position:-16px -16px}.ui-icon-triangle-1-e{background-position:-32px -16px}.ui-icon-triangle-1-se{background-position:-48px -16px}.ui-icon-triangle-1-s{background-position:-64px -16px}.ui-icon-triangle-1-sw{background-position:-80px -16px}.ui-icon-triangle-1-w{background-position:-96px -16px}.ui-icon-triangle-1-nw{background-position:-112px -16px}.ui-icon-triangle-2-n-s{background-position:-128px -16px}.ui-icon-triangle-2-e-w{background-position:-144px -16px}.ui-icon-arrow-1-n{background-position:0 -32px}.ui-icon-arrow-1-ne{background-position:-16px -32px}.ui-icon-arrow-1-e{background-position:-32px -32px}.ui-icon-arrow-1-se{background-position:-48px -32px}.ui-icon-arrow-1-s{background-position:-64px -32px}.ui-icon-arrow-1-sw{background-position:-80px -32px}.ui-icon-arrow-1-w{background-position:-96px -32px}.ui-icon-arrow-1-nw{background-position:-112px -32px}.ui-icon-arrow-2-n-s{background-position:-128px -32px}.ui-icon-arrow-2-ne-sw{background-position:-144px -32px}.ui-icon-arrow-2-e-w{background-position:-160px -32px}.ui-icon-arrow-2-se-nw{background-position:-176px -32px}.ui-icon-arrowstop-1-n{background-position:-192px -32px}.ui-icon-arrowstop-1-e{background-position:-208px -32px}.ui-icon-arrowstop-1-s{background-position:-224px -32px}.ui-icon-arrowstop-1-w{background-position:-240px -32px}.ui-icon-arrowthick-1-n{background-position:0 -48px}.ui-icon-arrowthick-1-ne{background-position:-16px -48px}.ui-icon-arrowthick-1-e{background-position:-32px -48px}.ui-icon-arrowthick-1-se{background-position:-48px -48px}.ui-icon-arrowthick-1-s{background-position:-64px -48px}.ui-icon-arrowthick-1-sw{background-position:-80px -48px}.ui-icon-arrowthick-1-w{background-position:-96px -48px}.ui-icon-arrowthick-1-nw{background-position:-112px -48px}.ui-icon-arrowthick-2-n-s{background-position:-128px -48px}.ui-icon-arrowthick-2-ne-sw{background-position:-144px -48px}.ui-icon-arrowthick-2-e-w{background-position:-160px -48px}.ui-icon-arrowthick-2-se-nw{background-position:-176px -48px}.ui-icon-arrowthickstop-1-n{background-position:-192px -48px}.ui-icon-arrowthickstop-1-e{background-position:-208px -48px}.ui-icon-arrowthickstop-1-s{background-position:-224px -48px}.ui-icon-arrowthickstop-1-w{background-position:-240px -48px}.ui-icon-arrowreturnthick-1-w{background-position:0 -64px}.ui-icon-arrowreturnthick-1-n{background-position:-16px -64px}.ui-icon-arrowreturnthick-1-e{background-position:-32px -64px}.ui-icon-arrowreturnthick-1-s{background-position:-48px -64px}.ui-icon-arrowreturn-1-w{background-position:-64px -64px}.ui-icon-arrowreturn-1-n{background-position:-80px -64px}.ui-icon-arrowreturn-1-e{background-position:-96px -64px}.ui-icon-arrowreturn-1-s{background-position:-112px -64px}.ui-icon-arrowrefresh-1-w{background-position:-128px -64px}.ui-icon-arrowrefresh-1-n{background-position:-144px -64px}.ui-icon-arrowrefresh-1-e{background-position:-160px -64px}.ui-icon-arrowrefresh-1-s{background-position:-176px -64px}.ui-icon-arrow-4{background-position:0 -80px}.ui-icon-arrow-4-diag{background-position:-16px -80px}.ui-icon-extlink{background-position:-32px -80px}.ui-icon-newwin{background-position:-48px -80px}.ui-icon-refresh{background-position:-64px -80px}.ui-icon-shuffle{background-position:-80px -80px}.ui-icon-transfer-e-w{background-position:-96px -80px}.ui-icon-transferthick-e-w{background-position:-112px -80px}.ui-icon-folder-collapsed{background-position:0 -96px}.ui-icon-folder-open{background-position:-16px -96px}.ui-icon-document{background-position:-32px -96px}.ui-icon-document-b{background-position:-48px -96px}.ui-icon-note{background-position:-64px -96px}.ui-icon-mail-closed{background-position:-80px -96px}.ui-icon-mail-open{background-position:-96px -96px}.ui-icon-suitcase{background-position:-112px -96px}.ui-icon-comment{background-position:-128px -96px}.ui-icon-person{background-position:-144px -96px}.ui-icon-print{background-position:-160px -96px}.ui-icon-trash{background-position:-176px -96px}.ui-icon-locked{background-position:-192px -96px}.ui-icon-unlocked{background-position:-208px -96px}.ui-icon-bookmark{background-position:-224px -96px}.ui-icon-tag{background-position:-240px -96px}.ui-icon-home{background-position:0 -112px}.ui-icon-flag{background-position:-16px -112px}.ui-icon-calendar{background-position:-32px -112px}.ui-icon-cart{background-position:-48px -112px}.ui-icon-pencil{background-position:-64px -112px}.ui-icon-clock{background-position:-80px -112px}.ui-icon-disk{background-position:-96px -112px}.ui-icon-calculator{background-position:-112px -112px}.ui-icon-zoomin{background-position:-128px -112px}.ui-icon-zoomout{background-position:-144px -112px}.ui-icon-search{background-position:-160px -112px}.ui-icon-wrench{background-position:-176px -112px}.ui-icon-gear{background-position:-192px -112px}.ui-icon-heart{background-position:-208px -112px}.ui-icon-star{background-position:-224px -112px}.ui-icon-link{background-position:-240px -112px}.ui-icon-cancel{background-position:0 -128px}.ui-icon-plus{background-position:-16px -128px}.ui-icon-plusthick{background-position:-32px -128px}.ui-icon-minus{background-position:-48px -128px}.ui-icon-minusthick{background-position:-64px -128px}.ui-icon-close{background-position:-80px -128px}.ui-icon-closethick{background-position:-96px -128px}.ui-icon-key{background-position:-112px -128px}.ui-icon-lightbulb{background-position:-128px -128px}.ui-icon-scissors{background-position:-144px -128px}.ui-icon-clipboard{background-position:-160px -128px}.ui-icon-copy{background-position:-176px -128px}.ui-icon-contact{background-position:-192px -128px}.ui-icon-image{background-position:-208px -128px}.ui-icon-video{background-position:-224px -128px}.ui-icon-script{background-position:-240px -128px}.ui-icon-alert{background-position:0 -144px}.ui-icon-info{background-position:-16px -144px}.ui-icon-notice{background-position:-32px -144px}.ui-icon-help{background-position:-48px -144px}.ui-icon-check{background-position:-64px -144px}.ui-icon-bullet{background-position:-80px -144px}.ui-icon-radio-on{background-position:-96px -144px}.ui-icon-radio-off{background-position:-112px -144px}.ui-icon-pin-w{background-position:-128px -144px}.ui-icon-pin-s{background-position:-144px -144px}.ui-icon-play{background-position:0 -160px}.ui-icon-pause{background-position:-16px -160px}.ui-icon-seek-next{background-position:-32px -160px}.ui-icon-seek-prev{background-position:-48px -160px}.ui-icon-seek-end{background-position:-64px -160px}.ui-icon-seek-start{background-position:-80px -160px}.ui-icon-seek-first{background-position:-80px -160px}.ui-icon-stop{background-position:-96px -160px}.ui-icon-eject{background-position:-112px -160px}.ui-icon-volume-off{background-position:-128px -160px}.ui-icon-volume-on{background-position:-144px -160px}.ui-icon-power{background-position:0 -176px}.ui-icon-signal-diag{background-position:-16px -176px}.ui-icon-signal{background-position:-32px -176px}.ui-icon-battery-0{background-position:-48px -176px}.ui-icon-battery-1{background-position:-64px -176px}.ui-icon-battery-2{background-position:-80px -176px}.ui-icon-battery-3{background-position:-96px -176px}.ui-icon-circle-plus{background-position:0 -192px}.ui-icon-circle-minus{background-position:-16px -192px}.ui-icon-circle-close{background-position:-32px -192px}.ui-icon-circle-triangle-e{background-position:-48px -192px}.ui-icon-circle-triangle-s{background-position:-64px -192px}.ui-icon-circle-triangle-w{background-position:-80px -192px}.ui-icon-circle-triangle-n{background-position:-96px -192px}.ui-icon-circle-arrow-e{background-position:-112px -192px}.ui-icon-circle-arrow-s{background-position:-128px -192px}.ui-icon-circle-arrow-w{background-position:-144px -192px}.ui-icon-circle-arrow-n{background-position:-160px -192px}.ui-icon-circle-zoomin{background-position:-176px -192px}.ui-icon-circle-zoomout{background-position:-192px -192px}.ui-icon-circle-check{background-position:-208px -192px}.ui-icon-circlesmall-plus{background-position:0 -208px}.ui-icon-circlesmall-minus{background-position:-16px -208px}.ui-icon-circlesmall-close{background-position:-32px -208px}.ui-icon-squaresmall-plus{background-position:-48px -208px}.ui-icon-squaresmall-minus{background-position:-64px -208px}.ui-icon-squaresmall-close{background-position:-80px -208px}.ui-icon-grip-dotted-vertical{background-position:0 -224px}.ui-icon-grip-dotted-horizontal{background-position:-16px -224px}.ui-icon-grip-solid-vertical{background-position:-32px -224px}.ui-icon-grip-solid-horizontal{background-position:-48px -224px}.ui-icon-gripsmall-diagonal-se{background-position:-64px -224px}.ui-icon-grip-diagonal-se{background-position:-80px -224px}.ui-corner-all,.ui-corner-top,.ui-corner-left,.ui-corner-tl{border-top-left-radius:4px}.ui-corner-all,.ui-corner-top,.ui-corner-right,.ui-corner-tr{border-top-right-radius:4px}.ui-corner-all,.ui-corner-bottom,.ui-corner-left,.ui-corner-bl{border-bottom-left-radius:4px}.ui-corner-all,.ui-corner-bottom,.ui-corner-right,.ui-corner-br{border-bottom-right-radius:4px}.ui-widget-overlay{background:#666 url("images/ui-bg_diagonals-thick_20_666666_40x40.png") 50% 50% repeat;opacity:.5;filter:Alpha(Opacity=50)}.ui-widget-shadow{margin:-5px 0 0 -5px;padding:5px;background:#000 url("images/ui-bg_flat_10_000000_40x100.png") 50% 50% repeat-x;opacity:.2;filter:Alpha(Opacity=20);border-radius:5px}
 
 
 
 
 
 
 
css/sbp_style.min.css DELETED
@@ -1 +0,0 @@
1
- .postbox,.wrap .sb-pack .sbp-box{position:relative;overflow:hidden}.wrap .sb-pack .welcome-panel .welcome-panel-column:first-child{display:block!important}.wrap .sb-pack .welcome-panel h4{margin:1.33em 0 20px}.wrap .sb-pack .sbp-inline-wrap{display:inline-block;margin-right:10px;vertical-align:top}.wrap .sb-pack .sbp-more-width{width:300px}.wrap .sb-pack input[type=text]{line-height:1.3}.wrap .sb-pack .sbp-all-enqueued{background-color:#FCFCFC;padding:5px 0 10px;border:1px solid #ddd;width:auto}.wrap .sb-pack .sbp-title-scripts,.wrap .sb-pack .sbp-width{min-width:200px;width:auto;padding:0 20px}.wrap .sb-pack .sbp-title-scripts{display:inline-block;font-weight:700}.wrap .sb-pack #poststuff h2{font-size:32px;padding:9px 15px 20px 0;font-weight:700;line-height:1.3}.wrap .sb-pack #poststuff .main-sbp-title h3{font-size:24px;padding:8px 0 20px;font-weight:700;color:#FA5148}.wrap .sb-pack .handlediv{color:#80828F;padding: 10px 0 0;cursor:pointer}.wrap .sb-pack .meta-box-sortables .postbox .handlediv:before{right:20px;font:400 30px/1.2 dashicons;padding:8px 0;content:"\f343"}.wrap .sb-pack .meta-box-sortables .postbox.closed .handlediv:before{content:"\f347"}.wrap .sb-pack .postbox .inside{padding:0 20px 20px}.wrap .sb-pack #poststuff .inside{margin:26px 0 0}.wrap .sb-pack #poststuff h3{font-size:24px;padding:8px 20px;font-weight:700;display:inline-block}.wrap .sb-pack .sbp-columns1{display:inline-block}.wrap .sb-pack .sbp-columns2{display:inline-block;max-width:73%}.wrap .sb-pack .sbp-title-div{height:50px;clear:both}.wrap .sb-pack .sbp-amount{background-color:transparent;border:none;box-shadow:none;font-size:16px}.wrap .sb-pack .sbp-slider{width:40%}.wrap .sb-pack p{color:#464646;line-height:1.6}.wrap .sb-pack .debug-info{margin-top:19px;border:1px solid #1A9E51;padding:17px 10px;background-color:#2DCB73;color:#FFF;font-size:16px;line-height:1.6;text-shadow:1px 1px #1A9E51}.wrap .sb-pack .td-margin{margin:1.5em 0}.wrap .sb-pack .sbp-div-head{border-bottom:1px solid #E1E1E1;margin:0 0 5px;padding:0 0 5px}.wrap .sb-pack .td-border{border-bottom:1px solid #E1E1E1;margin:10px 0}.wrap .sb-pack .td-border-last{border-bottom:1px solid #E1E1E1;margin:1.5em 0}.wrap .sb-pack .sbp-radio-content{display:block}.wrap .sb-pack .sbp-radio-content label{display:block!important}.wrap .sb-pack .sbp-box hr{margin-left:70px}.wrap .sb-pack .sbp-1{padding-top:10px}.wrap .sb-pack .sbp-2{padding-bottom:15px}.wrap .sb-pack .sbp-3{padding-top:5px}.wrap .sb-pack .sbp-title-div .sbp-title{font-size:23px;font-weight:300;line-height:26px;padding-top:16px;padding-right:15px;display:block;float:left}.wrap .sb-pack .sbp-box{background:#fff;border:1px solid #E5E5E5;box-shadow:0 1px 1px rgba(0,0,0,.04);padding:15px;margin-bottom:15px}.wrap .sb-pack .ui-widget-content,.wrap .sb-pack label:before{-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,.1);-moz-box-shadow:inset 0 1px 2px rgba(0,0,0,.1)}.wrap .sb-pack .sbp-box p{margin:5px 0 5px 70px;color:#777}.wrap .sb-pack .sbp-infos{display:block;margin:0 auto;padding-left:70px;font-weight:700;color:#777}.wrap .sb-pack .sbp-infos span{color:#777;font-weight:400}.wrap .sb-pack .sbp-infos-title{font-weight:700;color:#777}.wrap .sb-pack .sbp-box-legend,.wrap .sb-pack .sbp-box-version{position:absolute;left:0;top:0;height:100%}.wrap .sb-pack .sbp-box-version{background:#80828F;padding:20px 15px}.wrap .sb-pack .sbp-box-legend{background:#FCC500;padding:15px}.wrap .sb-pack .sbp-box-legend:hover{background-color:#F39C12}.wrap .sb-pack .sbp-box-version:hover{background-color:#6C6E79}.wrap .sb-pack .sbp-icon-help,.wrap .sb-pack .sbp-icon-version{color:#FFF;font-size:25px}.wrap .sb-pack .sbp-icon:before{content:"\f185";display:inline-block;-webkit-font-smoothing:antialiased;font:400 36px/.6 dashicons;vertical-align:sub;color:#FA5148;padding-right:5px}.wrap .sb-pack .sbp-icon-information:before{content:"\f348";display:inline-block;-webkit-font-smoothing:antialiased;font:400 28px/1 dashicons;vertical-align:middle;color:#C9D6E2;padding-right:5px}.wrap .sb-pack label{display:inline-block;cursor:pointer;position:relative;padding-left:35px;font-size:16px}.wrap .sb-pack label:before{content:"\2717";font-size:16px;-webkit-font-smoothing:antialiased;text-align:center;color:#fff;display:inline-block;width:26px;height:26px;margin-right:10px;position:absolute;left:0;background:#C9D6E2;box-shadow:inset 0 1px 2px rgba(0,0,0,.1);border:1px solid #B2BFCA}.wrap .sb-pack input[type=checkbox],.wrap .sb-pack input[type=radio]{display:none}.wrap .sb-pack input[type=checkbox]:checked+label:before{content:"\2714";background:#2DCB73;text-shadow:1px 1px 1px #148D44;border:1px solid #1A9E51;font-size:16px;-webkit-font-smoothing:antialiased;color:#fff;text-align:center}.wrap .sb-pack .sbp-icon-version:before{content:"\f348";display:inline-block;-webkit-font-smoothing:antialiased;font:400 30px/1 dashicons;vertical-align:top}.wrap .sb-pack .sbp-icon-help:before{content:"\f123";display:inline-block;-webkit-font-smoothing:antialiased;font:400 30px/1 dashicons;vertical-align:top}.wrap .sb-pack .sbp-stats{font-size:16px;line-height:1.5}.wrap .sb-pack .ui-widget-content .ui-state-default,.wrap .sb-pack .ui-widget-header .ui-state-default,.wrap .sb-pack.ui-state-default{border:1px solid #1A9E51;background-color:#2DCB73;font-weight:400;color:#555;outline:0;cursor:pointer}.wrap .sb-pack .ui-corner-all,.wrap .sb-pack .ui-corner-bl,.wrap .sb-pack .ui-corner-bottom,.wrap .sb-pack .ui-corner-left{border-bottom-left-radius:0}.wrap .sb-pack .ui-state-default:before,.wrap .sb-pack .ui-widget-content .ui-state-default:before,.wrap .sb-pack .ui-widget-header .ui-state-default:before{content:"\2630";display:inline-block;-webkit-font-smoothing:antialiased;color:#fff;font-weight:700;text-shadow:0 1px #1A9E51;line-height:1.8em}.wrap .sb-pack .ui-state-default a,.wrap .sb-pack .ui-state-default a:link,.wrap .sb-pack .ui-state-default a:visited{color:#fff;text-decoration:none}.wrap .sb-pack .ui-state-focus,.wrap .sb-pack .ui-state-hover,.wrap .sb-pack .ui-widget-content .ui-state-focus,.wrap .sb-pack .ui-widget-content .ui-state-hover,.wrap .sb-pack .ui-widget-header .ui-state-focus,.wrap .sb-pack .ui-widget-header .ui-state-hover{background:#3CE281}.wrap .sb-pack .ui-corner-all,.wrap .sb-pack .ui-corner-left,.wrap .sb-pack .ui-corner-tl,.wrap .sb-pack .ui-corner-top{border-top-left-radius:0}.wrap .sb-pack .ui-corner-all,.wrap .sb-pack .ui-corner-right,.wrap .sb-pack .ui-corner-top,.wrap .sb-pack .ui-corner-tr{border-top-right-radius:0}.wrap .sb-pack .ui-corner-all,.wrap .sb-pack .ui-corner-bottom,.wrap .sb-pack .ui-corner-br,.wrap .sb-pack .ui-corner-right{border-bottom-right-radius:0}.wrap .sb-pack .ui-slider-horizontal{height:1.3em}.wrap .sb-pack .ui-slider .ui-slider-handle{width:1.8em;height:1.8em;cursor:pointer;text-align:center}.wrap .sb-pack .ui-widget-content{box-shadow:inset 0 1px 2px rgba(0,0,0,.1);border:1px solid #B2BFCA;background:#F1F2F7;color:#222}.wrap .sb-pack .sbp-progress.queries,.wrap .sb-pack .sbp-progress.time{height:30px;width:77%;display:inline-block;position:relative;background-color:#F1F2F7;overflow:hidden;-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,.1);-moz-box-shadow:inset 0 1px 2px rgba(0,0,0,.1);box-shadow:inset 0 1px 2px rgba(0,0,0,.1)}.wrap .sbp-progress.queries>span,.wrap .sbp-progress.time>span{background-color:#7EDBA5;background-image:-webkit-gradient(linear,left top,left bottom,color-stop(0,#7EDBA5),color-stop(1,#2DCB73));background-image:-webkit-linear-gradient(top,#7EDBA5,#2DCB73);background-image:-moz-linear-gradient(top,#7EDBA5,#2DCB73);background-image:-ms-linear-gradient(top,#7EDBA5,#2DCB73);background-image:-o-linear-gradient(top,#7EDBA5,#f36d0a);color:#fff;width:0;max-width:98%;float:left;display:block;height:100%;position:relative;overflow:hidden}.wrap .sb-pack .sbp-progress.time>span{-webkit-animation:progress-bar-time 2s 1 forwards;-moz-animation:progress-bar-time 2s 1 forwards;-ms-animation:progress-bar-time 2s 1 forwards;-o-animation:progress-bar-time 2s 1 forwards;animation:progress-bar-time 2s 1 forwards}.wrap .sb-pack .sbp-progress.queries>span{-webkit-animation:progress-bar-queries 2s 1 forwards;-moz-animation:progress-bar-queries 2s 1 forwards;-ms-animation:progress-bar-queries 2s 1 forwards;-o-animation:progress-bar-queries 2s 1 forwards;animation:progress-bar-queries 2s 1 forwards}.wrap .sb-pack .sbp-values{float:right;padding:0 5px;background-color:#1AB4EF;color:#fff;width:18%;height:30px;line-height:30px;text-align:center;text-shadow:0 -2px #1AB4EF}.wrap .sb-pack .sbp-numbers{-webkit-animation:opacity 2s;-moz-animation:opacity 2s;-ms-animation:opacity 2s;-o-animation:opacity 2s;animation:opacity 2s;transition-delay:2s;-moz-transition-delay:2s;-webkit-transition-delay:2s;-o-transition-delay:2s;font-size:16px}@keyframes opacity{from{opacity:0}to{opacity:1}}@-moz-keyframes opacity{from{opacity:0}to{opacity:1}}@-webkit-keyframes opacity{from{opacity:0}to{opacity:1}}@-ms-keyframes opacity{from{opacity:0}to{opacity:1}}​ @-o-keyframes opacity{from{opacity:0}to{opacity:1}}​ @media screen and (max-width:783px){.wrap .sb-pack input.regular-text{width:14em}}@media screen and (min-width:784px){.wrap .sb-pack input.regular-text{width:45em}}
 
css/style.css ADDED
@@ -0,0 +1,868 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /* `border-box`... ALL THE THINGS! */
2
+ html {
3
+ box-sizing: border-box;
4
+ }
5
+
6
+ *,
7
+ *:before,
8
+ *:after {
9
+ box-sizing: inherit;
10
+ }
11
+
12
+ .sb-pack-show {
13
+ display: block;
14
+ }
15
+
16
+ .sb-pack-hide {
17
+ display: none;
18
+ }
19
+
20
+ h3.sbp-emphasize {
21
+ color: #fa5148;
22
+ }
23
+
24
+ img.sbp-sp {
25
+ float: left;
26
+ margin-right: 20px;
27
+ }
28
+
29
+ p.description-link {
30
+ margin-top: -5px;
31
+ }
32
+
33
+ .wrap .sb-pack .welcome-panel .welcome-panel-column:first-child {
34
+ display: block !important;
35
+ }
36
+
37
+ .wrap .sb-pack .welcome-panel h4 {
38
+ margin: 1.33em 0 20px;
39
+ }
40
+
41
+ .wrap .sb-pack .sbp-inline-wrap {
42
+ display: inline-block;
43
+ margin-right: 10px;
44
+ vertical-align: top;
45
+ }
46
+
47
+ .wrap .sb-pack .sbp-more-width {
48
+ width: 300px;
49
+ }
50
+
51
+ .wrap .sb-pack .sbp-all-enqueued {
52
+ background-color: #fcfcfc;
53
+ padding: 5px 0px 10px;
54
+ border: 1px solid #ddd;
55
+ width: auto;
56
+ }
57
+
58
+ .wrap .sb-pack .sbp-width {
59
+ min-width: 200px;
60
+ width: auto;
61
+ padding: 0 20px;
62
+ }
63
+
64
+ .wrap .sb-pack .sbp-title-scripts {
65
+ min-width: 200px;
66
+ width: auto;
67
+ display: inline-block;
68
+ font-weight: 700;
69
+ padding: 0 20px;
70
+ }
71
+
72
+ .wrap .sb-pack .sbp-columns1 {
73
+ display: inline-block;
74
+ }
75
+
76
+ .wrap .sb-pack .sbp-columns2 {
77
+ display: inline-block;
78
+ max-width: 73%;
79
+ }
80
+
81
+ .wrap .sb-pack .sbp-title-div {
82
+ height: 50px;
83
+ clear: both;
84
+ }
85
+
86
+ .wrap .sb-pack .sbp-amount {
87
+ background-color: transparent;
88
+ border: medium none;
89
+ box-shadow: none;
90
+ }
91
+
92
+ .wrap .sb-pack .sbp-slider {
93
+ width: 40%;
94
+ }
95
+
96
+ .wrap .sb-pack p {
97
+ color: #464646;
98
+ }
99
+
100
+ .wrap .sb-pack p.sp-link {
101
+ text-align: center;
102
+ margin-bottom: 20px;
103
+ }
104
+
105
+ .wrap .sb-pack .td-margin {
106
+ margin: 1.5em 0 1.5em;
107
+ }
108
+
109
+ .wrap .sb-pack .sbp-div-head {
110
+ border-bottom: 1px solid #e1e1e1;
111
+ margin: 0 0 5px;
112
+ padding: 0 0 5px;
113
+ }
114
+
115
+ .wrap .sb-pack .td-border {
116
+ border-bottom: 1px solid #e1e1e1;
117
+ margin: 10px 0;
118
+ }
119
+
120
+ .wrap .sb-pack .td-border-last {
121
+ border-bottom: 1px solid #e1e1e1;
122
+ margin: 1.5em 0;
123
+ }
124
+
125
+ .wrap .sb-pack .sbp-radio-content {
126
+ display: block;
127
+ }
128
+
129
+ .wrap .sb-pack .sbp-radio-content label {
130
+ display: block !important;
131
+ }
132
+
133
+ .wrap .sb-pack .sbp-box hr {
134
+ margin-left: 70px;
135
+ }
136
+
137
+ .wrap .sb-pack .sbp-1 {
138
+ padding-top: 10px;
139
+ }
140
+
141
+ .wrap .sb-pack .sbp-2 {
142
+ padding-bottom: 15px;
143
+ }
144
+
145
+ .wrap .sb-pack .sbp-3 {
146
+ padding-top: 5px;
147
+ }
148
+
149
+ .wrap .sb-pack .sbp-title-div .sbp-title {
150
+ font-weight: 300;
151
+ line-height: 26px;
152
+ padding-top: 16px;
153
+ padding-right: 15px;
154
+ display: block;
155
+ float: left;
156
+ }
157
+
158
+ .wrap .sb-pack .sbp-box {
159
+ background: #fff;
160
+ border: 1px solid #e5e5e5;
161
+ box-shadow: 0 1px 1px rgba(0, 0, 0, 0.04);
162
+ padding: 15px;
163
+ margin-bottom: 15px;
164
+ position: relative;
165
+ overflow: hidden;
166
+ }
167
+
168
+ .wrap .sb-pack .sbp-box p {
169
+ margin: 5px 0 5px 70px;
170
+ color: #777;
171
+ }
172
+
173
+ .wrap .sb-pack .sbp-infos {
174
+ display: block;
175
+ margin: 0 auto;
176
+ padding-left: 70px;
177
+ font-weight: 700;
178
+ color: #777;
179
+ }
180
+
181
+ .wrap .sb-pack .sbp-infos span {
182
+ color: #777;
183
+ font-weight: 400;
184
+ }
185
+
186
+ .wrap .sb-pack .sbp-infos-title {
187
+ font-weight: 700;
188
+ color: #777;
189
+ }
190
+
191
+ .wrap .sb-pack .sbp-box-legend, .wrap .sb-pack .sbp-box-version {
192
+ position: absolute;
193
+ left: 0;
194
+ top: 0;
195
+ height: 100%;
196
+ }
197
+
198
+ .wrap .sb-pack .sbp-box-version {
199
+ background: none repeat scroll 0% 0% #80828f;
200
+ padding: 20px 15px;
201
+ }
202
+
203
+ .wrap .sb-pack .sbp-box-legend {
204
+ background: none repeat scroll 0% 0% #fcc500;
205
+ padding: 15px 15px;
206
+ }
207
+
208
+ .wrap .sb-pack .sbp-box-legend:hover {
209
+ background-color: #f39c12;
210
+ }
211
+
212
+ .wrap .sb-pack .sbp-box-version:hover {
213
+ background-color: #6c6e79;
214
+ }
215
+
216
+ .wrap .sb-pack .sbp-icon-help, .wrap .sb-pack .sbp-icon-version {
217
+ color: #fff;
218
+ }
219
+
220
+ .wrap .sb-pack .sbp-icon:before {
221
+ content: "\f185";
222
+ display: inline-block;
223
+ -webkit-font-smoothing: antialiased;
224
+ font: normal 36px/0.6 'dashicons';
225
+ vertical-align: sub;
226
+ color: #fa5148;
227
+ padding-right: 5px;
228
+ }
229
+
230
+ .wrap .sb-pack .sbp-icon-information:before {
231
+ content: "\f348";
232
+ display: inline-block;
233
+ -webkit-font-smoothing: antialiased;
234
+ font: normal 28px/1 'dashicons';
235
+ vertical-align: middle;
236
+ color: #c9d6e2;
237
+ padding-right: 5px;
238
+ }
239
+
240
+ .wrap .sb-pack .sbp-icon-version:before {
241
+ content: "\f348";
242
+ display: inline-block;
243
+ -webkit-font-smoothing: antialiased;
244
+ font: normal 30px/1 'dashicons';
245
+ vertical-align: top;
246
+ }
247
+
248
+ .wrap .sb-pack .sbp-icon-help:before {
249
+ content: "\f123";
250
+ display: inline-block;
251
+ -webkit-font-smoothing: antialiased;
252
+ font: normal 30px/1 'dashicons';
253
+ vertical-align: top;
254
+ }
255
+
256
+ /* Jquery UI slider
257
+ -------------------------------------------------------------- */
258
+
259
+ .wrap .sb-pack.ui-state-default,
260
+ .wrap .sb-pack .ui-widget-content .ui-state-default,
261
+ .wrap .sb-pack .ui-widget-header .ui-state-default {
262
+ border: 1px solid #1a9e51;
263
+ background-color: #2dcb73;
264
+ font-weight: 400;
265
+ color: #555;
266
+ outline: 0 none;
267
+ cursor: pointer;
268
+ }
269
+
270
+ .wrap .sb-pack .ui-state-default:before,
271
+ .wrap .sb-pack .ui-widget-content .ui-state-default:before,
272
+ .wrap .sb-pack .ui-widget-header .ui-state-default:before {
273
+ content: "\2630";
274
+ display: inline-block;
275
+ -webkit-font-smoothing: antialiased;
276
+ color: #fff;
277
+ font-weight: 700;
278
+ text-shadow: 0 1px #1a9e51;
279
+ line-height: 1.8em;
280
+ }
281
+
282
+ .wrap .sb-pack .ui-state-default a,
283
+ .wrap .sb-pack .ui-state-default a:link,
284
+ .wrap .sb-pack .ui-state-default a:visited {
285
+ color: #fff;
286
+ text-decoration: none;
287
+ }
288
+
289
+ .wrap .sb-pack .ui-state-focus,
290
+ .wrap .sb-pack .ui-state-hover,
291
+ .wrap .sb-pack .ui-widget-content .ui-state-focus,
292
+ .wrap .sb-pack .ui-widget-content .ui-state-hover,
293
+ .wrap .sb-pack .ui-widget-header .ui-state-focus,
294
+ .wrap .sb-pack .ui-widget-header .ui-state-hover {
295
+ background: #3ce281;
296
+ }
297
+
298
+ .wrap .sb-pack .ui-corner-all,
299
+ .wrap .sb-pack .ui-corner-top,
300
+ .wrap .sb-pack .ui-corner-left,
301
+ .wrap .sb-pack .ui-corner-tl {
302
+ border-top-left-radius: 0;
303
+ }
304
+
305
+ .wrap .sb-pack .ui-corner-all,
306
+ .wrap .sb-pack .ui-corner-top,
307
+ .wrap .sb-pack .ui-corner-right,
308
+ .wrap .sb-pack .ui-corner-tr {
309
+ border-top-right-radius: 0;
310
+ }
311
+
312
+ .wrap .sb-pack .ui-corner-bottom,
313
+ .wrap .sb-pack .ui-corner-left,
314
+ .wrap .sb-pack .ui-corner-bl {
315
+ border-bottom-left-radius: 0;
316
+ }
317
+
318
+ .wrap .sb-pack .ui-corner-all,
319
+ .wrap .sb-pack .ui-corner-bottom,
320
+ .wrap .sb-pack .ui-corner-right,
321
+ .wrap .sb-pack .ui-corner-br {
322
+ border-bottom-right-radius: 0;
323
+ }
324
+
325
+ .wrap .sb-pack .ui-corner-all,
326
+ .wrap .sb-pack .ui-corner-bottom,
327
+ .wrap .sb-pack .ui-corner-left,
328
+ .wrap .sb-pack .ui-corner-bl {
329
+ border-bottom-left-radius: 0;
330
+ }
331
+
332
+ .wrap .sb-pack .ui-slider-horizontal {
333
+ height: 1.3em;
334
+ }
335
+
336
+ .wrap .sb-pack .ui-slider .ui-slider-handle {
337
+ width: 1.8em;
338
+ height: 1.8em;
339
+ cursor: pointer;
340
+ text-align: center;
341
+ }
342
+
343
+ .wrap .sb-pack .ui-widget-content {
344
+ -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, .1);
345
+ -moz-box-shadow: inset 0 1px 2px rgba(0, 0, 0, .1);
346
+ box-shadow: inset 0 1px 2px rgba(0, 0, 0, .1);
347
+ border: 1px solid #b2bfca;
348
+ background: #f1f2f7;
349
+ color: #222
350
+ }
351
+
352
+ /* Progress Bars
353
+ -------------------------------------------------------------- */
354
+ .wrap .sb-pack .sbp-progress.time,
355
+ .wrap .sb-pack .sbp-progress.queries {
356
+ height: 30px;
357
+ width: 77%;
358
+ display: inline-block;
359
+ position: relative;
360
+ background-color: #f1f2f7;
361
+ overflow: hidden;
362
+ -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1);
363
+ -moz-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1);
364
+ box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1);
365
+ }
366
+
367
+ .wrap .sbp-progress.time > span,
368
+ .wrap .sbp-progress.queries > span {
369
+ background-color: #7edba5;
370
+ background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0, #7edba5), color-stop(1, #2dcb73));
371
+ background-image: -webkit-linear-gradient(top, #7edba5, #2dcb73);
372
+ background-image: -moz-linear-gradient(top, #7edba5, #2dcb73);
373
+ background-image: -ms-linear-gradient(top, #7edba5, #2dcb73);
374
+ background-image: -o-linear-gradient(top, #7edba5, #f36d0a);
375
+ color: #fff;
376
+ width: 0%;
377
+ max-width: 98%;
378
+ float: left;
379
+ display: block;
380
+ height: 100%;
381
+ position: relative;
382
+ overflow: hidden;
383
+ }
384
+
385
+ .wrap .sb-pack .sbp-progress.time > span {
386
+ -webkit-animation: progress-bar-time 2s 1 forwards;
387
+ -moz-animation: progress-bar-time 2s 1 forwards;
388
+ -ms-animation: progress-bar-time 2s 1 forwards;
389
+ -o-animation: progress-bar-time 2s 1 forwards;
390
+ animation: progress-bar-time 2s 1 forwards;
391
+ }
392
+
393
+ .wrap .sb-pack .sbp-progress.queries > span {
394
+ -webkit-animation: progress-bar-queries 2s 1 forwards;
395
+ -moz-animation: progress-bar-queries 2s 1 forwards;
396
+ -ms-animation: progress-bar-queries 2s 1 forwards;
397
+ -o-animation: progress-bar-queries 2s 1 forwards;
398
+ animation: progress-bar-queries 2s 1 forwards;
399
+ }
400
+
401
+ .wrap .sb-pack .sbp-values {
402
+ float: right;
403
+ padding: 0 5px;
404
+ background-color: #1ab4ef;
405
+ color: #fff;
406
+ width: 18%;
407
+ height: 30px;
408
+ line-height: 30px;
409
+ text-align: center;
410
+ text-shadow: 0px -2px #1ab4ef;
411
+ }
412
+
413
+ .wrap .sb-pack .sbp-numbers {
414
+ -webkit-animation: opacity 2s; /* Safari and Chrome */
415
+ -moz-animation: opacity 2s; /* Firefox */
416
+ -ms-animation: opacity 2s; /* Internet Explorer */
417
+ -o-animation: opacity 2s; /* Opera */
418
+ animation: opacity 2s;
419
+ transition-delay: 2s;
420
+ -moz-transition-delay: 2s; /* Firefox 4 */
421
+ -webkit-transition-delay: 2s; /* Safari and Chrome */
422
+ -o-transition-delay: 2s; /* Opera */
423
+ }
424
+
425
+ @keyframes opacity {
426
+ from { opacity: 0; }
427
+ to { opacity: 1; }
428
+ }
429
+
430
+ /* Firefox */
431
+ @-moz-keyframes opacity {
432
+ from { opacity: 0; }
433
+ to { opacity: 1; }
434
+ }
435
+
436
+ /* Safari and Chrome */
437
+ @-webkit-keyframes opacity {
438
+ from { opacity: 0; }
439
+ to { opacity: 1; }
440
+ }
441
+
442
+ /* Internet Explorer */
443
+ @-ms-keyframes opacity {
444
+ from { opacity: 0; }
445
+ to { opacity: 1; }
446
+ }
447
+
448
+
449
+
450
+ /* Opera */
451
+ @-o-keyframes opacity {
452
+ from { opacity: 0; }
453
+ to { opacity: 1; }
454
+ }
455
+
456
+
457
+
458
+ @media screen and (max-width: 783px) {
459
+ .wrap .sb-pack input.regular-text {
460
+ width: 14em;
461
+ }
462
+ }
463
+
464
+ @media screen and (min-width: 784px) {
465
+ .wrap .sb-pack input.regular-text {
466
+ width: 45em;
467
+ }
468
+ }
469
+
470
+ /* Feedback Box */
471
+ .feedback-box {
472
+ border: 1px dashed #555;
473
+ background: #fff;
474
+ width: 100%;
475
+ padding: 40px;
476
+ text-align: center;
477
+ margin-top: 15px;
478
+ box-sizing: border-box;
479
+ }
480
+
481
+ .feedback-box .button.button-feedback {
482
+ padding: 10px 40px;
483
+ height: initial;
484
+ }
485
+
486
+ #sbp-current-image img {
487
+ max-width: 130px;
488
+ height: auto;
489
+ }
490
+
491
+ .feedback-box h3 {
492
+ font-weight: 700;
493
+ }
494
+
495
+ .feedback-box h3 > img {
496
+ width: 30px;
497
+ }
498
+
499
+ .feedback-box > p {
500
+ max-width: 720px;
501
+ margin: 0 auto;
502
+ }
503
+
504
+ /* sbp-tooltips */
505
+ /**
506
+ * Tooltip Styles
507
+ */
508
+
509
+ /* Base styles for the element that has a tooltip */
510
+ [data-tooltip],
511
+ .tooltip {
512
+ position: relative;
513
+ cursor: pointer;
514
+ }
515
+
516
+ /* Base styles for the entire tooltip */
517
+ [data-tooltip]:before,
518
+ [data-tooltip]:after,
519
+ .tooltip:before,
520
+ .tooltip:after {
521
+ position: absolute;
522
+ visibility: hidden;
523
+ -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=0)";
524
+ filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=0);
525
+ opacity: 0;
526
+ -webkit-transition: opacity 0.2s ease-in-out,
527
+ visibility 0.2s ease-in-out,
528
+ -webkit-transform 0.2s cubic-bezier(0.71, 1.7, 0.77, 1.24);
529
+ -moz-transition: opacity 0.2s ease-in-out,
530
+ visibility 0.2s ease-in-out,
531
+ -moz-transform 0.2s cubic-bezier(0.71, 1.7, 0.77, 1.24);
532
+ transition: opacity 0.2s ease-in-out,
533
+ visibility 0.2s ease-in-out,
534
+ transform 0.2s cubic-bezier(0.71, 1.7, 0.77, 1.24);
535
+ -webkit-transform: translate3d(0, 0, 0);
536
+ -moz-transform: translate3d(0, 0, 0);
537
+ transform: translate3d(0, 0, 0);
538
+ pointer-events: none;
539
+ }
540
+
541
+ /* Show the entire tooltip on hover and focus */
542
+ [data-tooltip]:hover:before,
543
+ [data-tooltip]:hover:after,
544
+ [data-tooltip]:focus:before,
545
+ [data-tooltip]:focus:after,
546
+ .tooltip:hover:before,
547
+ .tooltip:hover:after,
548
+ .tooltip:focus:before,
549
+ .tooltip:focus:after {
550
+ visibility: visible;
551
+ -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=100)";
552
+ filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=100);
553
+ opacity: 1;
554
+ }
555
+
556
+ /* Base styles for the tooltip's directional arrow */
557
+ .tooltip:before,
558
+ [data-tooltip]:before {
559
+ z-index: 1001;
560
+ border: 6px solid transparent;
561
+ background: transparent;
562
+ content: "";
563
+ }
564
+
565
+ /* Base styles for the tooltip's content area */
566
+ .tooltip:after,
567
+ [data-tooltip]:after {
568
+ z-index: 1000;
569
+ padding: 8px;
570
+ width: 360px;
571
+ background-color: #000;
572
+ background-color: hsla(0, 0%, 20%, 1);
573
+ color: #fff;
574
+ content: attr(data-tooltip);
575
+ line-height: 1.75;
576
+ }
577
+
578
+ /* Directions */
579
+
580
+ /* Top (default) */
581
+ [data-tooltip]:before,
582
+ [data-tooltip]:after,
583
+ .tooltip:before,
584
+ .tooltip:after,
585
+ .tooltip-top:before,
586
+ .tooltip-top:after {
587
+ bottom: 100%;
588
+ left: 50%;
589
+ }
590
+
591
+ [data-tooltip]:before,
592
+ .tooltip:before,
593
+ .tooltip-top:before {
594
+ margin-left: -6px;
595
+ margin-bottom: -12px;
596
+ border-top-color: #000;
597
+ border-top-color: hsla(0, 0%, 20%, 0.9);
598
+ }
599
+
600
+ /* Horizontally align top/bottom tooltips */
601
+ [data-tooltip]:after,
602
+ .tooltip:after,
603
+ .tooltip-top:after {
604
+ margin-left: -80px;
605
+ }
606
+
607
+ [data-tooltip]:hover:before,
608
+ [data-tooltip]:hover:after,
609
+ [data-tooltip]:focus:before,
610
+ [data-tooltip]:focus:after,
611
+ .tooltip:hover:before,
612
+ .tooltip:hover:after,
613
+ .tooltip:focus:before,
614
+ .tooltip:focus:after,
615
+ .tooltip-top:hover:before,
616
+ .tooltip-top:hover:after,
617
+ .tooltip-top:focus:before,
618
+ .tooltip-top:focus:after {
619
+ -webkit-transform: translateY(-12px);
620
+ -moz-transform: translateY(-12px);
621
+ transform: translateY(-12px);
622
+ }
623
+
624
+ /* Left */
625
+ .tooltip-left:before,
626
+ .tooltip-left:after {
627
+ right: 100%;
628
+ bottom: 50%;
629
+ left: auto;
630
+ }
631
+
632
+ .tooltip-left:before {
633
+ margin-left: 0;
634
+ margin-right: -12px;
635
+ margin-bottom: 0;
636
+ border-top-color: transparent;
637
+ border-left-color: #000;
638
+ border-left-color: hsla(0, 0%, 20%, 0.9);
639
+ }
640
+
641
+ .tooltip-left:hover:before,
642
+ .tooltip-left:hover:after,
643
+ .tooltip-left:focus:before,
644
+ .tooltip-left:focus:after {
645
+ -webkit-transform: translateX(-12px);
646
+ -moz-transform: translateX(-12px);
647
+ transform: translateX(-12px);
648
+ }
649
+
650
+ /* Bottom */
651
+ .tooltip-bottom:before,
652
+ .tooltip-bottom:after {
653
+ top: 100%;
654
+ bottom: auto;
655
+ left: 50%;
656
+ }
657
+
658
+ .tooltip-bottom:before {
659
+ margin-top: -12px;
660
+ margin-bottom: 0;
661
+ border-top-color: transparent;
662
+ border-bottom-color: #000;
663
+ border-bottom-color: hsla(0, 0%, 20%, 0.9);
664
+ }
665
+
666
+ .tooltip-bottom:hover:before,
667
+ .tooltip-bottom:hover:after,
668
+ .tooltip-bottom:focus:before,
669
+ .tooltip-bottom:focus:after {
670
+ -webkit-transform: translateY(12px);
671
+ -moz-transform: translateY(12px);
672
+ transform: translateY(12px);
673
+ }
674
+
675
+ /* Right */
676
+ .tooltip-right:before,
677
+ .tooltip-right:after {
678
+ bottom: 50%;
679
+ left: 100%;
680
+ }
681
+
682
+ .tooltip-right:before {
683
+ margin-bottom: 0;
684
+ margin-left: -12px;
685
+ border-top-color: transparent;
686
+ border-right-color: #000;
687
+ border-right-color: hsla(0, 0%, 20%, 0.9);
688
+ }
689
+
690
+ .tooltip-right:hover:before,
691
+ .tooltip-right:hover:after,
692
+ .tooltip-right:focus:before,
693
+ .tooltip-right:focus:after {
694
+ -webkit-transform: translateX(12px);
695
+ -moz-transform: translateX(12px);
696
+ transform: translateX(12px);
697
+ }
698
+
699
+ /* Move directional arrows down a bit for left/right tooltips */
700
+ .tooltip-left:before,
701
+ .tooltip-right:before {
702
+ top: 3px;
703
+ }
704
+
705
+ /* Vertically center tooltip content for left/right tooltips */
706
+ .tooltip-left:after,
707
+ .tooltip-right:after {
708
+ margin-left: 0;
709
+ margin-bottom: -16px;
710
+ }
711
+
712
+ /* ShortPixel Banner Styling */
713
+ .sbp-recommended-plugins {
714
+ border: 1px solid #e5e5e5;
715
+ box-shadow: 0 1px 1px rgba(0, 0, 0, .04);
716
+ margin-top: 1em;
717
+ }
718
+
719
+ .sbp-recommended-plugins h3 {
720
+ margin: 0 0 15px 0;
721
+ }
722
+
723
+ .sbp-recommended-plugins .sbp-recommended-plugin {
724
+ background-color: #fff;
725
+ display: flex;
726
+ align-items: center;
727
+ padding: 2em 1em;
728
+ }
729
+
730
+ .sbp-recommended-plugins .sbp-recommended-plugin:nth-child( even ) {
731
+ background-color: #fcfcfc;
732
+ border-top: 1px solid #e5e5e5;
733
+ border-bottom: 1px solid #e5e5e5;
734
+ }
735
+
736
+ .sbp-recommended-plugins .sbp-recommended-plugin .plugin-image {
737
+ width: 128px;
738
+ }
739
+
740
+ .sbp-recommended-plugins .sbp-recommended-plugin .plugin-information {
741
+ padding-left: 30px;
742
+ box-sizing: border-box;
743
+ width: calc(100% - 128px);
744
+ }
745
+
746
+ .sbp-recommended-plugins .sbp-recommended-plugin .plugin-information .plugin-name,
747
+ .sbp-recommended-plugins .sbp-recommended-plugin .plugin-information .plugin-description {
748
+ margin: 0;
749
+ }
750
+
751
+ .sbp-recommended-plugins .sbp-recommended-plugin .plugin-information .plugin-description {
752
+ margin-bottom: 10px;
753
+ }
754
+
755
+ .sbp-recommended-plugins .sbp-recommended-plugin .sbp-plugin-button.sbp-updating:before {
756
+ font: normal 20px/1 dashicons;
757
+ display: inline-block;
758
+ content: "\f463";
759
+ -webkit-animation: rotation 2s infinite linear;
760
+ animation: rotation 2s infinite linear;
761
+ margin: 3px 5px 0 -2px;
762
+ vertical-align: top;
763
+ }
764
+
765
+ /* Welcome Logo*/
766
+ .wp-badge.sbp-welcome-logo {
767
+ background-color: #fff;
768
+ background-image: url(../inc/images/icon-128x128.jpg);
769
+ background-position: center center;
770
+ background-size: 70%;
771
+ background-repeat: no-repeat;
772
+ padding-top: 160px;
773
+ }
774
+
775
+ /* Support Page */
776
+ .center-support {text-align: center;}
777
+
778
+ /* Fast as a rabbit, slow as a snail box */
779
+ .sbp-fast-as-a-rabbit {
780
+ background-color: #fff;
781
+ width: 100%;
782
+ border-radius: 5px;
783
+ position: relative;
784
+ margin: 15px auto;
785
+ }
786
+
787
+ .sbp-fast-as-a-rabbit > div {
788
+ display: inline-block;
789
+ border-right: 1px solid #f3f3f3;
790
+ padding: 10px 20px;
791
+ text-align: center;
792
+ vertical-align: middle;
793
+ }
794
+
795
+ .sbp-fast-as-a-rabbit > div > i {margin-right: 8px;}
796
+
797
+ .sbp-fast-as-a-rabbit > div > span { font-weight: bold;}
798
+
799
+ /*
800
+ .sbp-fast-as-a-rabbit > div:last-of-type .button {border-radius: 5px;}
801
+
802
+ .sbp-fast-as-a-rabbit > div:last-of-type .button-secondary { color: #9a9a9a;}
803
+
804
+ .sbp-fast-as-a-rabbit > div:last-of-type .button-primary {padding-left: 20px; padding-right: 20px;}
805
+
806
+ .sbp-fast-as-a-rabbit > div:last-of-type .dashicons {
807
+ vertical-align: middle;
808
+ height: 24px;
809
+ }
810
+
811
+ .sbp-fast-as-a-rabbit > div:last-of-type {
812
+ text-align: right;
813
+ position: absolute;
814
+ right: 0;
815
+ top: 50%;
816
+ margin-top: -26px;
817
+ }
818
+
819
+ */
820
+
821
+ .sbp-fast-as-a-rabbit > div:nth-of-type(4),
822
+ .sbp-fast-as-a-rabbit > div:nth-of-type(5) {
823
+ border-right: 0;
824
+ }
825
+
826
+ /* Progress bars */
827
+ .sbp-fast-as-a-rabbit progress {
828
+ margin-left: 8px;
829
+ }
830
+
831
+ .sbp-progress-bar {
832
+ padding: 5px;
833
+ }
834
+
835
+ .sbp-progress-bar progress {
836
+ background-color: #f3f3f3;
837
+ border: 1px solid #ececec;
838
+ border-radius: 9px;
839
+ margin-right: 8px;
840
+ }
841
+
842
+ .sbp-progress-bar progress::-webkit-progress-bar {
843
+ background-color: #f3f3f3;
844
+ border-radius: 9px;
845
+ }
846
+
847
+ .sbp-progress-bar progress::-webkit-progress-value {
848
+ background: green;
849
+ border-radius: 9px;
850
+ }
851
+
852
+ .sbp-progress-bar progress::-moz-progress-bar {
853
+ background: green;
854
+ border-radius: 9px;
855
+ }
856
+
857
+ .sbp-progress-bar progress.sbp-progress-red::-webkit-progress-value {background: red;}
858
+
859
+ .sbp-progress-bar progress.sbp-progress-red::-moz-progress-bar {background: red;}
860
+
861
+ .sbp-progress-bar .progress-value {
862
+ padding: 0px 5px;
863
+ line-height: 20px;
864
+ margin-left: 5px;
865
+ font-size: .8em;
866
+ color: #555;
867
+ height: 18px;
868
+ }
css/style.dev.css DELETED
@@ -1,622 +0,0 @@
1
- h3.sbp-emphasize {
2
- color: #FA5148;
3
- }
4
- img.sbp-sp {
5
- float: left;
6
- margin-right: 20px;
7
- }
8
- p.description-link {
9
- margin-top: -5px;
10
- }
11
-
12
- .wrap .sb-pack .welcome-panel .welcome-panel-column:first-child {
13
- display: block !important;
14
- }
15
-
16
- .wrap .sb-pack .welcome-panel h4 {
17
- margin: 1.33em 0 20px;
18
- }
19
-
20
- .wrap .sb-pack .sbp-inline-wrap {
21
- display: inline-block;
22
- margin-right: 10px;
23
- vertical-align: top;
24
- }
25
-
26
- .wrap .sb-pack .sbp-more-width {
27
- width: 300px;
28
- }
29
-
30
- .wrap .sb-pack input[type="text"] {
31
- line-height: 1.3;
32
- }
33
-
34
- .wrap .sb-pack .sbp-all-enqueued {
35
- background-color: #FCFCFC;
36
- padding: 5px 0px 10px;
37
- border: 1px solid #ddd;
38
- width: auto;
39
- }
40
-
41
- .wrap .sb-pack .sbp-width {
42
- min-width: 200px;
43
- width: auto;
44
- padding: 0 20px;
45
- }
46
-
47
- .wrap .sb-pack .sbp-title-scripts {
48
- min-width: 200px;
49
- width: auto;
50
- display: inline-block;
51
- font-weight: 700;
52
- padding: 0 20px;
53
- }
54
-
55
- .wrap .sb-pack #poststuff h2 {
56
- font-size: 32px;
57
- padding: 9px 15px 20px 0px;
58
- font-weight: 700;
59
- line-height: 1.3;
60
- }
61
-
62
- .wrap .sb-pack #poststuff .main-sbp-title h3 {
63
- font-size: 24px;
64
- padding: 8px 0 20px;
65
- font-weight: 700;
66
- color: #FA5148;
67
- }
68
-
69
- .wrap .sb-pack .handlediv {
70
- color: #80828F;
71
- padding: 10px 0 0;
72
- cursor: pointer;
73
- }
74
-
75
- .wrap .sb-pack .meta-box-sortables .postbox .handlediv:before {
76
- right: 20px;
77
- font: 400 30px/1.2 'dashicons';
78
- padding: 8px 0;
79
- }
80
-
81
- .wrap .sb-pack .meta-box-sortables .postbox .handlediv:before {
82
- content: "\f343";
83
- }
84
-
85
- .wrap .sb-pack .meta-box-sortables .postbox.closed .handlediv:before {
86
- content: "\f347";
87
- }
88
-
89
- .wrap .sb-pack .postbox .inside {
90
- padding: 0 20px 20px;
91
- }
92
-
93
- .postbox {
94
- position: relative;
95
- overflow: hidden;
96
- }
97
- .wrap .sb-pack #poststuff .inside {
98
- margin: 26px 0 0;
99
- }
100
-
101
- .wrap .sb-pack #poststuff h3{
102
- font-size: 24px;
103
- padding: 8px 20px;
104
- font-weight: 700;
105
- display: inline-block;
106
- }
107
-
108
- .wrap .sb-pack .sbp-columns1 {
109
- display: inline-block;
110
- }
111
-
112
- .wrap .sb-pack .sbp-columns2 {
113
- display: inline-block;
114
- max-width: 73%;
115
- }
116
-
117
- .wrap .sb-pack .sbp-title-div {
118
- height: 50px;
119
- clear: both;
120
- }
121
-
122
- .wrap .sb-pack .sbp-amount {
123
- background-color: transparent;
124
- border: medium none;
125
- box-shadow: none;
126
- font-size: 16px;
127
- }
128
-
129
- .wrap .sb-pack .sbp-slider {
130
- width: 40%;
131
- }
132
-
133
- .wrap .sb-pack p {
134
- color: #464646;
135
- line-height: 1.6;
136
- }
137
- .wrap .sb-pack p.sp-link {
138
- text-align: center;
139
- font-size: 1.2em;
140
- margin-bottom: 20px;
141
- }
142
-
143
- .wrap .sb-pack .debug-info {
144
- margin-top: 19px;
145
- border: 1px solid #1A9E51;
146
- padding: 17px 10px;
147
- background-color: #2DCB73;
148
- color: #FFF;
149
- font-size: 16px;
150
- line-height: 1.6;
151
- text-shadow: 1px 1px #1A9E51;
152
- }
153
-
154
- .wrap .sb-pack .td-margin {
155
- margin: 1.5em 0 1.5em;
156
- }
157
-
158
- .wrap .sb-pack .sbp-div-head {
159
- border-bottom: 1px solid #E1E1E1;
160
- margin:0 0 5px;
161
- padding: 0 0 5px;
162
- }
163
-
164
- .wrap .sb-pack .td-border {
165
- border-bottom: 1px solid #E1E1E1;
166
- margin: 10px 0;
167
- }
168
-
169
- .wrap .sb-pack .td-border-last {
170
- border-bottom: 1px solid #E1E1E1;
171
- margin: 1.5em 0;
172
- }
173
-
174
- .wrap .sb-pack .sbp-radio-content {
175
- display: block;
176
- }
177
-
178
- .wrap .sb-pack .sbp-radio-content label {
179
- display: block !important;
180
- }
181
-
182
- .wrap .sb-pack .sbp-box hr {
183
- margin-left: 70px;
184
- }
185
-
186
- .wrap .sb-pack .sbp-1 {
187
- padding-top: 10px;
188
- }
189
-
190
- .wrap .sb-pack .sbp-2 {
191
- padding-bottom: 15px;
192
- }
193
-
194
- .wrap .sb-pack .sbp-3 {
195
- padding-top: 5px;
196
- }
197
-
198
- .wrap .sb-pack .sbp-title-div .sbp-title {
199
- font-size: 23px;
200
- font-weight: 300;
201
- line-height: 26px;
202
- padding-top: 16px;
203
- padding-right: 15px;
204
- display: block;
205
- float: left;
206
- }
207
-
208
- .wrap .sb-pack .sbp-box {
209
- background:#fff;
210
- border: 1px solid #E5E5E5;
211
- box-shadow: 0 1px 1px rgba(0, 0, 0, 0.04);
212
- padding: 15px;
213
- margin-bottom: 15px;
214
- position: relative;
215
- overflow: hidden;
216
- }
217
-
218
- .wrap .sb-pack .sbp-box p {
219
- margin: 5px 0 5px 70px;
220
- color: #777;
221
- }
222
-
223
- .wrap .sb-pack .sbp-infos {
224
- display: block;
225
- margin: 0 auto;
226
- padding-left: 70px;
227
- font-weight: 700;
228
- color:#777;
229
- }
230
-
231
- .wrap .sb-pack .sbp-infos span {
232
- color: #777;
233
- font-weight: 400;
234
- }
235
-
236
- .wrap .sb-pack .sbp-infos-title {
237
- font-weight: 700;
238
- color: #777;
239
- }
240
-
241
- .wrap .sb-pack .sbp-box-legend, .wrap .sb-pack .sbp-box-version {
242
- position: absolute;
243
- left: 0;
244
- top: 0;
245
- height: 100%;
246
- }
247
-
248
- .wrap .sb-pack .sbp-box-version {
249
- background: none repeat scroll 0% 0% #80828F;
250
- padding: 20px 15px;
251
- }
252
-
253
- .wrap .sb-pack .sbp-box-legend {
254
- background: none repeat scroll 0% 0% #FCC500;
255
- padding: 15px 15px;
256
- }
257
-
258
- .wrap .sb-pack .sbp-box-legend:hover {
259
- background-color: #F39C12;
260
- }
261
-
262
- .wrap .sb-pack .sbp-box-version:hover {
263
- background-color: #6C6E79;
264
- }
265
-
266
- .wrap .sb-pack .sbp-icon-help, .wrap .sb-pack .sbp-icon-version {
267
- color:#FFF;
268
- font-size:25px;
269
- }
270
-
271
- .wrap .sb-pack .sbp-icon:before {
272
- content: "\f185";
273
- display: inline-block;
274
- -webkit-font-smoothing: antialiased;
275
- font: normal 36px/0.6 'dashicons';
276
- vertical-align: sub;
277
- color: #FA5148;
278
- padding-right: 5px;
279
- }
280
-
281
- .wrap .sb-pack .sbp-icon-information:before {
282
- content: "\f348";
283
- display: inline-block;
284
- -webkit-font-smoothing: antialiased;
285
- font: normal 28px/1 'dashicons';
286
- vertical-align: middle;
287
- color: #C9D6E2;
288
- padding-right: 5px;
289
- }
290
-
291
- .wrap .sb-pack label {
292
- display: inline-block;
293
- cursor: pointer;
294
- position: relative;
295
- padding-left: 35px;
296
- font-size: 16px;
297
-
298
- }
299
-
300
- /*.wrap .sb-pack #sbp-css-content {
301
- display: none;
302
- }*/
303
-
304
- .wrap .sb-pack label:before {
305
- content: "\2717";
306
- font-size: 16px;
307
- -webkit-font-smoothing: antialiased;
308
- text-align: center;
309
- color: #fff;
310
- display: inline-block;
311
- width: 26px;
312
- height: 26px;
313
- margin-right: 10px;
314
- position: absolute;
315
- left: 0;
316
- background: #C9D6E2;
317
- -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1);
318
- -moz-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1);
319
- box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1);
320
- border: 1px solid #B2BFCA;
321
- }
322
-
323
- .wrap .sb-pack input[type=checkbox],
324
- .wrap .sb-pack input[type=radio] {
325
- display: none;
326
- }
327
-
328
- /*.wrap .sb-pack .sbp-radio-content label:before {
329
- content: "\2630";
330
- font-size: 16px;
331
- -webkit-font-smoothing: antialiased;
332
- text-align: center;
333
- color: #fff;
334
- font-weight: 700;
335
- display: inline-block;
336
- width: 24px;
337
- height: 24px;
338
- line-height: 1.4;
339
- margin-right: 10px;
340
- position: absolute;
341
- left: 0;
342
- background: #C9D6E2;
343
- border: 1px solid #9CA8B3;
344
- }
345
-
346
- .wrap .sb-pack input[type=radio]:checked + label:before {
347
- content: "\2630";
348
- background: none repeat scroll 0% 0% #2DCB73;
349
- text-align: center;
350
- font-weight: 700;
351
- color: #fff;
352
- border: 1px solid #1A9E51;
353
- } */
354
-
355
- .wrap .sb-pack input[type=checkbox]:checked + label:before {
356
- content: "\2714";
357
- background: #2DCB73;
358
- text-shadow: 1px 1px 1px #148D44;
359
- border: 1px solid #1A9E51;
360
- font-size: 16px;
361
- -webkit-font-smoothing: antialiased;
362
- color: #fff;
363
- text-align: center;
364
- }
365
-
366
- .wrap .sb-pack .sbp-icon-version:before {
367
- content: "\f348";
368
- display: inline-block;
369
- -webkit-font-smoothing: antialiased;
370
- font: normal 30px/1 'dashicons';
371
- vertical-align: top;
372
- }
373
-
374
- .wrap .sb-pack .sbp-icon-help:before {
375
- content: "\f123";
376
- display: inline-block;
377
- -webkit-font-smoothing: antialiased;
378
- font: normal 30px/1 'dashicons';
379
- vertical-align: top;
380
- }
381
-
382
- .wrap .sb-pack .sbp-stats {
383
- font-size: 16px;
384
- line-height: 1.5;
385
- }
386
-
387
- /* Jquery UI slider
388
- -------------------------------------------------------------- */
389
-
390
- .wrap .sb-pack.ui-state-default,
391
- .wrap .sb-pack .ui-widget-content .ui-state-default,
392
- .wrap .sb-pack .ui-widget-header .ui-state-default {
393
- border:1px solid #1A9E51;
394
- background-color:#2DCB73;
395
- font-weight:400;
396
- color:#555;
397
- outline:0 none;
398
- cursor:pointer;
399
- }
400
- .wrap .sb-pack .ui-state-default:before,
401
- .wrap .sb-pack .ui-widget-content .ui-state-default:before,
402
- .wrap .sb-pack .ui-widget-header .ui-state-default:before {
403
- content:"\2630";
404
- display:inline-block;
405
- -webkit-font-smoothing:antialiased;
406
- color:#fff;
407
- font-weight:700;
408
- text-shadow:0 1px #1A9E51;
409
- line-height: 1.8em;
410
- }
411
-
412
- .wrap .sb-pack .ui-state-default a,
413
- .wrap .sb-pack .ui-state-default a:link,
414
- .wrap .sb-pack .ui-state-default a:visited {
415
- color:#fff;
416
- text-decoration:none;
417
- }
418
-
419
- .wrap .sb-pack .ui-state-focus,
420
- .wrap .sb-pack .ui-state-hover,
421
- .wrap .sb-pack .ui-widget-content .ui-state-focus,
422
- .wrap .sb-pack .ui-widget-content .ui-state-hover,
423
- .wrap .sb-pack .ui-widget-header .ui-state-focus,
424
- .wrap .sb-pack .ui-widget-header .ui-state-hover {
425
- background:#3CE281;
426
- }
427
-
428
- .wrap .sb-pack .ui-corner-all,
429
- .wrap .sb-pack .ui-corner-top,
430
- .wrap .sb-pack .ui-corner-left,
431
- .wrap .sb-pack .ui-corner-tl {
432
- border-top-left-radius: 0;
433
- }
434
- .wrap .sb-pack .ui-corner-all,
435
- .wrap .sb-pack .ui-corner-top,
436
- .wrap .sb-pack .ui-corner-right,
437
- .wrap .sb-pack .ui-corner-tr {
438
- border-top-right-radius: 0;
439
- }
440
- .wrap .sb-pack .ui-corner-bottom,
441
- .wrap .sb-pack .ui-corner-left,
442
- .wrap .sb-pack .ui-corner-bl {
443
- border-bottom-left-radius: 0;
444
- }
445
- .wrap .sb-pack .ui-corner-all,
446
- .wrap .sb-pack .ui-corner-bottom,
447
- .wrap .sb-pack .ui-corner-right,
448
- .wrap .sb-pack .ui-corner-br {
449
- border-bottom-right-radius: 0;
450
- }
451
-
452
- .wrap .sb-pack .ui-corner-all,
453
- .wrap .sb-pack .ui-corner-bottom,
454
- .wrap .sb-pack .ui-corner-left,
455
- .wrap .sb-pack .ui-corner-bl {
456
- border-bottom-left-radius: 0;
457
- }
458
-
459
- .wrap .sb-pack .ui-slider-horizontal {
460
- height:1.3em;
461
- }
462
-
463
- .wrap .sb-pack .ui-slider .ui-slider-handle {
464
- width:1.8em;
465
- height:1.8em;
466
- cursor:pointer;
467
- text-align:center;
468
- }
469
-
470
- .wrap .sb-pack .ui-widget-content {
471
- -webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,.1);
472
- -moz-box-shadow:inset 0 1px 2px rgba(0,0,0,.1);
473
- box-shadow:inset 0 1px 2px rgba(0,0,0,.1);
474
- border:1px solid #B2BFCA;
475
- background:#F1F2F7;
476
- color:#222
477
- }
478
- /* Progress Bars
479
- -------------------------------------------------------------- */
480
- .wrap .sb-pack .sbp-progress.time,
481
- .wrap .sb-pack .sbp-progress.queries {
482
- height: 30px;
483
- width: 77%;
484
- display: inline-block;
485
- position: relative;
486
- background-color: #F1F2F7;
487
- overflow: hidden;
488
- -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1);
489
- -moz-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1);
490
- box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1);
491
- }
492
- .wrap .sbp-progress.time > span,
493
- .wrap .sbp-progress.queries > span {
494
- background-color: #7EDBA5;
495
- background-image: -webkit-gradient(linear,left top,left bottom,color-stop(0, #7EDBA5),color-stop(1, #2DCB73));
496
- background-image: -webkit-linear-gradient(top, #7EDBA5, #2DCB73);
497
- background-image: -moz-linear-gradient(top, #7EDBA5, #2DCB73);
498
- background-image: -ms-linear-gradient(top, #7EDBA5, #2DCB73);
499
- background-image: -o-linear-gradient(top, #7EDBA5, #f36d0a);
500
- color:#fff;
501
- width: 0%;
502
- max-width: 98%;
503
- float: left;
504
- display: block;
505
- height: 100%;
506
- position: relative;
507
- overflow: hidden;
508
- }
509
-
510
- .wrap .sb-pack .sbp-progress.time > span {
511
- -webkit-animation: progress-bar-time 2s 1 forwards;
512
- -moz-animation: progress-bar-time 2s 1 forwards;
513
- -ms-animation: progress-bar-time 2s 1 forwards;
514
- -o-animation: progress-bar-time 2s 1 forwards;
515
- animation: progress-bar-time 2s 1 forwards;
516
-
517
- }
518
-
519
- .wrap .sb-pack .sbp-progress.queries > span {
520
- -webkit-animation: progress-bar-queries 2s 1 forwards;
521
- -moz-animation: progress-bar-queries 2s 1 forwards;
522
- -ms-animation: progress-bar-queries 2s 1 forwards;
523
- -o-animation: progress-bar-queries 2s 1 forwards;
524
- animation: progress-bar-queries 2s 1 forwards;
525
-
526
- }
527
-
528
- .wrap .sb-pack .sbp-values {
529
- float: right;
530
- padding: 0 5px;
531
- background-color: #1AB4EF;
532
- color: #fff;
533
- width: 18%;
534
- height: 30px;
535
- line-height: 30px;
536
- text-align: center;
537
- text-shadow: 0px -2px #1AB4EF;
538
- }
539
-
540
- .wrap .sb-pack .sbp-numbers {
541
- -webkit-animation: opacity 2s; /* Safari and Chrome */
542
- -moz-animation: opacity 2s; /* Firefox */
543
- -ms-animation: opacity 2s; /* Internet Explorer */
544
- -o-animation: opacity 2s; /* Opera */
545
- animation: opacity 2s;
546
- transition-delay: 2s;
547
- -moz-transition-delay: 2s; /* Firefox 4 */
548
- -webkit-transition-delay: 2s; /* Safari and Chrome */
549
- -o-transition-delay: 2s; /* Opera */
550
- font-size: 16px;
551
- }
552
-
553
- @keyframes opacity {
554
- from { opacity:0; }
555
- to { opacity: 1; }
556
- }
557
-
558
- /* Firefox */
559
- @-moz-keyframes opacity {
560
- from { opacity:0; }
561
- to { opacity: 1; }
562
- }
563
-
564
- /* Safari and Chrome */
565
- @-webkit-keyframes opacity {
566
- from { opacity:0; }
567
- to { opacity: 1; }
568
- }
569
-
570
- /* Internet Explorer */
571
- @-ms-keyframes opacity {
572
- from { opacity:0; }
573
- to { opacity: 1; }
574
- }​
575
-
576
- /* Opera */
577
- @-o-keyframes opacity {
578
- from { opacity:0; }
579
- to { opacity: 1; }
580
- }​
581
-
582
- @media screen and (max-width: 783px) {
583
- .wrap .sb-pack input.regular-text {
584
- width: 14em;
585
- }
586
- }
587
-
588
- @media screen and (min-width: 784px) {
589
- .wrap .sb-pack input.regular-text {
590
- width: 45em;
591
- }
592
- }
593
-
594
- /* Feedback Box */
595
- .feedback-box {
596
- border: 1px dashed #555;
597
- background: #fff;
598
- width: 100%;
599
- padding: 40px;
600
- text-align: center;
601
- margin-top: 15px;
602
- box-sizing: border-box;
603
- }
604
- .feedback-box .button.button-feedback {
605
- padding: 10px 40px;
606
- height: initial;
607
- }
608
-
609
- #sab-current-image img {
610
- max-width: 130px;
611
- height: auto;
612
- }
613
- .feedback-box h3 {
614
- font-weight: 700;
615
- }
616
- .feedback-box h3 > img {
617
- width: 30px;
618
- }
619
- .feedback-box > p {
620
- max-width: 720px;
621
- margin: 0 auto;
622
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
css/vendors/jquery-ui/images/ui-icons_444444_256x240.png ADDED
Binary file
css/vendors/jquery-ui/images/ui-icons_555555_256x240.png ADDED
Binary file
css/vendors/jquery-ui/images/ui-icons_777620_256x240.png ADDED
Binary file
css/vendors/jquery-ui/images/ui-icons_777777_256x240.png ADDED
Binary file
css/vendors/jquery-ui/images/ui-icons_cc0000_256x240.png ADDED
Binary file
css/vendors/jquery-ui/images/ui-icons_ffffff_256x240.png ADDED
Binary file
css/vendors/jquery-ui/jquery-ui.min.css ADDED
@@ -0,0 +1,7 @@
 
 
 
 
 
 
 
1
+ /*! jQuery UI - v1.12.1 - 2016-09-14
2
+ * http://jqueryui.com
3
+ * Includes: core.css, accordion.css, autocomplete.css, menu.css, button.css, controlgroup.css, checkboxradio.css, datepicker.css, dialog.css, draggable.css, resizable.css, progressbar.css, selectable.css, selectmenu.css, slider.css, sortable.css, spinner.css, tabs.css, tooltip.css, theme.css
4
+ * To view and modify this theme, visit http://jqueryui.com/themeroller/?bgShadowXPos=&bgOverlayXPos=&bgErrorXPos=&bgHighlightXPos=&bgContentXPos=&bgHeaderXPos=&bgActiveXPos=&bgHoverXPos=&bgDefaultXPos=&bgShadowYPos=&bgOverlayYPos=&bgErrorYPos=&bgHighlightYPos=&bgContentYPos=&bgHeaderYPos=&bgActiveYPos=&bgHoverYPos=&bgDefaultYPos=&bgShadowRepeat=&bgOverlayRepeat=&bgErrorRepeat=&bgHighlightRepeat=&bgContentRepeat=&bgHeaderRepeat=&bgActiveRepeat=&bgHoverRepeat=&bgDefaultRepeat=&iconsHover=url(%22images%2Fui-icons_555555_256x240.png%22)&iconsHighlight=url(%22images%2Fui-icons_777620_256x240.png%22)&iconsHeader=url(%22images%2Fui-icons_444444_256x240.png%22)&iconsError=url(%22images%2Fui-icons_cc0000_256x240.png%22)&iconsDefault=url(%22images%2Fui-icons_777777_256x240.png%22)&iconsContent=url(%22images%2Fui-icons_444444_256x240.png%22)&iconsActive=url(%22images%2Fui-icons_ffffff_256x240.png%22)&bgImgUrlShadow=&bgImgUrlOverlay=&bgImgUrlHover=&bgImgUrlHighlight=&bgImgUrlHeader=&bgImgUrlError=&bgImgUrlDefault=&bgImgUrlContent=&bgImgUrlActive=&opacityFilterShadow=Alpha(Opacity%3D30)&opacityFilterOverlay=Alpha(Opacity%3D30)&opacityShadowPerc=30&opacityOverlayPerc=30&iconColorHover=%23555555&iconColorHighlight=%23777620&iconColorHeader=%23444444&iconColorError=%23cc0000&iconColorDefault=%23777777&iconColorContent=%23444444&iconColorActive=%23ffffff&bgImgOpacityShadow=0&bgImgOpacityOverlay=0&bgImgOpacityError=95&bgImgOpacityHighlight=55&bgImgOpacityContent=75&bgImgOpacityHeader=75&bgImgOpacityActive=65&bgImgOpacityHover=75&bgImgOpacityDefault=75&bgTextureShadow=flat&bgTextureOverlay=flat&bgTextureError=flat&bgTextureHighlight=flat&bgTextureContent=flat&bgTextureHeader=flat&bgTextureActive=flat&bgTextureHover=flat&bgTextureDefault=flat&cornerRadius=3px&fwDefault=normal&ffDefault=Arial%2CHelvetica%2Csans-serif&fsDefault=1em&cornerRadiusShadow=8px&thicknessShadow=5px&offsetLeftShadow=0px&offsetTopShadow=0px&opacityShadow=.3&bgColorShadow=%23666666&opacityOverlay=.3&bgColorOverlay=%23aaaaaa&fcError=%235f3f3f&borderColorError=%23f1a899&bgColorError=%23fddfdf&fcHighlight=%23777620&borderColorHighlight=%23dad55e&bgColorHighlight=%23fffa90&fcContent=%23333333&borderColorContent=%23dddddd&bgColorContent=%23ffffff&fcHeader=%23333333&borderColorHeader=%23dddddd&bgColorHeader=%23e9e9e9&fcActive=%23ffffff&borderColorActive=%23003eff&bgColorActive=%23007fff&fcHover=%232b2b2b&borderColorHover=%23cccccc&bgColorHover=%23ededed&fcDefault=%23454545&borderColorDefault=%23c5c5c5&bgColorDefault=%23f6f6f6
5
+ * Copyright jQuery Foundation and other contributors; Licensed MIT */
6
+
7
+ .ui-helper-hidden{display:none}.ui-helper-hidden-accessible{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.ui-helper-reset{margin:0;padding:0;border:0;outline:0;line-height:1.3;text-decoration:none;font-size:100%;list-style:none}.ui-helper-clearfix:before,.ui-helper-clearfix:after{content:"";display:table;border-collapse:collapse}.ui-helper-clearfix:after{clear:both}.ui-helper-zfix{width:100%;height:100%;top:0;left:0;position:absolute;opacity:0;filter:Alpha(Opacity=0)}.ui-front{z-index:100}.ui-state-disabled{cursor:default!important;pointer-events:none}.ui-icon{display:inline-block;vertical-align:middle;margin-top:-.25em;position:relative;text-indent:-99999px;overflow:hidden;background-repeat:no-repeat}.ui-widget-icon-block{left:50%;margin-left:-8px;display:block}.ui-widget-overlay{position:fixed;top:0;left:0;width:100%;height:100%}.ui-accordion .ui-accordion-header{display:block;cursor:pointer;position:relative;margin:2px 0 0 0;padding:.5em .5em .5em .7em;font-size:100%}.ui-accordion .ui-accordion-content{padding:1em 2.2em;border-top:0;overflow:auto}.ui-autocomplete{position:absolute;top:0;left:0;cursor:default}.ui-menu{list-style:none;padding:0;margin:0;display:block;outline:0}.ui-menu .ui-menu{position:absolute}.ui-menu .ui-menu-item{margin:0;cursor:pointer;list-style-image:url("data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7")}.ui-menu .ui-menu-item-wrapper{position:relative;padding:3px 1em 3px .4em}.ui-menu .ui-menu-divider{margin:5px 0;height:0;font-size:0;line-height:0;border-width:1px 0 0 0}.ui-menu .ui-state-focus,.ui-menu .ui-state-active{margin:-1px}.ui-menu-icons{position:relative}.ui-menu-icons .ui-menu-item-wrapper{padding-left:2em}.ui-menu .ui-icon{position:absolute;top:0;bottom:0;left:.2em;margin:auto 0}.ui-menu .ui-menu-icon{left:auto;right:0}.ui-button{padding:.4em 1em;display:inline-block;position:relative;line-height:normal;margin-right:.1em;cursor:pointer;vertical-align:middle;text-align:center;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;overflow:visible}.ui-button,.ui-button:link,.ui-button:visited,.ui-button:hover,.ui-button:active{text-decoration:none}.ui-button-icon-only{width:2em;box-sizing:border-box;text-indent:-9999px;white-space:nowrap}input.ui-button.ui-button-icon-only{text-indent:0}.ui-button-icon-only .ui-icon{position:absolute;top:50%;left:50%;margin-top:-8px;margin-left:-8px}.ui-button.ui-icon-notext .ui-icon{padding:0;width:2.1em;height:2.1em;text-indent:-9999px;white-space:nowrap}input.ui-button.ui-icon-notext .ui-icon{width:auto;height:auto;text-indent:0;white-space:normal;padding:.4em 1em}input.ui-button::-moz-focus-inner,button.ui-button::-moz-focus-inner{border:0;padding:0}.ui-controlgroup{vertical-align:middle;display:inline-block}.ui-controlgroup > .ui-controlgroup-item{float:left;margin-left:0;margin-right:0}.ui-controlgroup > .ui-controlgroup-item:focus,.ui-controlgroup > .ui-controlgroup-item.ui-visual-focus{z-index:9999}.ui-controlgroup-vertical > .ui-controlgroup-item{display:block;float:none;width:100%;margin-top:0;margin-bottom:0;text-align:left}.ui-controlgroup-vertical .ui-controlgroup-item{box-sizing:border-box}.ui-controlgroup .ui-controlgroup-label{padding:.4em 1em}.ui-controlgroup .ui-controlgroup-label span{font-size:80%}.ui-controlgroup-horizontal .ui-controlgroup-label + .ui-controlgroup-item{border-left:none}.ui-controlgroup-vertical .ui-controlgroup-label + .ui-controlgroup-item{border-top:none}.ui-controlgroup-horizontal .ui-controlgroup-label.ui-widget-content{border-right:none}.ui-controlgroup-vertical .ui-controlgroup-label.ui-widget-content{border-bottom:none}.ui-controlgroup-vertical .ui-spinner-input{width:75%;width:calc( 100% - 2.4em )}.ui-controlgroup-vertical .ui-spinner .ui-spinner-up{border-top-style:solid}.ui-checkboxradio-label .ui-icon-background{box-shadow:inset 1px 1px 1px #ccc;border-radius:.12em;border:none}.ui-checkboxradio-radio-label .ui-icon-background{width:16px;height:16px;border-radius:1em;overflow:visible;border:none}.ui-checkboxradio-radio-label.ui-checkboxradio-checked .ui-icon,.ui-checkboxradio-radio-label.ui-checkboxradio-checked:hover .ui-icon{background-image:none;width:8px;height:8px;border-width:4px;border-style:solid}.ui-checkboxradio-disabled{pointer-events:none}.ui-datepicker{width:17em;padding:.2em .2em 0;display:none}.ui-datepicker .ui-datepicker-header{position:relative;padding:.2em 0}.ui-datepicker .ui-datepicker-prev,.ui-datepicker .ui-datepicker-next{position:absolute;top:2px;width:1.8em;height:1.8em}.ui-datepicker .ui-datepicker-prev-hover,.ui-datepicker .ui-datepicker-next-hover{top:1px}.ui-datepicker .ui-datepicker-prev{left:2px}.ui-datepicker .ui-datepicker-next{right:2px}.ui-datepicker .ui-datepicker-prev-hover{left:1px}.ui-datepicker .ui-datepicker-next-hover{right:1px}.ui-datepicker .ui-datepicker-prev span,.ui-datepicker .ui-datepicker-next span{display:block;position:absolute;left:50%;margin-left:-8px;top:50%;margin-top:-8px}.ui-datepicker .ui-datepicker-title{margin:0 2.3em;line-height:1.8em;text-align:center}.ui-datepicker .ui-datepicker-title select{font-size:1em;margin:1px 0}.ui-datepicker select.ui-datepicker-month,.ui-datepicker select.ui-datepicker-year{width:45%}.ui-datepicker table{width:100%;font-size:.9em;border-collapse:collapse;margin:0 0 .4em}.ui-datepicker th{padding:.7em .3em;text-align:center;font-weight:bold;border:0}.ui-datepicker td{border:0;padding:1px}.ui-datepicker td span,.ui-datepicker td a{display:block;padding:.2em;text-align:right;text-decoration:none}.ui-datepicker .ui-datepicker-buttonpane{background-image:none;margin:.7em 0 0 0;padding:0 .2em;border-left:0;border-right:0;border-bottom:0}.ui-datepicker .ui-datepicker-buttonpane button{float:right;margin:.5em .2em .4em;cursor:pointer;padding:.2em .6em .3em .6em;width:auto;overflow:visible}.ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current{float:left}.ui-datepicker.ui-datepicker-multi{width:auto}.ui-datepicker-multi .ui-datepicker-group{float:left}.ui-datepicker-multi .ui-datepicker-group table{width:95%;margin:0 auto .4em}.ui-datepicker-multi-2 .ui-datepicker-group{width:50%}.ui-datepicker-multi-3 .ui-datepicker-group{width:33.3%}.ui-datepicker-multi-4 .ui-datepicker-group{width:25%}.ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header,.ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header{border-left-width:0}.ui-datepicker-multi .ui-datepicker-buttonpane{clear:left}.ui-datepicker-row-break{clear:both;width:100%;font-size:0}.ui-datepicker-rtl{direction:rtl}.ui-datepicker-rtl .ui-datepicker-prev{right:2px;left:auto}.ui-datepicker-rtl .ui-datepicker-next{left:2px;right:auto}.ui-datepicker-rtl .ui-datepicker-prev:hover{right:1px;left:auto}.ui-datepicker-rtl .ui-datepicker-next:hover{left:1px;right:auto}.ui-datepicker-rtl .ui-datepicker-buttonpane{clear:right}.ui-datepicker-rtl .ui-datepicker-buttonpane button{float:left}.ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current,.ui-datepicker-rtl .ui-datepicker-group{float:right}.ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header,.ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header{border-right-width:0;border-left-width:1px}.ui-datepicker .ui-icon{display:block;text-indent:-99999px;overflow:hidden;background-repeat:no-repeat;left:.5em;top:.3em}.ui-dialog{position:absolute;top:0;left:0;padding:.2em;outline:0}.ui-dialog .ui-dialog-titlebar{padding:.4em 1em;position:relative}.ui-dialog .ui-dialog-title{float:left;margin:.1em 0;white-space:nowrap;width:90%;overflow:hidden;text-overflow:ellipsis}.ui-dialog .ui-dialog-titlebar-close{position:absolute;right:.3em;top:50%;width:20px;margin:-10px 0 0 0;padding:1px;height:20px}.ui-dialog .ui-dialog-content{position:relative;border:0;padding:.5em 1em;background:none;overflow:auto}.ui-dialog .ui-dialog-buttonpane{text-align:left;border-width:1px 0 0 0;background-image:none;margin-top:.5em;padding:.3em 1em .5em .4em}.ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset{float:right}.ui-dialog .ui-dialog-buttonpane button{margin:.5em .4em .5em 0;cursor:pointer}.ui-dialog .ui-resizable-n{height:2px;top:0}.ui-dialog .ui-resizable-e{width:2px;right:0}.ui-dialog .ui-resizable-s{height:2px;bottom:0}.ui-dialog .ui-resizable-w{width:2px;left:0}.ui-dialog .ui-resizable-se,.ui-dialog .ui-resizable-sw,.ui-dialog .ui-resizable-ne,.ui-dialog .ui-resizable-nw{width:7px;height:7px}.ui-dialog .ui-resizable-se{right:0;bottom:0}.ui-dialog .ui-resizable-sw{left:0;bottom:0}.ui-dialog .ui-resizable-ne{right:0;top:0}.ui-dialog .ui-resizable-nw{left:0;top:0}.ui-draggable .ui-dialog-titlebar{cursor:move}.ui-draggable-handle{-ms-touch-action:none;touch-action:none}.ui-resizable{position:relative}.ui-resizable-handle{position:absolute;font-size:0.1px;display:block;-ms-touch-action:none;touch-action:none}.ui-resizable-disabled .ui-resizable-handle,.ui-resizable-autohide .ui-resizable-handle{display:none}.ui-resizable-n{cursor:n-resize;height:7px;width:100%;top:-5px;left:0}.ui-resizable-s{cursor:s-resize;height:7px;width:100%;bottom:-5px;left:0}.ui-resizable-e{cursor:e-resize;width:7px;right:-5px;top:0;height:100%}.ui-resizable-w{cursor:w-resize;width:7px;left:-5px;top:0;height:100%}.ui-resizable-se{cursor:se-resize;width:12px;height:12px;right:1px;bottom:1px}.ui-resizable-sw{cursor:sw-resize;width:9px;height:9px;left:-5px;bottom:-5px}.ui-resizable-nw{cursor:nw-resize;width:9px;height:9px;left:-5px;top:-5px}.ui-resizable-ne{cursor:ne-resize;width:9px;height:9px;right:-5px;top:-5px}.ui-progressbar{height:2em;text-align:left;overflow:hidden}.ui-progressbar .ui-progressbar-value{margin:-1px;height:100%}.ui-progressbar .ui-progressbar-overlay{background:url("data:image/gif;base64,R0lGODlhKAAoAIABAAAAAP///yH/C05FVFNDQVBFMi4wAwEAAAAh+QQJAQABACwAAAAAKAAoAAACkYwNqXrdC52DS06a7MFZI+4FHBCKoDeWKXqymPqGqxvJrXZbMx7Ttc+w9XgU2FB3lOyQRWET2IFGiU9m1frDVpxZZc6bfHwv4c1YXP6k1Vdy292Fb6UkuvFtXpvWSzA+HycXJHUXiGYIiMg2R6W459gnWGfHNdjIqDWVqemH2ekpObkpOlppWUqZiqr6edqqWQAAIfkECQEAAQAsAAAAACgAKAAAApSMgZnGfaqcg1E2uuzDmmHUBR8Qil95hiPKqWn3aqtLsS18y7G1SzNeowWBENtQd+T1JktP05nzPTdJZlR6vUxNWWjV+vUWhWNkWFwxl9VpZRedYcflIOLafaa28XdsH/ynlcc1uPVDZxQIR0K25+cICCmoqCe5mGhZOfeYSUh5yJcJyrkZWWpaR8doJ2o4NYq62lAAACH5BAkBAAEALAAAAAAoACgAAAKVDI4Yy22ZnINRNqosw0Bv7i1gyHUkFj7oSaWlu3ovC8GxNso5fluz3qLVhBVeT/Lz7ZTHyxL5dDalQWPVOsQWtRnuwXaFTj9jVVh8pma9JjZ4zYSj5ZOyma7uuolffh+IR5aW97cHuBUXKGKXlKjn+DiHWMcYJah4N0lYCMlJOXipGRr5qdgoSTrqWSq6WFl2ypoaUAAAIfkECQEAAQAsAAAAACgAKAAAApaEb6HLgd/iO7FNWtcFWe+ufODGjRfoiJ2akShbueb0wtI50zm02pbvwfWEMWBQ1zKGlLIhskiEPm9R6vRXxV4ZzWT2yHOGpWMyorblKlNp8HmHEb/lCXjcW7bmtXP8Xt229OVWR1fod2eWqNfHuMjXCPkIGNileOiImVmCOEmoSfn3yXlJWmoHGhqp6ilYuWYpmTqKUgAAIfkECQEAAQAsAAAAACgAKAAAApiEH6kb58biQ3FNWtMFWW3eNVcojuFGfqnZqSebuS06w5V80/X02pKe8zFwP6EFWOT1lDFk8rGERh1TTNOocQ61Hm4Xm2VexUHpzjymViHrFbiELsefVrn6XKfnt2Q9G/+Xdie499XHd2g4h7ioOGhXGJboGAnXSBnoBwKYyfioubZJ2Hn0RuRZaflZOil56Zp6iioKSXpUAAAh+QQJAQABACwAAAAAKAAoAAACkoQRqRvnxuI7kU1a1UU5bd5tnSeOZXhmn5lWK3qNTWvRdQxP8qvaC+/yaYQzXO7BMvaUEmJRd3TsiMAgswmNYrSgZdYrTX6tSHGZO73ezuAw2uxuQ+BbeZfMxsexY35+/Qe4J1inV0g4x3WHuMhIl2jXOKT2Q+VU5fgoSUI52VfZyfkJGkha6jmY+aaYdirq+lQAACH5BAkBAAEALAAAAAAoACgAAAKWBIKpYe0L3YNKToqswUlvznigd4wiR4KhZrKt9Upqip61i9E3vMvxRdHlbEFiEXfk9YARYxOZZD6VQ2pUunBmtRXo1Lf8hMVVcNl8JafV38aM2/Fu5V16Bn63r6xt97j09+MXSFi4BniGFae3hzbH9+hYBzkpuUh5aZmHuanZOZgIuvbGiNeomCnaxxap2upaCZsq+1kAACH5BAkBAAEALAAAAAAoACgAAAKXjI8By5zf4kOxTVrXNVlv1X0d8IGZGKLnNpYtm8Lr9cqVeuOSvfOW79D9aDHizNhDJidFZhNydEahOaDH6nomtJjp1tutKoNWkvA6JqfRVLHU/QUfau9l2x7G54d1fl995xcIGAdXqMfBNadoYrhH+Mg2KBlpVpbluCiXmMnZ2Sh4GBqJ+ckIOqqJ6LmKSllZmsoq6wpQAAAh+QQJAQABACwAAAAAKAAoAAAClYx/oLvoxuJDkU1a1YUZbJ59nSd2ZXhWqbRa2/gF8Gu2DY3iqs7yrq+xBYEkYvFSM8aSSObE+ZgRl1BHFZNr7pRCavZ5BW2142hY3AN/zWtsmf12p9XxxFl2lpLn1rseztfXZjdIWIf2s5dItwjYKBgo9yg5pHgzJXTEeGlZuenpyPmpGQoKOWkYmSpaSnqKileI2FAAACH5BAkBAAEALAAAAAAoACgAAAKVjB+gu+jG4kORTVrVhRlsnn2dJ3ZleFaptFrb+CXmO9OozeL5VfP99HvAWhpiUdcwkpBH3825AwYdU8xTqlLGhtCosArKMpvfa1mMRae9VvWZfeB2XfPkeLmm18lUcBj+p5dnN8jXZ3YIGEhYuOUn45aoCDkp16hl5IjYJvjWKcnoGQpqyPlpOhr3aElaqrq56Bq7VAAAOw==");height:100%;filter:alpha(opacity=25);opacity:0.25}.ui-progressbar-indeterminate .ui-progressbar-value{background-image:none}.ui-selectable{-ms-touch-action:none;touch-action:none}.ui-selectable-helper{position:absolute;z-index:100;border:1px dotted black}.ui-selectmenu-menu{padding:0;margin:0;position:absolute;top:0;left:0;display:none}.ui-selectmenu-menu .ui-menu{overflow:auto;overflow-x:hidden;padding-bottom:1px}.ui-selectmenu-menu .ui-menu .ui-selectmenu-optgroup{font-size:1em;font-weight:bold;line-height:1.5;padding:2px 0.4em;margin:0.5em 0 0 0;height:auto;border:0}.ui-selectmenu-open{display:block}.ui-selectmenu-text{display:block;margin-right:20px;overflow:hidden;text-overflow:ellipsis}.ui-selectmenu-button.ui-button{text-align:left;white-space:nowrap;width:14em}.ui-selectmenu-icon.ui-icon{float:right;margin-top:0}.ui-slider{position:relative;text-align:left}.ui-slider .ui-slider-handle{position:absolute;z-index:2;width:1.2em;height:1.2em;cursor:default;-ms-touch-action:none;touch-action:none}.ui-slider .ui-slider-range{position:absolute;z-index:1;font-size:.7em;display:block;border:0;background-position:0 0}.ui-slider.ui-state-disabled .ui-slider-handle,.ui-slider.ui-state-disabled .ui-slider-range{filter:inherit}.ui-slider-horizontal{height:.8em}.ui-slider-horizontal .ui-slider-handle{top:-.3em;margin-left:-.6em}.ui-slider-horizontal .ui-slider-range{top:0;height:100%}.ui-slider-horizontal .ui-slider-range-min{left:0}.ui-slider-horizontal .ui-slider-range-max{right:0}.ui-slider-vertical{width:.8em;height:100px}.ui-slider-vertical .ui-slider-handle{left:-.3em;margin-left:0;margin-bottom:-.6em}.ui-slider-vertical .ui-slider-range{left:0;width:100%}.ui-slider-vertical .ui-slider-range-min{bottom:0}.ui-slider-vertical .ui-slider-range-max{top:0}.ui-sortable-handle{-ms-touch-action:none;touch-action:none}.ui-spinner{position:relative;display:inline-block;overflow:hidden;padding:0;vertical-align:middle}.ui-spinner-input{border:none;background:none;color:inherit;padding:.222em 0;margin:.2em 0;vertical-align:middle;margin-left:.4em;margin-right:2em}.ui-spinner-button{width:1.6em;height:50%;font-size:.5em;padding:0;margin:0;text-align:center;position:absolute;cursor:default;display:block;overflow:hidden;right:0}.ui-spinner a.ui-spinner-button{border-top-style:none;border-bottom-style:none;border-right-style:none}.ui-spinner-up{top:0}.ui-spinner-down{bottom:0}.ui-tabs{position:relative;padding:.2em}.ui-tabs .ui-tabs-nav{margin:0;padding:.2em .2em 0}.ui-tabs .ui-tabs-nav li{list-style:none;float:left;position:relative;top:0;margin:1px .2em 0 0;border-bottom-width:0;padding:0;white-space:nowrap}.ui-tabs .ui-tabs-nav .ui-tabs-anchor{float:left;padding:.5em 1em;text-decoration:none}.ui-tabs .ui-tabs-nav li.ui-tabs-active{margin-bottom:-1px;padding-bottom:1px}.ui-tabs .ui-tabs-nav li.ui-tabs-active .ui-tabs-anchor,.ui-tabs .ui-tabs-nav li.ui-state-disabled .ui-tabs-anchor,.ui-tabs .ui-tabs-nav li.ui-tabs-loading .ui-tabs-anchor{cursor:text}.ui-tabs-collapsible .ui-tabs-nav li.ui-tabs-active .ui-tabs-anchor{cursor:pointer}.ui-tabs .ui-tabs-panel{display:block;border-width:0;padding:1em 1.4em;background:none}.ui-tooltip{padding:8px;position:absolute;z-index:9999;max-width:300px}body .ui-tooltip{border-width:2px}.ui-widget{font-family:Arial,Helvetica,sans-serif;font-size:1em}.ui-widget .ui-widget{font-size:1em}.ui-widget input,.ui-widget select,.ui-widget textarea,.ui-widget button{font-family:Arial,Helvetica,sans-serif;font-size:1em}.ui-widget.ui-widget-content{border:1px solid #c5c5c5}.ui-widget-content{border:1px solid #ddd;background:#fff;color:#333}.ui-widget-content a{color:#333}.ui-widget-header{border:1px solid #ddd;background:#e9e9e9;color:#333;font-weight:bold}.ui-widget-header a{color:#333}.ui-state-default,.ui-widget-content .ui-state-default,.ui-widget-header .ui-state-default,.ui-button,html .ui-button.ui-state-disabled:hover,html .ui-button.ui-state-disabled:active{border:1px solid #c5c5c5;background:#f6f6f6;font-weight:normal;color:#454545}.ui-state-default a,.ui-state-default a:link,.ui-state-default a:visited,a.ui-button,a:link.ui-button,a:visited.ui-button,.ui-button{color:#454545;text-decoration:none}.ui-state-hover,.ui-widget-content .ui-state-hover,.ui-widget-header .ui-state-hover,.ui-state-focus,.ui-widget-content .ui-state-focus,.ui-widget-header .ui-state-focus,.ui-button:hover,.ui-button:focus{border:1px solid #ccc;background:#ededed;font-weight:normal;color:#2b2b2b}.ui-state-hover a,.ui-state-hover a:hover,.ui-state-hover a:link,.ui-state-hover a:visited,.ui-state-focus a,.ui-state-focus a:hover,.ui-state-focus a:link,.ui-state-focus a:visited,a.ui-button:hover,a.ui-button:focus{color:#2b2b2b;text-decoration:none}.ui-visual-focus{box-shadow:0 0 3px 1px rgb(94,158,214)}.ui-state-active,.ui-widget-content .ui-state-active,.ui-widget-header .ui-state-active,a.ui-button:active,.ui-button:active,.ui-button.ui-state-active:hover{border:1px solid #003eff;background:#007fff;font-weight:normal;color:#fff}.ui-icon-background,.ui-state-active .ui-icon-background{border:#003eff;background-color:#fff}.ui-state-active a,.ui-state-active a:link,.ui-state-active a:visited{color:#fff;text-decoration:none}.ui-state-highlight,.ui-widget-content .ui-state-highlight,.ui-widget-header .ui-state-highlight{border:1px solid #dad55e;background:#fffa90;color:#777620}.ui-state-checked{border:1px solid #dad55e;background:#fffa90}.ui-state-highlight a,.ui-widget-content .ui-state-highlight a,.ui-widget-header .ui-state-highlight a{color:#777620}.ui-state-error,.ui-widget-content .ui-state-error,.ui-widget-header .ui-state-error{border:1px solid #f1a899;background:#fddfdf;color:#5f3f3f}.ui-state-error a,.ui-widget-content .ui-state-error a,.ui-widget-header .ui-state-error a{color:#5f3f3f}.ui-state-error-text,.ui-widget-content .ui-state-error-text,.ui-widget-header .ui-state-error-text{color:#5f3f3f}.ui-priority-primary,.ui-widget-content .ui-priority-primary,.ui-widget-header .ui-priority-primary{font-weight:bold}.ui-priority-secondary,.ui-widget-content .ui-priority-secondary,.ui-widget-header .ui-priority-secondary{opacity:.7;filter:Alpha(Opacity=70);font-weight:normal}.ui-state-disabled,.ui-widget-content .ui-state-disabled,.ui-widget-header .ui-state-disabled{opacity:.35;filter:Alpha(Opacity=35);background-image:none}.ui-state-disabled .ui-icon{filter:Alpha(Opacity=35)}.ui-icon{width:16px;height:16px}.ui-icon,.ui-widget-content .ui-icon{background-image:url("jquery-ui/images/ui-icons_444444_256x240.png")} .ui-widget-header .ui-icon{background-image:url("jquery-ui/images/ui-icons_444444_256x240.png")} .ui-state-hover .ui-icon,.ui-state-focus .ui-icon,.ui-button:hover .ui-icon,.ui-button:focus .ui-icon{background-image:url("jquery-ui/images/ui-icons_555555_256x240.png")} .ui-state-active .ui-icon,.ui-button:active .ui-icon{background-image:url("jquery-ui/images/ui-icons_ffffff_256x240.png")} .ui-state-highlight .ui-icon,.ui-button .ui-state-highlight.ui-icon{background-image:url("jquery-ui/images/ui-icons_777620_256x240.png")} .ui-state-error .ui-icon,.ui-state-error-text .ui-icon{background-image:url("jquery-ui/images/ui-icons_cc0000_256x240.png")} .ui-button .ui-icon{background-image:url("jquery-ui/images/ui-icons_777777_256x240.png")} .ui-icon-blank{background-position:16px 16px} .ui-icon-caret-1-n{background-position:0 0} .ui-icon-caret-1-ne{background-position:-16px 0} .ui-icon-caret-1-e{background-position:-32px 0} .ui-icon-caret-1-se{background-position:-48px 0} .ui-icon-caret-1-s{background-position:-65px 0} .ui-icon-caret-1-sw{background-position:-80px 0} .ui-icon-caret-1-w{background-position:-96px 0} .ui-icon-caret-1-nw{background-position:-112px 0} .ui-icon-caret-2-n-s{background-position:-128px 0} .ui-icon-caret-2-e-w{background-position:-144px 0} .ui-icon-triangle-1-n{background-position:0 -16px} .ui-icon-triangle-1-ne{background-position:-16px -16px} .ui-icon-triangle-1-e{background-position:-32px -16px} .ui-icon-triangle-1-se{background-position:-48px -16px} .ui-icon-triangle-1-s{background-position:-65px -16px} .ui-icon-triangle-1-sw{background-position:-80px -16px} .ui-icon-triangle-1-w{background-position:-96px -16px} .ui-icon-triangle-1-nw{background-position:-112px -16px} .ui-icon-triangle-2-n-s{background-position:-128px -16px} .ui-icon-triangle-2-e-w{background-position:-144px -16px} .ui-icon-arrow-1-n{background-position:0 -32px} .ui-icon-arrow-1-ne{background-position:-16px -32px} .ui-icon-arrow-1-e{background-position:-32px -32px} .ui-icon-arrow-1-se{background-position:-48px -32px} .ui-icon-arrow-1-s{background-position:-65px -32px} .ui-icon-arrow-1-sw{background-position:-80px -32px} .ui-icon-arrow-1-w{background-position:-96px -32px} .ui-icon-arrow-1-nw{background-position:-112px -32px} .ui-icon-arrow-2-n-s{background-position:-128px -32px} .ui-icon-arrow-2-ne-sw{background-position:-144px -32px} .ui-icon-arrow-2-e-w{background-position:-160px -32px} .ui-icon-arrow-2-se-nw{background-position:-176px -32px} .ui-icon-arrowstop-1-n{background-position:-192px -32px} .ui-icon-arrowstop-1-e{background-position:-208px -32px} .ui-icon-arrowstop-1-s{background-position:-224px -32px} .ui-icon-arrowstop-1-w{background-position:-240px -32px} .ui-icon-arrowthick-1-n{background-position:1px -48px} .ui-icon-arrowthick-1-ne{background-position:-16px -48px} .ui-icon-arrowthick-1-e{background-position:-32px -48px} .ui-icon-arrowthick-1-se{background-position:-48px -48px} .ui-icon-arrowthick-1-s{background-position:-64px -48px} .ui-icon-arrowthick-1-sw{background-position:-80px -48px} .ui-icon-arrowthick-1-w{background-position:-96px -48px} .ui-icon-arrowthick-1-nw{background-position:-112px -48px} .ui-icon-arrowthick-2-n-s{background-position:-128px -48px} .ui-icon-arrowthick-2-ne-sw{background-position:-144px -48px} .ui-icon-arrowthick-2-e-w{background-position:-160px -48px} .ui-icon-arrowthick-2-se-nw{background-position:-176px -48px} .ui-icon-arrowthickstop-1-n{background-position:-192px -48px} .ui-icon-arrowthickstop-1-e{background-position:-208px -48px} .ui-icon-arrowthickstop-1-s{background-position:-224px -48px} .ui-icon-arrowthickstop-1-w{background-position:-240px -48px} .ui-icon-arrowreturnthick-1-w{background-position:0 -64px} .ui-icon-arrowreturnthick-1-n{background-position:-16px -64px} .ui-icon-arrowreturnthick-1-e{background-position:-32px -64px} .ui-icon-arrowreturnthick-1-s{background-position:-48px -64px} .ui-icon-arrowreturn-1-w{background-position:-64px -64px} .ui-icon-arrowreturn-1-n{background-position:-80px -64px} .ui-icon-arrowreturn-1-e{background-position:-96px -64px} .ui-icon-arrowreturn-1-s{background-position:-112px -64px} .ui-icon-arrowrefresh-1-w{background-position:-128px -64px} .ui-icon-arrowrefresh-1-n{background-position:-144px -64px} .ui-icon-arrowrefresh-1-e{background-position:-160px -64px} .ui-icon-arrowrefresh-1-s{background-position:-176px -64px} .ui-icon-arrow-4{background-position:0 -80px} .ui-icon-arrow-4-diag{background-position:-16px -80px} .ui-icon-extlink{background-position:-32px -80px} .ui-icon-newwin{background-position:-48px -80px} .ui-icon-refresh{background-position:-64px -80px} .ui-icon-shuffle{background-position:-80px -80px} .ui-icon-transfer-e-w{background-position:-96px -80px} .ui-icon-transferthick-e-w{background-position:-112px -80px} .ui-icon-folder-collapsed{background-position:0 -96px} .ui-icon-folder-open{background-position:-16px -96px} .ui-icon-document{background-position:-32px -96px} .ui-icon-document-b{background-position:-48px -96px} .ui-icon-note{background-position:-64px -96px} .ui-icon-mail-closed{background-position:-80px -96px} .ui-icon-mail-open{background-position:-96px -96px} .ui-icon-suitcase{background-position:-112px -96px} .ui-icon-comment{background-position:-128px -96px} .ui-icon-person{background-position:-144px -96px} .ui-icon-print{background-position:-160px -96px} .ui-icon-trash{background-position:-176px -96px} .ui-icon-locked{background-position:-192px -96px} .ui-icon-unlocked{background-position:-208px -96px} .ui-icon-bookmark{background-position:-224px -96px} .ui-icon-tag{background-position:-240px -96px} .ui-icon-home{background-position:0 -112px} .ui-icon-flag{background-position:-16px -112px} .ui-icon-calendar{background-position:-32px -112px} .ui-icon-cart{background-position:-48px -112px} .ui-icon-pencil{background-position:-64px -112px} .ui-icon-clock{background-position:-80px -112px} .ui-icon-disk{background-position:-96px -112px} .ui-icon-calculator{background-position:-112px -112px} .ui-icon-zoomin{background-position:-128px -112px} .ui-icon-zoomout{background-position:-144px -112px} .ui-icon-search{background-position:-160px -112px} .ui-icon-wrench{background-position:-176px -112px} .ui-icon-gear{background-position:-192px -112px} .ui-icon-heart{background-position:-208px -112px} .ui-icon-star{background-position:-224px -112px} .ui-icon-link{background-position:-240px -112px} .ui-icon-cancel{background-position:0 -128px} .ui-icon-plus{background-position:-16px -128px} .ui-icon-plusthick{background-position:-32px -128px} .ui-icon-minus{background-position:-48px -128px} .ui-icon-minusthick{background-position:-64px -128px} .ui-icon-close{background-position:-80px -128px} .ui-icon-closethick{background-position:-96px -128px} .ui-icon-key{background-position:-112px -128px} .ui-icon-lightbulb{background-position:-128px -128px} .ui-icon-scissors{background-position:-144px -128px} .ui-icon-clipboard{background-position:-160px -128px} .ui-icon-copy{background-position:-176px -128px} .ui-icon-contact{background-position:-192px -128px} .ui-icon-image{background-position:-208px -128px} .ui-icon-video{background-position:-224px -128px} .ui-icon-script{background-position:-240px -128px} .ui-icon-alert{background-position:0 -144px} .ui-icon-info{background-position:-16px -144px} .ui-icon-notice{background-position:-32px -144px} .ui-icon-help{background-position:-48px -144px} .ui-icon-check{background-position:-64px -144px} .ui-icon-bullet{background-position:-80px -144px} .ui-icon-radio-on{background-position:-96px -144px} .ui-icon-radio-off{background-position:-112px -144px} .ui-icon-pin-w{background-position:-128px -144px} .ui-icon-pin-s{background-position:-144px -144px} .ui-icon-play{background-position:0 -160px} .ui-icon-pause{background-position:-16px -160px} .ui-icon-seek-next{background-position:-32px -160px} .ui-icon-seek-prev{background-position:-48px -160px} .ui-icon-seek-end{background-position:-64px -160px} .ui-icon-seek-start{background-position:-80px -160px} .ui-icon-seek-first{background-position:-80px -160px} .ui-icon-stop{background-position:-96px -160px} .ui-icon-eject{background-position:-112px -160px} .ui-icon-volume-off{background-position:-128px -160px} .ui-icon-volume-on{background-position:-144px -160px} .ui-icon-power{background-position:0 -176px} .ui-icon-signal-diag{background-position:-16px -176px} .ui-icon-signal{background-position:-32px -176px} .ui-icon-battery-0{background-position:-48px -176px} .ui-icon-battery-1{background-position:-64px -176px} .ui-icon-battery-2{background-position:-80px -176px} .ui-icon-battery-3{background-position:-96px -176px} .ui-icon-circle-plus{background-position:0 -192px} .ui-icon-circle-minus{background-position:-16px -192px} .ui-icon-circle-close{background-position:-32px -192px} .ui-icon-circle-triangle-e{background-position:-48px -192px} .ui-icon-circle-triangle-s{background-position:-64px -192px} .ui-icon-circle-triangle-w{background-position:-80px -192px} .ui-icon-circle-triangle-n{background-position:-96px -192px} .ui-icon-circle-arrow-e{background-position:-112px -192px} .ui-icon-circle-arrow-s{background-position:-128px -192px} .ui-icon-circle-arrow-w{background-position:-144px -192px} .ui-icon-circle-arrow-n{background-position:-160px -192px} .ui-icon-circle-zoomin{background-position:-176px -192px} .ui-icon-circle-zoomout{background-position:-192px -192px} .ui-icon-circle-check{background-position:-208px -192px} .ui-icon-circlesmall-plus{background-position:0 -208px} .ui-icon-circlesmall-minus{background-position:-16px -208px} .ui-icon-circlesmall-close{background-position:-32px -208px} .ui-icon-squaresmall-plus{background-position:-48px -208px} .ui-icon-squaresmall-minus{background-position:-64px -208px} .ui-icon-squaresmall-close{background-position:-80px -208px} .ui-icon-grip-dotted-vertical{background-position:0 -224px} .ui-icon-grip-dotted-horizontal{background-position:-16px -224px} .ui-icon-grip-solid-vertical{background-position:-32px -224px} .ui-icon-grip-solid-horizontal{background-position:-48px -224px} .ui-icon-gripsmall-diagonal-se{background-position:-64px -224px} .ui-icon-grip-diagonal-se{background-position:-80px -224px} .ui-corner-all,.ui-corner-top,.ui-corner-left,.ui-corner-tl{border-top-left-radius:3px} .ui-corner-all,.ui-corner-top,.ui-corner-right,.ui-corner-tr{border-top-right-radius:3px} .ui-corner-all,.ui-corner-bottom,.ui-corner-left,.ui-corner-bl{border-bottom-left-radius:3px} .ui-corner-all,.ui-corner-bottom,.ui-corner-right,.ui-corner-br{border-bottom-right-radius:3px} .ui-widget-overlay{background:#aaa;opacity:.003;filter:Alpha(Opacity=.3)} .ui-widget-shadow{-webkit-box-shadow:0 0 5px #666;box-shadow:0 0 5px #666}
feedback/class-epsilon-feedback.php ADDED
@@ -0,0 +1,271 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ class Epsilon_Feedback {
4
+
5
+ private $plugin_file = '';
6
+ private $plugin_name = '';
7
+
8
+ function __construct( $_plugin_file ) {
9
+
10
+ $this->plugin_file = $_plugin_file;
11
+ $this->plugin_name = basename( $this->plugin_file, '.php' );
12
+
13
+ // Deactivation
14
+ add_filter( 'plugin_action_links_' . plugin_basename( $this->plugin_file ), array(
15
+ $this,
16
+ 'filter_action_links',
17
+ ) );
18
+ add_action( 'admin_footer-plugins.php', array( $this, 'goodbye_ajax' ) );
19
+ add_action( 'wp_ajax_epsilon_deactivate_plugin', array( $this, 'epsilon_deactivate_plugin_callback' ) );
20
+
21
+ }
22
+
23
+ /**
24
+ * Filter the deactivation link to allow us to present a form when the user deactivates the plugin
25
+ *
26
+ * @since 1.0.0
27
+ */
28
+ public function filter_action_links( $links ) {
29
+
30
+ if ( isset( $links['deactivate'] ) ) {
31
+ $deactivation_link = $links['deactivate'];
32
+ // Insert an onClick action to allow form before deactivating
33
+ $deactivation_link = str_replace( '<a ', '<div class="epsilon-deactivate-form-wrapper"><span class="epsilon-deactivate-form" id="epsilon-deactivate-form-' . esc_attr( $this->plugin_name ) . '"></span></div><a onclick="javascript:event.preventDefault();" id="epsilon-deactivate-link-' . esc_attr( $this->plugin_name ) . '" ', $deactivation_link );
34
+ $links['deactivate'] = $deactivation_link;
35
+ }
36
+
37
+ return $links;
38
+ }
39
+
40
+ /**
41
+ * Form text strings
42
+ * These can be filtered
43
+ *
44
+ * @since 1.0.0
45
+ */
46
+ public function goodbye_ajax() {
47
+ // Get our strings for the form
48
+ $form = $this->get_form_info();
49
+
50
+ // Build the HTML to go in the form
51
+ $html = '<div class="epsilon-deactivate-form-head"><strong>' . esc_html( $form['heading'] ) . '</strong></div>';
52
+ $html .= '<div class="epsilon-deactivate-form-body"><p>' . esc_html( $form['body'] ) . '</p>';
53
+ if ( is_array( $form['options'] ) ) {
54
+ $html .= '<div class="epsilon-deactivate-options"><p>';
55
+ foreach ( $form['options'] as $key => $option ) {
56
+ if ( 'features' == $key ) {
57
+ $html .= '<input type="radio" name="epsilon-deactivate-reason" checked="checked" id="' . esc_attr( $key ) . '" value="' . esc_attr( $key ) . '"> <label for="' . esc_attr( $key ) . '">' . esc_attr( $option ) . '</label><br>';
58
+ } else {
59
+ $html .= '<input type="radio" name="epsilon-deactivate-reason" id="' . esc_attr( $key ) . '" value="' . esc_attr( $key ) . '"> <label for="' . esc_attr( $key ) . '">' . esc_attr( $option ) . '</label><br>';
60
+ }
61
+ }
62
+ $html .= '</p><label id="epsilon-deactivate-details-label" for="epsilon-deactivate-reasons"><strong>' . esc_html( $form['details'] ) . '</strong></label><textarea name="epsilon-deactivate-details" id="epsilon-deactivate-details" rows="2" style="width:100%"></textarea>';
63
+ $html .= '<input type="checkbox" name="epsilon-deactivate-tracking" checked="" id="allow-tracking" value="yes"> <label for="allow-tracking">' . esc_html__( 'Allow us to get more information in order to improve our plugin', 'sb-pack' ) . '</label><br>';
64
+ $html .= '</div><!-- .epsilon-deactivate-options -->';
65
+ }
66
+ $html .= '</div><!-- .epsilon-deactivate-form-body -->';
67
+ $html .= '<p class="deactivating-spinner"><span class="spinner"></span> ' . __( 'Submitting form', 'sb-pack' ) . '</p>';
68
+ $html .= '<div class="epsilon-deactivate-form-footer"><p><a id="epsilon-deactivate-plugin" href="#">' . __( 'Just Deactivate', 'sb-pack' ) . '</a><a id="epsilon-deactivate-submit-form" class="button button-primary" href="#">' . __( 'Submit and Deactivate', 'sb-pack' ) . '</a></p></div>'
69
+ ?>
70
+ <div class="epsilon-deactivate-form-bg"></div>
71
+ <style type="text/css">
72
+ .epsilon-deactivate-form-active .epsilon-deactivate-form-bg {
73
+ background: rgba(0, 0, 0, .5);
74
+ position: fixed;
75
+ top: 0;
76
+ left: 0;
77
+ width: 100%;
78
+ height: 100%;
79
+ }
80
+
81
+ .epsilon-deactivate-form-wrapper {
82
+ position: relative;
83
+ z-index: 999;
84
+ display: none;
85
+ }
86
+
87
+ .epsilon-deactivate-form-active .epsilon-deactivate-form-wrapper {
88
+ display: block;
89
+ }
90
+
91
+ .epsilon-deactivate-form {
92
+ display: none;
93
+ }
94
+
95
+ .epsilon-deactivate-form-active .epsilon-deactivate-form {
96
+ position: absolute;
97
+ bottom: 30px;
98
+ left: 0;
99
+ max-width: 400px;
100
+ background: #fff;
101
+ white-space: normal;
102
+ }
103
+
104
+ .epsilon-deactivate-form-head {
105
+ background: #272754;
106
+ color: #fff;
107
+ padding: 8px 18px;
108
+ }
109
+
110
+ .epsilon-deactivate-form-body {
111
+ padding: 8px 18px;
112
+ color: #444;
113
+ }
114
+
115
+ .deactivating-spinner {
116
+ display: none;
117
+ }
118
+
119
+ .deactivating-spinner .spinner {
120
+ float: none;
121
+ margin: 4px 4px 0 18px;
122
+ vertical-align: bottom;
123
+ visibility: visible;
124
+ }
125
+
126
+ .epsilon-deactivate-form-footer {
127
+ padding: 8px 18px;
128
+ }
129
+
130
+ .epsilon-deactivate-form-footer p {
131
+ display: flex;
132
+ align-items: center;
133
+ justify-content: space-between;
134
+ }
135
+
136
+ .epsilon-deactivate-form.process-response .epsilon-deactivate-form-body,
137
+ .epsilon-deactivate-form.process-response .epsilon-deactivate-form-footer {
138
+ position: relative;
139
+ }
140
+
141
+ .epsilon-deactivate-form.process-response .epsilon-deactivate-form-body:after,
142
+ .epsilon-deactivate-form.process-response .epsilon-deactivate-form-footer:after {
143
+ content: "";
144
+ display: block;
145
+ position: absolute;
146
+ top: 0;
147
+ left: 0;
148
+ width: 100%;
149
+ height: 100%;
150
+ background-color: rgba(255, 255, 255, .5);
151
+ }
152
+ </style>
153
+ <script>
154
+ jQuery( document ).ready( function( $ ) {
155
+ var deactivateURL = $( "#epsilon-deactivate-link-<?php echo esc_attr( $this->plugin_name ); ?>" ),
156
+ formContainer = $( '#epsilon-deactivate-form-<?php echo esc_attr( $this->plugin_name ); ?>' ),
157
+ detailsStrings = {
158
+ 'setup': '<?php echo __( 'What was the dificult part ?', 'sb-pack' ) ?>',
159
+ 'documentation': '<?php echo __( 'What can we describe more ?', 'sb-pack' ) ?>',
160
+ 'features': '<?php echo __( 'How could we improve ?', 'sb-pack' ) ?>',
161
+ 'better-plugin': '<?php echo __( 'Can you mention it ?', 'sb-pack' ) ?>',
162
+ 'incompatibility': '<?php echo __( 'With what plugin or theme is incompatible ?', 'sb-pack' ) ?>',
163
+ };
164
+
165
+ $( deactivateURL ).on( "click", function() {
166
+ // We'll send the user to this deactivation link when they've completed or dismissed the form
167
+ var url = deactivateURL.attr( 'href' );
168
+ $( 'body' ).toggleClass( 'epsilon-deactivate-form-active' );
169
+ formContainer.fadeIn();
170
+ formContainer.html( '<?php echo $html; ?>' );
171
+
172
+ formContainer.on( 'change', 'input[name="epsilon-deactivate-reason"]', function() {
173
+ var detailsLabel = formContainer.find( '#epsilon-deactivate-details-label strong' );
174
+ var value = formContainer.find( 'input[name="epsilon-deactivate-reason"]:checked' ).val();
175
+ detailsLabel.text( detailsStrings[ value ] );
176
+ } );
177
+
178
+ formContainer.on( 'click', '#epsilon-deactivate-submit-form', function( e ) {
179
+ var data = {
180
+ 'action': 'epsilon_deactivate_plugin',
181
+ 'security': "<?php echo wp_create_nonce( 'epsilon_deactivate_plugin' ); ?>",
182
+ 'dataType': "json"
183
+ };
184
+ e.preventDefault();
185
+ // As soon as we click, the body of the form should disappear
186
+ formContainer.addClass( 'process-response' );
187
+ // Fade in spinner
188
+ formContainer.find( ".deactivating-spinner" ).fadeIn();
189
+
190
+ data[ 'reason' ] = formContainer.find( 'input[name="epsilon-deactivate-reason"]:checked' ).val();
191
+ data[ 'details' ] = formContainer.find( '#epsilon-deactivate-details' ).val();
192
+ data[ 'tracking' ] = formContainer.find( '#allow-tracking:checked' ).length;
193
+
194
+ $.post(
195
+ ajaxurl,
196
+ data,
197
+ function( response ) {
198
+ // Redirect to original deactivation URL
199
+ window.location.href = url;
200
+ }
201
+ );
202
+ } );
203
+
204
+ formContainer.on( 'click', '#epsilon-deactivate-plugin', function( e ) {
205
+ e.preventDefault();
206
+ window.location.href = url;
207
+ } );
208
+
209
+ // If we click outside the form, the form will close
210
+ $( '.epsilon-deactivate-form-bg' ).on( 'click', function() {
211
+ formContainer.fadeOut();
212
+ $( 'body' ).removeClass( 'epsilon-deactivate-form-active' );
213
+ } );
214
+ } );
215
+ } );
216
+ </script>
217
+ <?php }
218
+
219
+ /*
220
+ * Form text strings
221
+ * These are non-filterable and used as fallback in case filtered strings aren't set correctly
222
+ * @since 1.0.0
223
+ */
224
+ public function get_form_info() {
225
+ $form = array();
226
+ $form['heading'] = __( 'Sorry to see you go', 'sb-pack' );
227
+ $form['body'] = __( 'Before you deactivate the plugin, would you quickly give us your reason for doing so?', 'sb-pack' );
228
+ $form['options'] = array(
229
+ 'setup' => __( 'Set up is too difficult', 'sb-pack' ),
230
+ 'documentation' => __( 'Lack of documentation', 'sb-pack' ),
231
+ 'features' => __( 'Not the features I wanted', 'sb-pack' ),
232
+ 'better-plugin' => __( 'Found a better plugin', 'sb-pack' ),
233
+ 'incompatibility' => __( 'Incompatible with theme or plugin', 'sb-pack' ),
234
+ );
235
+ $form['details'] = __( 'How could we improve ?', 'sb-pack' );
236
+
237
+ return $form;
238
+ }
239
+
240
+ public function epsilon_deactivate_plugin_callback() {
241
+
242
+ check_ajax_referer( 'epsilon_deactivate_plugin', 'security' );
243
+
244
+ if ( isset( $_POST['reason'] ) && isset( $_POST['details'] ) && isset( $_POST['tracking'] ) ) {
245
+ require_once 'class-epsilon-plugin-request.php';
246
+ $args = array(
247
+ 'reason' => $_POST['reason'],
248
+ 'details' => $_POST['details'],
249
+ 'tracking' => $_POST['tracking'],
250
+ );
251
+ $request = new Epsilon_Plugin_Request( $this->plugin_file, $args );
252
+ if ( $request->request_successful ) {
253
+ echo json_encode( array(
254
+ 'status' => 'ok',
255
+ ) );
256
+ } else {
257
+ echo json_encode( array(
258
+ 'status' => 'nok',
259
+ ) );
260
+ }
261
+ } else {
262
+ echo json_encode( array(
263
+ 'status' => 'ok',
264
+ ) );
265
+ }
266
+
267
+ die();
268
+
269
+ }
270
+
271
+ }
feedback/class-epsilon-plugin-request.php ADDED
@@ -0,0 +1,225 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ class Epsilon_Plugin_Request {
4
+
5
+ /**
6
+ * Url for the request
7
+ *
8
+ * @var string
9
+ */
10
+ private $url = 'https://tamewp.com/';
11
+ /**
12
+ * Api endpoint
13
+ *
14
+ * @var string
15
+ */
16
+ private $endpoint = 'wp-json/epsilon/v1/add-tracking-data';
17
+ /**
18
+ * Private data
19
+ *
20
+ * @var array
21
+ */
22
+ private $data = array(
23
+ 'server' => array(),
24
+ 'user' => array(),
25
+ 'wordpress' => array(
26
+ 'deactivated_plugin' => array(),
27
+ ),
28
+ );
29
+ /**
30
+ * Plugin file
31
+ *
32
+ * @var string
33
+ */
34
+ private $plugin_file = '';
35
+
36
+ private $allow_tracking = 0;
37
+
38
+ public $request_successful = false;
39
+
40
+ function __construct( $_plugin_file, $args ) {
41
+
42
+ // Set variables
43
+ $this->allow_tracking = $args['tracking'];
44
+ $this->plugin_file = $_plugin_file;
45
+ $this->data['unique'] = md5( home_url() . get_bloginfo( 'admin_email' ) );
46
+ $this->data['wordpress']['deactivated_plugin']['uninstall_reason'] = $args['reason'];
47
+ $this->data['wordpress']['deactivated_plugin']['uninstall_details'] = $args['details'];
48
+
49
+ // Start collecting data
50
+ $this->_collect_data();
51
+ $this->_generate_url();
52
+ $this->request_successful = $this->_send_request();
53
+ }
54
+
55
+ /**
56
+ * Collect all data for the request.
57
+ *
58
+ */
59
+ private function _collect_data() {
60
+
61
+ $current_plugin = get_plugin_data( $this->plugin_file );
62
+
63
+ // Plugin data
64
+ $this->data['wordpress']['deactivated_plugin']['slug'] = $current_plugin['TextDomain'];
65
+ $this->data['wordpress']['deactivated_plugin']['name'] = $current_plugin['Name'];
66
+ $this->data['wordpress']['deactivated_plugin']['version'] = $current_plugin['Version'];
67
+ $this->data['wordpress']['deactivated_plugin']['author'] = $current_plugin['AuthorName'];
68
+
69
+ if ( $this->allow_tracking ) {
70
+ $this->_collect_wordpress_data();
71
+ $this->_collect_server_data();
72
+ $this->_collect_user_data();
73
+ }
74
+
75
+ }
76
+
77
+ /**
78
+ * Collect WordPress data.
79
+ *
80
+ */
81
+ private function _collect_wordpress_data() {
82
+ $this->data['wordpress']['locale'] = ( get_bloginfo( 'version' ) >= 4.7 ) ? get_user_locale() : get_locale();
83
+ $this->data['wordpress']['wp_version'] = get_bloginfo( 'version' );
84
+ $this->data['wordpress']['multisite'] = is_multisite();
85
+
86
+ $this->data['wordpress']['themes'] = $this->get_themes();
87
+ $this->data['wordpress']['plugins'] = $this->get_plugins();
88
+ }
89
+
90
+ /**
91
+ * Collect server data.
92
+ *
93
+ */
94
+ private function _collect_server_data() {
95
+ $this->data['server']['server'] = isset( $_SERVER['SERVER_SOFTWARE'] ) ? $_SERVER['SERVER_SOFTWARE'] : '';
96
+ $this->data['server']['php_version'] = phpversion();
97
+ $this->data['server']['url'] = home_url();
98
+ }
99
+
100
+ /**
101
+ * Collect user data.
102
+ *
103
+ */
104
+ private function _collect_user_data() {
105
+ $admin = get_user_by( 'email', get_bloginfo( 'admin_email' ) );
106
+ if ( ! $admin ) {
107
+ $this->data['user']['email'] = '';
108
+ $this->data['user']['first_name'] = '';
109
+ $this->data['user']['last_name'] = '';
110
+ }else{
111
+ $this->data['user']['email'] = get_bloginfo( 'admin_email' );
112
+ $this->data['user']['first_name'] = $admin->first_name;
113
+ $this->data['user']['last_name'] = $admin->last_name;
114
+ }
115
+ }
116
+
117
+ /**
118
+ * Get current themes
119
+ *
120
+ * @return array
121
+ */
122
+ private function get_themes() {
123
+ $theme = wp_get_theme();
124
+
125
+ return array(
126
+ 'installed' => $this->_get_installed_themes(),
127
+ 'active' => array(
128
+ 'slug' => get_stylesheet(),
129
+ 'name' => $theme->get( 'Name' ),
130
+ 'version' => $theme->get( 'Version' ),
131
+ 'author' => $theme->get( 'Author' ),
132
+ ),
133
+ );
134
+ }
135
+
136
+ /**
137
+ * Get an array of installed themes
138
+ */
139
+ private function _get_installed_themes() {
140
+ $installed = wp_get_themes();
141
+ $theme = get_stylesheet();
142
+ $arr = array();
143
+
144
+ foreach ( $installed as $slug => $info ) {
145
+ if ( $slug === $theme ) {
146
+ continue;
147
+ }
148
+ $arr[ $slug ] = array(
149
+ 'slug' => $slug,
150
+ 'name' => $info->get( 'Name' ),
151
+ 'version' => $info->get( 'Version' ),
152
+ 'author' => $info->get( 'Author' )
153
+ );
154
+ };
155
+
156
+ return $arr;
157
+ }
158
+
159
+ /**
160
+ * Get a list of installed plugins
161
+ */
162
+ private function get_plugins() {
163
+ if ( ! function_exists( 'get_plugins' ) ) {
164
+ include ABSPATH . '/wp-admin/includes/plugin.php';
165
+ }
166
+
167
+ $plugins = get_plugins();
168
+ $option = get_option( 'active_plugins', array() );
169
+ $active = array();
170
+ $installed = array();
171
+ foreach ( $plugins as $id => $info ) {
172
+ if ( in_array( $id, $active ) ) {
173
+ continue;
174
+ }
175
+
176
+ $id = explode( '/', $id );
177
+ $id = ucwords( str_replace( '-', ' ', $id[0] ) );
178
+
179
+ $installed[] = $id;
180
+ }
181
+
182
+ foreach ( $option as $id ) {
183
+ $id = explode( '/', $id );
184
+ $id = ucwords( str_replace( '-', ' ', $id[0] ) );
185
+
186
+ $active[] = $id;
187
+ }
188
+
189
+ return array(
190
+ 'installed' => $installed,
191
+ 'active' => $active,
192
+ );
193
+ }
194
+
195
+ /**
196
+ * Generate the url
197
+ */
198
+ protected function _generate_url() {
199
+ $this->url = $this->url . $this->endpoint;
200
+ }
201
+
202
+ /**
203
+ * Send dat to server.
204
+ *
205
+ */
206
+ private function _send_request() {
207
+
208
+ $request = wp_remote_post( $this->url, array(
209
+ 'method' => 'POST',
210
+ 'timeout' => 20,
211
+ 'redirection' => 5,
212
+ 'httpversion' => '1.1',
213
+ 'blocking' => true,
214
+ 'body' => $this->data,
215
+ 'user-agent' => 'MT/EPSILON-CUSTOMER-TRACKING/' . esc_url( home_url() )
216
+ ) );
217
+
218
+ if ( is_wp_error( $request ) ) {
219
+ return false;
220
+ }
221
+
222
+ return true;
223
+
224
+ }
225
+ }
inc/core.php CHANGED
@@ -4,535 +4,608 @@
4
  Plugin Core Functions
5
  ---------------------------------------------------------------------------------------------------------*/
6
 
7
- if( !class_exists( 'Speed_Booster_Pack_Core' ) ) {
8
 
9
  class Speed_Booster_Pack_Core {
10
 
11
  public function __construct() {
12
 
13
  global $sbp_options;
14
- add_action( 'wp_enqueue_scripts', array( $this, 'sbp_no_more_fontawesome'), 9999 );
 
15
  add_action( 'wp_enqueue_scripts', array( $this, 'sbp_move_scripts_to_footer' ) );
16
- if ( !is_admin() and isset( $sbp_options['jquery_to_footer'] ) ) {
17
  add_action( 'wp_head', array( $this, 'sbp_scripts_to_head' ) );
18
- add_action( 'wp_print_scripts', array( $this, 'sbp_exclude_scripts' ), 100 );
19
- add_action( 'wp_enqueue_scripts', array( $this, 'sbp_exclude_scripts' ), 100 );
20
  }
21
- add_action( 'wp_footer', array( $this, 'sbp_show_page_load_stats' ), 999 );
22
  add_action( 'after_setup_theme', array( $this, 'sbp_junk_header_tags' ) );
23
- add_action( 'init', array( $this, 'sbp_init') );
 
24
 
25
  $this->sbp_css_optimizer(); // CSS Optimizer functions
26
 
27
- if ( isset( $sbp_options['sbp_css_async'] ) ) {
28
- add_action( 'wp_head', array( $this, 'sbp_except_admin_bar_css' ) );
29
- }
30
 
31
  // Use Google Libraries
32
- if ( !is_admin() and isset( $sbp_options['use_google_libs'] ) ) {
33
  $this->sbp_use_google_libraries();
34
  }
35
 
36
- // Lazy Load
37
- if ( !is_admin() and isset( $sbp_options['lazy_load'] ) ) {
38
- $this->sbp_lazy_load_for_images();
39
- }
40
 
41
  // Minifier
42
- if ( !is_admin() and isset( $sbp_options['minify_html_js'] ) ) {
43
  $this->sbp_minifier();
44
  }
45
 
46
-
47
  // Defer parsing of JavaScript
48
- if ( !is_admin() and isset( $sbp_options['defer_parsing'] ) ) {
49
- add_filter( 'clean_url', array( $this, 'sbp_defer_parsing_of_js' ), 11, 1 );
50
  }
51
 
52
  // Remove query strings from static resources
53
- if ( !is_admin() and isset( $sbp_options['query_strings'] ) ) {
54
- add_filter( 'script_loader_src', array( $this, 'sbp_remove_query_strings_1' ), 15, 1 );
55
- }
56
-
57
- if ( !is_admin() and isset( $sbp_options['query_strings'] ) ) {
58
- add_filter( 'style_loader_src', array( $this, 'sbp_remove_query_strings_1' ), 15, 1 );
59
  }
60
 
61
- if ( !is_admin() and isset( $sbp_options['query_strings'] ) ) {
62
- add_filter( 'script_loader_src', array( $this, 'sbp_remove_query_strings_2' ), 15, 1 );
63
- }
64
-
65
- if ( !is_admin() and isset( $sbp_options['query_strings'] ) ) {
66
- add_filter( 'style_loader_src', array( $this, 'sbp_remove_query_strings_2' ), 15, 1 );
67
- }
68
-
69
- if ( !is_admin() and isset( $sbp_options['query_strings'] ) ) {
70
- add_filter( 'script_loader_src', array( $this, 'sbp_remove_query_strings_3' ), 15, 1 );
71
- }
72
-
73
- if ( !is_admin() and isset( $sbp_options['query_strings'] ) ) {
74
- add_filter( 'style_loader_src', array( $this, 'sbp_remove_query_strings_3' ), 15, 1 );
75
- }
76
 
77
  // JPEG Compression filter
78
  add_filter( 'jpeg_quality', array( $this, 'filter_image_quality' ) );
79
  add_filter( 'wp_editor_set_quality', array( $this, 'filter_image_quality' ) );
80
 
81
 
82
- } // END public public function __construct
83
-
84
-
85
- /*--------------------------------------------------------------------------------------------------------
86
- Init the CSS Optimizer actions
87
- ---------------------------------------------------------------------------------------------------------*/
88
-
89
- function sbp_init() {
90
-
91
- global $sbp_options;
92
-
93
- if ( wp_is_mobile() and isset ( $sbp_options['sbp_is_mobile'] ) ) { // disable all CSS options on mobile devices
94
- return;
95
- }
96
-
97
- if ( !is_admin() and isset( $sbp_options['sbp_css_async'] ) ) {
98
- add_action( 'wp_print_styles', array( $this, 'sbp_print_styles' ), SBP_FOOTER );
99
- add_action( 'wp_footer', array( $this, 'sbp_print_delayed_styles' ), SBP_FOOTER+1 );
100
- }
101
-
102
- }
103
-
104
-
105
- /*--------------------------------------------------------------------------------------------------------
106
- Add except for the admin toolbar css since the Async CSS removes the dashicons from the toolbar.
107
- ---------------------------------------------------------------------------------------------------------*/
108
-
109
- function sbp_except_admin_bar_css() {
110
-
111
- if ( is_admin_bar_showing() ) { // enqueue the admin tolbar styles only if active
112
- wp_enqueue_style( 'open-sans' );
113
- wp_enqueue_style( 'dashicons' );
114
- wp_enqueue_style( 'admin-bar' );
115
- }
116
-
117
- }
118
-
119
-
120
- /*--------------------------------------------------------------------------------------------------------
121
- Get image quality value if it's set. Otherwise it's set to 90
122
- ---------------------------------------------------------------------------------------------------------*/
123
-
124
- function filter_image_quality() {
125
 
126
- if ( get_option( 'sbp_integer' ) ) {
127
- $sbp_compression = get_option( 'sbp_integer' );
128
- } else {
129
- $sbp_compression = 90;
130
- }
 
 
 
 
131
 
132
- return $sbp_compression;
133
- }
134
 
135
 
136
- /*--------------------------------------------------------------------------------------------------------
137
- ACTION wp_print_styles
138
- ---------------------------------------------------------------------------------------------------------*/
139
 
140
- function sbp_print_styles() {
141
- global $sbp_styles_are_async;
142
- global $sbp_styles;
143
- global $sbp_options;
144
 
145
- if ( is_admin() || !empty( $sbp_styles_are_async ) ) {
146
- return;
147
- }
148
 
149
- if ( isset( $sbp_options['sbp_css_minify'] ) ) {
150
- $minify = true;
151
- }else{
152
- $minify = false;
153
- }
154
 
155
- $sbp_styles_are_async = true;
 
 
 
156
 
157
- $sbp_styles = sbp_generate_styles_list();
158
 
159
- if ( !isset( $sbp_options['sbp_footer_css'] ) ) {
160
 
161
- $not_inlined = array();
 
 
162
 
163
- foreach ( $sbp_styles as $style ) {
164
- echo "<style type=\"text/css\" ".($style['media'] ? "media=\"{$style['media']}\"" : '' ).">";
165
- if (!sbp_inline_css($style['src'],$minify)){
166
- $not_inlined[] = $style;
167
- }
168
- echo "</style>";
169
- }
170
- if ( !empty( $not_inlined) ) {
171
- foreach ( $not_inlined as $style ){
172
- ?><link rel="stylesheet" href="<?php echo $style['src']?>" type="text/css" <?php echo $style['media'] ? "media=\"{$style['media']}\"" : ''?> /><?php
173
- }
174
- }
175
- }
176
 
177
- sbp_unregister_styles();
178
- }
 
 
 
179
 
 
 
180
 
181
- /*--------------------------------------------------------------------------------------------------------
182
- ACTION wp_footer
183
- ---------------------------------------------------------------------------------------------------------*/
184
 
185
- function sbp_print_delayed_styles() {
 
 
186
 
187
- global $sbp_styles;
188
- global $sbp_options;
 
 
189
 
190
- if ( isset( $sbp_options['sbp_css_minify'] ) ) {
191
- $minify = true;
192
- }else{
193
- $minify = false;
194
- }
195
 
196
- if ( isset( $sbp_options['sbp_footer_css'] ) ) {
197
 
198
- $not_inlined = array();
199
- foreach ( $sbp_styles as $style ) {
200
- echo "<style type=\"text/css\" ".($style['media'] ? "media=\"{$style['media']}\"" : '' ).">";
201
- if ( !sbp_inline_css($style['src'],$minify) ) {
202
- $not_inlined[] = $style;
203
- }
204
- echo "</style>";
205
- }
206
- if ( !empty( $not_inlined ) ) {
207
- foreach ( $not_inlined as $style ) {
208
- ?><link rel="stylesheet" href="<?php echo $style['src']?>" type="text/css" <?php echo $style['media'] ? "media=\"{$style['media']}\"" : ''?> /><?php
209
- }
210
- }
211
- }
212
- }
213
 
 
214
 
215
- /*--------------------------------------------------------------------------------------------------------
216
- Moves scripts to the footer to decrease page load times, while keeping stylesheets in the header
217
- ---------------------------------------------------------------------------------------------------------*/
218
 
219
- function sbp_move_scripts_to_footer() {
 
 
 
 
 
 
 
 
 
 
 
 
 
220
 
221
- global $sbp_options;
 
222
 
223
- if ( !is_admin() and isset( $sbp_options['jquery_to_footer'] ) ) {
224
 
225
- remove_action( 'wp_head', 'wp_print_scripts' );
226
- remove_action( 'wp_head', 'wp_print_head_scripts', 9 );
227
- remove_action( 'wp_head', 'wp_enqueue_scripts', 1 );
228
 
229
- }
 
 
230
 
231
- } // END function sbp_move_scripts_to_footer
 
 
 
 
232
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
233
 
234
- /*--------------------------------------------------------------------------------------------------------
235
- Exclude scripts from "Move scripts to footer" option
236
- ---------------------------------------------------------------------------------------------------------*/
237
 
238
- public function sbp_exclude_scripts() {
 
 
239
 
 
240
 
241
- if ( get_option( 'sbp_js_footer_exceptions1' ) ) {
242
- $sbp_handle1 = esc_html( get_option( 'sbp_js_footer_exceptions1' ) );
243
- }
244
 
245
- if ( get_option( 'sbp_js_footer_exceptions2' ) ) {
246
- $sbp_handle2 = esc_html( get_option( 'sbp_js_footer_exceptions2' ) );
247
- }
248
 
249
- if ( get_option( 'sbp_js_footer_exceptions3' ) ) {
250
- $sbp_handle3 = esc_html( get_option( 'sbp_js_footer_exceptions3' ) );
251
- }
252
 
253
- if ( get_option( 'sbp_js_footer_exceptions4' ) ) {
254
- $sbp_handle4 = esc_html( get_option( 'sbp_js_footer_exceptions4' ) );
255
- }
256
 
257
- $sbp_enq = 'enqueued';
258
- $sbp_reg = 'registered';
259
- $sbp_done = 'done';
260
 
261
- /*--------------------------------------------------------------------------------------------------------*/
262
 
263
- if ( get_option( 'sbp_js_footer_exceptions1' ) and wp_script_is( $sbp_handle1 , $sbp_enq ) ) {
264
- wp_dequeue_script( $sbp_handle1 );
265
- }
266
 
267
- if ( get_option( 'sbp_js_footer_exceptions2' ) and wp_script_is( $sbp_handle2 , $sbp_enq ) ) {
268
- wp_dequeue_script( $sbp_handle2 );
269
- }
270
 
271
- if ( get_option( 'sbp_js_footer_exceptions3' ) and wp_script_is( $sbp_handle3 , $sbp_enq ) ) {
272
- wp_dequeue_script( $sbp_handle3 );
273
- }
274
 
275
- if ( get_option( 'sbp_js_footer_exceptions4' ) and wp_script_is( $sbp_handle4 , $sbp_enq ) ) {
276
- wp_dequeue_script( $sbp_handle4 );
277
- }
278
 
279
- /*--------------------------------------------------------------------------------------------------------*/
 
 
280
 
281
- if ( get_option( 'sbp_js_footer_exceptions1' ) and wp_script_is( $sbp_handle1 , $sbp_reg ) ) {
282
- wp_deregister_script( $sbp_handle1 );
283
- }
284
 
285
- if ( get_option( 'sbp_js_footer_exceptions2' ) and wp_script_is( $sbp_handle2 , $sbp_reg ) ) {
286
- wp_deregister_script( $sbp_handle2 );
287
- }
288
 
289
- if ( get_option( 'sbp_js_footer_exceptions3' ) and wp_script_is( $sbp_handle3 , $sbp_reg ) ) {
290
- wp_deregister_script( $sbp_handle3 );
291
- }
 
 
 
 
 
 
 
 
 
 
 
292
 
293
- if ( get_option( 'sbp_js_footer_exceptions4' ) and wp_script_is( $sbp_handle4 , $sbp_reg ) ) {
294
- wp_deregister_script( $sbp_handle4 );
295
- }
296
 
297
- /*--------------------------------------------------------------------------------------------------------*/
 
 
298
 
299
- if ( get_option( 'sbp_js_footer_exceptions1' ) and wp_script_is( $sbp_handle1 , $sbp_done ) ) {
300
- wp_deregister_script( $sbp_handle1 );
301
- }
302
 
303
- if ( get_option( 'sbp_js_footer_exceptions2' ) and wp_script_is( $sbp_handle2 , $sbp_done ) ) {
304
- wp_deregister_script( $sbp_handle2 );
305
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
306
 
307
- if ( get_option( 'sbp_js_footer_exceptions3' ) and wp_script_is( $sbp_handle3 , $sbp_done ) ) {
308
- wp_deregister_script( $sbp_handle3 );
309
- }
310
 
311
- if ( get_option( 'sbp_js_footer_exceptions4' ) and wp_script_is( $sbp_handle4 , $sbp_done ) ) {
312
- wp_deregister_script( $sbp_handle4 );
313
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
314
 
315
- }
 
 
 
316
 
 
 
 
 
 
 
317
 
318
- /*--------------------------------------------------------------------------------------------------------
319
- Put scripts back to the head
320
- ---------------------------------------------------------------------------------------------------------*/
 
321
 
322
- public function sbp_scripts_to_head() {
 
 
 
 
323
 
324
- if ( get_option( 'sbp_head_html_script1' ) ) {
325
- echo get_option( 'sbp_head_html_script1' ) . "\n";
326
 
327
- }
 
 
 
328
 
329
- if ( get_option( 'sbp_head_html_script2' ) ) {
330
- echo get_option( 'sbp_head_html_script2' ) . "\n";
331
- }
 
 
 
332
 
333
- if ( get_option( 'sbp_head_html_script3' ) ) {
334
- echo get_option( 'sbp_head_html_script3' ) . "\n";
335
- }
336
 
337
- if ( get_option( 'sbp_head_html_script4' ) ) {
338
- echo get_option( 'sbp_head_html_script4' ) . "\n";
339
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
340
 
341
- }
342
 
343
 
344
- /*--------------------------------------------------------------------------------------------------------
345
- Show Number of Queries and Page Load Time
346
- ---------------------------------------------------------------------------------------------------------*/
347
 
348
- function sbp_show_page_load_stats() {
349
- $timer_stop = timer_stop( 0, 2 ); // to display milliseconds instead of seconds usethe following: $timer_stop = 1000 * ( float ) timer_stop( 0, 4 );
350
- $get_num_queries = get_num_queries();
351
- update_option( 'sbp_page_time', $timer_stop );
352
- update_option( 'sbp_page_queries', $get_num_queries );
353
- }
354
 
355
 
356
- /*--------------------------------------------------------------------------------------------------------
357
- Use Google Libraries
358
- ---------------------------------------------------------------------------------------------------------*/
359
 
360
- function sbp_use_google_libraries() {
361
 
362
- require_once( SPEED_BOOSTER_PACK_PATH . 'inc/use-google-libraries.php' );
363
 
364
- if ( class_exists( 'SBP_GoogleLibraries' ) ) {
365
- SBP_GoogleLibraries::configure_plugin();
366
 
367
- }
368
 
369
- } // End function sbp_use_google_libraries()
370
 
371
 
372
- /*--------------------------------------------------------------------------------------------------------
373
- Lazy Load for images
374
- ---------------------------------------------------------------------------------------------------------*/
375
 
376
- function sbp_lazy_load_for_images() {
377
 
378
- if ( !class_exists( 'CrazyLazy' ) ) {
379
- require_once(SPEED_BOOSTER_PACK_PATH . 'inc/crazy-lazy.php');
380
- }
381
- } // End function sbp_lazy_load_for_images()
382
 
 
383
 
 
 
384
 
385
- /*--------------------------------------------------------------------------------------------------------
386
- Minify HTML and Javascripts
387
- ---------------------------------------------------------------------------------------------------------*/
388
 
389
- function sbp_minifier() {
 
 
390
 
391
- require_once( SPEED_BOOSTER_PACK_PATH . 'inc/sbp-minifier.php' );
392
- } // End function sbp_minifier()
393
 
 
394
 
395
- /*--------------------------------------------------------------------------------------------------------
396
- CSS Optimizer
397
- ---------------------------------------------------------------------------------------------------------*/
398
 
399
- function sbp_css_optimizer() {
 
 
400
 
401
- require_once( SPEED_BOOSTER_PACK_PATH . 'inc/css-optimizer.php' );
402
 
403
- } // End function sbp_css_optimizer()
 
 
 
404
 
 
 
 
405
 
406
- /*--------------------------------------------------------------------------------------------------------
407
- Defer parsing of JavaScript and exclusion files
408
- ---------------------------------------------------------------------------------------------------------*/
409
 
410
- function sbp_defer_parsing_of_js ( $url ) {
 
 
411
 
412
- if ( get_option( 'sbp_defer_exceptions1' ) ) {
413
- $defer_exclude1 = get_option( 'sbp_defer_exceptions1' );
414
- }
415
 
416
- if ( get_option( 'sbp_defer_exceptions2' ) ) {
417
- $defer_exclude2 = get_option( 'sbp_defer_exceptions2' );
418
- }
 
419
 
420
- if ( get_option( 'sbp_defer_exceptions3' ) ) {
421
- $defer_exclude3 = get_option( 'sbp_defer_exceptions3' );
422
- }
423
 
424
- if ( get_option( 'sbp_defer_exceptions4' ) ) {
425
- $defer_exclude4 = get_option( 'sbp_defer_exceptions4' );
426
- }
427
 
 
 
 
428
 
429
- if ( FALSE === strpos( $url, '.js' ) ) {
430
- return $url;
431
- }
432
 
 
433
 
434
- if ( get_option( 'sbp_defer_exceptions1' ) and strpos( $url, $defer_exclude1 ) ) {
435
- return $url;
436
- }
437
 
438
- if ( get_option( 'sbp_defer_exceptions2' ) and strpos( $url, $defer_exclude2 ) ) {
439
- return $url;
440
- }
441
 
442
- if ( get_option( 'sbp_defer_exceptions3' ) and strpos( $url, $defer_exclude3 ) ) {
443
- return $url;
444
- }
445
 
446
- if ( get_option( 'sbp_defer_exceptions4' ) and strpos( $url, $defer_exclude4 ) ) {
447
- return $url;
448
- }
449
 
450
- return "$url' defer='defer";
451
 
452
- } // END function sbp_defer_parsing_of_js
453
 
 
 
 
 
 
 
 
 
 
 
 
454
 
455
- /*--------------------------------------------------------------------------------------------------------
456
- Remove query strings from static resources
457
- ---------------------------------------------------------------------------------------------------------*/
458
 
459
- function sbp_remove_query_strings_1( $src ) { // remove "?ver" string
460
- $rqsfsr = explode( '?ver', $src );
461
- return $rqsfsr[0];
462
- }
 
 
 
463
 
464
- function sbp_remove_query_strings_2( $src ) { // remove "&ver" string
465
- $rqsfsr = explode( '&ver', $src );
466
- return $rqsfsr[0];
467
- }
 
468
 
469
- function sbp_remove_query_strings_3( $src ) { // remove "?rev" string from Revolution Slider plugin
470
- $rqsfsr = explode( '?rev', $src );
471
- return $rqsfsr[0];
472
- }
473
 
 
 
 
474
 
475
- /*--------------------------------------------------------------------------------------------------------
476
- Dequeue extra Font Awesome stylesheet
477
- ---------------------------------------------------------------------------------------------------------*/
478
 
479
- function sbp_no_more_fontawesome() {
480
- global $wp_styles;
481
- global $sbp_options;
482
-
483
- // we'll use preg_match to find only the following patterns as exact matches, to prevent other plugin stylesheets that contain font-awesome expression to be also dequeued
484
- $patterns = array(
485
- 'font-awesome.css',
486
- 'font-awesome.min.css'
487
- );
488
- // multiple patterns hook
489
- $regex = '/(' .implode('|', $patterns) .')/i';
490
- foreach( $wp_styles -> registered as $registered ) {
491
- if( !is_admin() and preg_match( $regex, $registered->src) and isset( $sbp_options['font_awesome'] ) ) {
492
- wp_dequeue_style( $registered->handle );
493
- // FA was dequeued, so here we need to enqueue it again from CDN
494
- wp_enqueue_style( 'font-awesome', '//netdna.bootstrapcdn.com/font-awesome/4.1.0/css/font-awesome.min.css' );
495
- } // END if( preg_match...
496
- } // END foreach
497
- } // End function dfa_no_more_fontawesome
498
 
 
 
 
499
 
500
- /*--------------------------------------------------------------------------------------------------------
501
- Remove junk header tags
502
- ---------------------------------------------------------------------------------------------------------*/
503
 
504
- public function sbp_junk_header_tags() {
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
505
 
506
- global $sbp_options;
507
 
508
- // Remove Adjacent Posts links PREV/NEXT
509
- if ( isset( $sbp_options['remove_adjacent'] ) ) {
510
- remove_action( 'wp_head', 'adjacent_posts_rel_link_wp_head' );
511
- }
512
 
513
- // Remove Windows Live Writer Manifest Link
514
- if ( isset( $sbp_options['wml_link'] ) ) {
515
- remove_action( 'wp_head', 'wlwmanifest_link' );
516
- }
517
 
518
- // Remove WordPress Shortlinks from WP Head
519
- if ( isset( $sbp_options['remove_wsl'] ) ) {
520
- remove_action( 'wp_head', 'wp_shortlink_wp_head' );
521
- }
522
 
523
- // Remove WP Generator/Version - for security reasons and cleaning the header
524
- if ( isset( $sbp_options['wp_generator'] ) ) {
525
- remove_action('wp_head', 'wp_generator');
526
- }
527
 
528
- // Remove all feeds
529
- if ( isset( $sbp_options['remove_all_feeds'] ) ) {
530
- remove_action( 'wp_head', 'feed_links_extra', 3 ); // remove the feed links from the extra feeds such as category feeds
531
- remove_action( 'wp_head', 'feed_links', 2 ); // remove the feed links from the general feeds: Post and Comment Feed
532
- }
533
 
534
- } // END public function sbp_junk_header_tags
 
 
 
 
535
 
 
536
  } // END class Speed_Booster_Pack_Core
537
-
538
  } // END if(!class_exists('Speed_Booster_Pack_Core'))
4
  Plugin Core Functions
5
  ---------------------------------------------------------------------------------------------------------*/
6
 
7
+ if ( ! class_exists( 'Speed_Booster_Pack_Core' ) ) {
8
 
9
  class Speed_Booster_Pack_Core {
10
 
11
  public function __construct() {
12
 
13
  global $sbp_options;
14
+
15
+ add_action( 'wp_enqueue_scripts', array( $this, 'sbp_no_more_fontawesome' ), 9999 );
16
  add_action( 'wp_enqueue_scripts', array( $this, 'sbp_move_scripts_to_footer' ) );
17
+ if ( ! is_admin() and isset( $sbp_options['jquery_to_footer'] ) ) {
18
  add_action( 'wp_head', array( $this, 'sbp_scripts_to_head' ) );
 
 
19
  }
20
+ add_action( 'init', array( $this, 'sbp_show_page_load_stats' ), 999 );
21
  add_action( 'after_setup_theme', array( $this, 'sbp_junk_header_tags' ) );
22
+ add_action( 'init', array( $this, 'sbp_init' ) );
23
+
24
 
25
  $this->sbp_css_optimizer(); // CSS Optimizer functions
26
 
 
 
 
27
 
28
  // Use Google Libraries
29
+ if ( ! is_admin() and isset( $sbp_options['use_google_libs'] ) ) {
30
  $this->sbp_use_google_libraries();
31
  }
32
 
33
+
 
 
 
34
 
35
  // Minifier
36
+ if ( ! is_admin() and isset( $sbp_options['minify_html_js'] ) ) {
37
  $this->sbp_minifier();
38
  }
39
 
 
40
  // Defer parsing of JavaScript
41
+ if ( ! is_admin() and isset( $sbp_options['defer_parsing'] ) ) {
42
+ add_filter( 'script_loader_tag', array( $this, 'sbp_defer_parsing_of_js' ), 10, 3 );
43
  }
44
 
45
  // Remove query strings from static resources
46
+ if ( ! is_admin() and isset( $sbp_options['query_strings'] ) ) {
47
+ add_filter( 'script_loader_src', array( $this, 'sbp_remove_query_strings' ), 15, 1 );
48
+ add_filter( 'style_loader_src', array( $this, 'sbp_remove_query_strings' ), 15, 1 );
 
 
 
49
  }
50
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
51
 
52
  // JPEG Compression filter
53
  add_filter( 'jpeg_quality', array( $this, 'filter_image_quality' ) );
54
  add_filter( 'wp_editor_set_quality', array( $this, 'filter_image_quality' ) );
55
 
56
 
57
+ /**
58
+ * @since 3.7
59
+ */
60
+ // Disable emojis
61
+ if ( ! is_admin() && isset( $sbp_options['remove_emojis'] ) ) {
62
+ add_action( 'init', array( $this, 'sbp_disable_emojis' ) );
63
+ }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
64
 
65
+ /**
66
+ * @since 3.7
67
+ */
68
+ // Disable XML-RPC
69
+ if ( ! isset( $sbp_options['disable_xmlrpc'] ) ) {
70
+ add_filter( 'xmlrpc_enabled', '__return_false' );
71
+ add_filter( 'wp_headers', array( $this, 'sbp_remove_x_pingback' ) );
72
+ add_filter( 'pings_open', '__return_false', 9999 );
73
+ }
74
 
75
+ } // END public public function __construct
 
76
 
77
 
78
+ /*--------------------------------------------------------------------------------------------------------
79
+ Init the CSS Optimizer actions
80
+ ---------------------------------------------------------------------------------------------------------*/
81
 
82
+ function sbp_init() {
 
 
 
83
 
84
+ global $sbp_options;
 
 
85
 
86
+ if ( wp_is_mobile() and isset ( $sbp_options['sbp_is_mobile'] ) ) { // disable all CSS options on mobile devices
87
+ return;
88
+ }
 
 
89
 
90
+ if ( ! is_admin() and isset( $sbp_options['sbp_css_async'] ) ) {
91
+ add_action( 'wp_print_styles', array( $this, 'sbp_print_styles' ), SBP_FOOTER );
92
+ add_action( 'wp_footer', array( $this, 'sbp_print_delayed_styles' ), SBP_FOOTER + 1 );
93
+ }
94
 
95
+ }
96
 
 
97
 
98
+ /*--------------------------------------------------------------------------------------------------------
99
+ Get image quality value if it's set. Otherwise it's set to 90
100
+ ---------------------------------------------------------------------------------------------------------*/
101
 
102
+ function filter_image_quality() {
 
 
 
 
 
 
 
 
 
 
 
 
103
 
104
+ if ( get_option( 'sbp_integer' ) ) {
105
+ $sbp_compression = get_option( 'sbp_integer' );
106
+ } else {
107
+ $sbp_compression = 75; //@since v3.7
108
+ }
109
 
110
+ return $sbp_compression;
111
+ }
112
 
 
 
 
113
 
114
+ /*--------------------------------------------------------------------------------------------------------
115
+ ACTION wp_print_styles
116
+ ---------------------------------------------------------------------------------------------------------*/
117
 
118
+ function sbp_print_styles() {
119
+ global $sbp_styles_are_async;
120
+ global $sbp_styles;
121
+ global $sbp_options;
122
 
123
+ if ( isset( $sbp_options['sbp_css_minify'] ) ) {
124
+ $minify = true;
125
+ } else {
126
+ $minify = false;
127
+ }
128
 
129
+ $sbp_styles_are_async = true;
130
 
131
+ $sbp_styles = sbp_generate_styles_list();
 
 
 
 
 
 
 
 
 
 
 
 
 
 
132
 
133
+ if ( ! isset( $sbp_options['sbp_footer_css'] ) ) {
134
 
135
+ $not_inlined = array();
 
 
136
 
137
+ foreach ( $sbp_styles as $style ) {
138
+ echo "<style type=\"text/css\" " . ( $style['media'] ? "media=\"{$style['media']}\"" : '' ) . ">";
139
+ if ( ! sbp_inline_css( $style['src'], $minify ) ) {
140
+ $not_inlined[] = $style;
141
+ }
142
+ echo "</style>";
143
+ }
144
+ if ( ! empty( $not_inlined ) ) {
145
+ foreach ( $not_inlined as $style ) {
146
+ ?>
147
+ <link rel="stylesheet" href="<?php echo $style['src'] ?>" type="text/css" <?php echo $style['media'] ? "media=\"{$style['media']}\"" : '' ?> /><?php
148
+ }
149
+ }
150
+ }
151
 
152
+ sbp_unregister_styles();
153
+ }
154
 
 
155
 
156
+ /*--------------------------------------------------------------------------------------------------------
157
+ ACTION wp_footer
158
+ ---------------------------------------------------------------------------------------------------------*/
159
 
160
+ function sbp_print_delayed_styles() {
161
+ global $sbp_styles;
162
+ global $sbp_options;
163
 
164
+ if ( isset( $sbp_options['sbp_css_minify'] ) ) {
165
+ $minify = true;
166
+ } else {
167
+ $minify = false;
168
+ }
169
 
170
+ if ( isset( $sbp_options['sbp_footer_css'] ) ) {
171
+
172
+ $not_inlined = array();
173
+ foreach ( $sbp_styles as $style ) {
174
+ echo "<style type=\"text/css\" " . ( $style['media'] ? "media=\"{$style['media']}\"" : '' ) . ">";
175
+ if ( ! sbp_inline_css( $style['src'], $minify ) ) {
176
+ $not_inlined[] = $style;
177
+ }
178
+ echo "</style>";
179
+ }
180
+ if ( ! empty( $not_inlined ) ) {
181
+ foreach ( $not_inlined as $style ) {
182
+ ?>
183
+ <link rel="stylesheet" href="<?php echo $style['src'] ?>" type="text/css" <?php echo $style['media'] ? "media=\"{$style['media']}\"" : '' ?> /><?php
184
+ }
185
+ }
186
+ }
187
+ }
188
 
 
 
 
189
 
190
+ /*--------------------------------------------------------------------------------------------------------
191
+ Moves scripts to the footer to decrease page load times, while keeping stylesheets in the header
192
+ ---------------------------------------------------------------------------------------------------------*/
193
 
194
+ function sbp_move_scripts_to_footer() {
195
 
196
+ global $sbp_options;
 
 
197
 
198
+ if ( ! is_admin() and isset( $sbp_options['jquery_to_footer'] ) ) {
 
 
199
 
200
+ remove_action( 'wp_head', 'wp_print_scripts' );
201
+ remove_action( 'wp_head', 'wp_print_head_scripts', 9 );
202
+ remove_action( 'wp_head', 'wp_enqueue_scripts', 1 );
203
 
204
+ }
 
 
205
 
206
+ } // END function sbp_move_scripts_to_footer
 
 
207
 
 
208
 
209
+ /*--------------------------------------------------------------------------------------------------------
210
+ Put scripts back to the head
211
+ ---------------------------------------------------------------------------------------------------------*/
212
 
213
+ public function sbp_scripts_to_head() {
 
 
214
 
 
 
 
215
 
216
+ if ( get_option( 'sbp_head_html_script1' ) ) {
217
+ echo get_option( 'sbp_head_html_script1' ) . "\n";
218
+ }
219
 
220
+ if ( get_option( 'sbp_head_html_script2' ) ) {
221
+ echo get_option( 'sbp_head_html_script2' ) . "\n";
222
+ }
223
 
224
+ if ( get_option( 'sbp_head_html_script3' ) ) {
225
+ echo get_option( 'sbp_head_html_script3' ) . "\n";
226
+ }
227
 
228
+ if ( get_option( 'sbp_head_html_script4' ) ) {
229
+ echo get_option( 'sbp_head_html_script4' ) . "\n";
230
+ }
231
 
232
+ /**
233
+ * Default: add jQuery to header always
234
+ *
235
+ * @since 3.7
236
+ */
237
+ global $wp_scripts;
238
+ $js_footer_exceptions1 = '';
239
+ $js_footer_exceptions2 = '';
240
+ $js_footer_exceptions3 = '';
241
+ $js_footer_exceptions4 = '';
242
+
243
+ if ( get_option( 'sbp_js_footer_exceptions1' ) ) {
244
+ $js_footer_exceptions1 = get_option( 'sbp_js_footer_exceptions1' );
245
+ }
246
 
247
+ if ( get_option( 'sbp_js_footer_exceptions2' ) ) {
248
+ $js_footer_exceptions2 = get_option( 'sbp_js_footer_exceptions2' );
249
+ }
250
 
251
+ if ( get_option( 'sbp_js_footer_exceptions3' ) ) {
252
+ $js_footer_exceptions3 = get_option( 'sbp_js_footer_exceptions3' );
253
+ }
254
 
255
+ if ( get_option( 'sbp_js_footer_exceptions4' ) ) {
256
+ $js_footer_exceptions4 = get_option( 'sbp_js_footer_exceptions4' );
257
+ }
258
 
259
+ $sbp_enq = 'enqueued';
260
+ $sbp_reg = 'registered';
261
+ $sbp_done = 'done';
262
+
263
+ /**
264
+ * Echo jQuery in header all the time, if none of the other options contain in
265
+ *
266
+ * @since 3.7
267
+ *
268
+ * New solution, going forward so not to crash so many sites anymore
269
+ *
270
+ * This should come BEFORE the fallback function, since jQuery should be ALWAYS
271
+ * the first loaded script.
272
+ *
273
+ */
274
+ if ( $js_footer_exceptions1 !== 'jquery-core' || $js_footer_exceptions2 !== 'jquery-core' || $js_footer_exceptions3 !== 'jquery-core' || $js_footer_exceptions4 !== 'jquery-core' ) {
275
+
276
+ // if the script actually exists, dequeue it and re-add it for header inclusion
277
+ $script_src = $wp_scripts->registered['jquery-core']->src;
278
+
279
+ if ( strpos( $script_src, 'wp-includes' ) == true ) { // it's a local resource, append wordpress installation URL
280
+ echo '<script type="text/javascript" src="' . get_site_url() . esc_attr( $script_src ) . '"></script>';
281
+ } else {
282
+ echo '<script type="text/javascript" src="' . esc_attr( $script_src ) . '"></script>';
283
+ }
284
+
285
+ // deregister & dequeue the script
286
+ wp_deregister_script( 'jquery-core' );
287
+ wp_dequeue_script( 'jquery-core' );
288
+ }
289
 
 
 
 
290
 
291
+ /**
292
+ * Echo the scripts in the header
293
+ *
294
+ * @since 3.7
295
+ *
296
+ * Fallback for previous plugin users
297
+ *
298
+ */
299
+ if ( array_key_exists( $js_footer_exceptions1, $wp_scripts->registered ) ) {
300
+ $script_src = '';
301
+ // if the script actually exists, dequeue it and re-add it for header inclusion
302
+ $script_src = $wp_scripts->registered[ $js_footer_exceptions1 ]->src;
303
+
304
+ if ( strpos( $script_src, 'wp-includes' ) == true ) { // it's a local resource, append wordpress installation URL
305
+ echo '<script type="text/javascript" src="' . esc_attr( $script_src ) . '"></script>';
306
+ } else {
307
+ echo '<script type="text/javascript" src="' . esc_attr( $script_src ) . '"></script>';
308
+ }
309
+ }
310
 
311
+ if ( array_key_exists( $js_footer_exceptions2, $wp_scripts->registered ) ) {
312
+ $script_src = '';
313
+ // if the script actually exists, dequeue it and re-add it for header inclusion
314
+ $script_src = $wp_scripts->registered[ $js_footer_exceptions2 ]->src;
315
 
316
+ if ( strpos( $script_src, 'wp-includes' ) == true ) {
317
+ echo '<script type="text/javascript" src="' . get_site_url() . esc_attr( $script_src ) . '"></script>';
318
+ } else {
319
+ echo '<script type="text/javascript" src="' . esc_attr( $script_src ) . '"></script>';
320
+ }
321
+ }
322
 
323
+ if ( array_key_exists( $js_footer_exceptions3, $wp_scripts->registered ) ) {
324
+ $script_src = '';
325
+ // if the script actually exists, dequeue it and re-add it for header inclusion
326
+ $script_src = $wp_scripts->registered[ $js_footer_exceptions3 ]->src;
327
 
328
+ if ( strpos( $script_src, 'wp-includes' ) == true ) {
329
+ echo '<script type="text/javascript" src="' . get_site_url() . esc_attr( $script_src ) . '"></script>';
330
+ } else {
331
+ echo '<script type="text/javascript" src="' . esc_attr( $script_src ) . '"></script>';
332
+ }
333
 
334
+ }
 
335
 
336
+ if ( array_key_exists( $js_footer_exceptions4, $wp_scripts->registered ) ) {
337
+ $script_src = '';
338
+ // if the script actually exists, dequeue it and re-add it for header inclusion
339
+ $script_src = $wp_scripts->registered[ $js_footer_exceptions4 ]->src;
340
 
341
+ if ( strpos( $script_src, 'wp-includes' ) == true ) { // it's a local resource, append wordpress installation URL
342
+ echo '<script type="text/javascript" src="' . get_site_url() . esc_attr( $script_src ) . '"></script>';
343
+ } else {
344
+ echo '<script type="text/javascript" src="' . esc_attr( $script_src ) . '"></script>';
345
+ }
346
+ }
347
 
 
 
 
348
 
349
+ /**
350
+ * De-register the scripts from other parts of the site since they're already echo-ed in the header
351
+ */
352
+ /*--------------------------------------------------------------------------------------------------------*/
353
+ if ( ! empty( $sbp_js_footer_exceptions1 ) and wp_script_is( $js_footer_exceptions1, $sbp_enq ) ) {
354
+ wp_dequeue_script( $js_footer_exceptions1 );
355
+ }
356
+ if ( ! empty( $sbp_js_footer_exceptions2 ) and wp_script_is( $js_footer_exceptions2, $sbp_enq ) ) {
357
+ wp_dequeue_script( $js_footer_exceptions2 );
358
+ }
359
+ if ( ! empty( $sbp_js_footer_exceptions3 ) and wp_script_is( $js_footer_exceptions3, $sbp_enq ) ) {
360
+ wp_dequeue_script( $sbp_js_footer_exceptions3 );
361
+ }
362
+ if ( ! empty( $sbp_js_footer_exceptions4 ) and wp_script_is( $js_footer_exceptions4, $sbp_enq ) ) {
363
+ wp_dequeue_script( $sbp_js_footer_exceptions4 );
364
+ }
365
+ /*--------------------------------------------------------------------------------------------------------*/
366
+ if ( ! empty( $js_footer_exceptions1 ) and wp_script_is( $js_footer_exceptions1, $sbp_reg ) ) {
367
+ wp_deregister_script( $js_footer_exceptions1 );
368
+ }
369
+ if ( ! empty( $js_footer_exceptions2 ) and wp_script_is( $js_footer_exceptions2, $sbp_reg ) ) {
370
+ wp_deregister_script( $js_footer_exceptions2 );
371
+ }
372
+ if ( ! empty( $js_footer_exceptions3 ) and wp_script_is( $js_footer_exceptions3, $sbp_reg ) ) {
373
+ wp_deregister_script( $js_footer_exceptions3 );
374
+ }
375
+ if ( ! empty( $js_footer_exceptions4 ) and wp_script_is( $js_footer_exceptions4, $sbp_reg ) ) {
376
+ wp_deregister_script( $js_footer_exceptions4 );
377
+ }
378
+ /*--------------------------------------------------------------------------------------------------------*/
379
+ if ( ! empty( $js_footer_exceptions1 ) and wp_script_is( $js_footer_exceptions1, $sbp_done ) ) {
380
+ wp_deregister_script( $js_footer_exceptions1 );
381
+ }
382
+ if ( ! empty( $js_footer_exceptions2 ) and wp_script_is( $js_footer_exceptions2, $sbp_done ) ) {
383
+ wp_deregister_script( $js_footer_exceptions2 );
384
+ }
385
+ if ( ! empty( $js_footer_exceptions3 ) and wp_script_is( $js_footer_exceptions3, $sbp_done ) ) {
386
+ wp_deregister_script( $js_footer_exceptions3 );
387
+ }
388
+ if ( ! empty( $js_footer_exceptions4 ) and wp_script_is( $js_footer_exceptions4, $sbp_done ) ) {
389
+ wp_deregister_script( $js_footer_exceptions4 );
390
+ }
391
 
392
+ }
393
 
394
 
395
+ /*--------------------------------------------------------------------------------------------------------
396
+ Show Number of Queries and Page Load Time
397
+ ---------------------------------------------------------------------------------------------------------*/
398
 
399
+ function sbp_show_page_load_stats() {
400
+ $timer_stop = timer_stop( 0, 2 ); // to display milliseconds instead of seconds usethe following: $timer_stop = 1000 * ( float ) timer_stop( 0, 4 );
401
+ $get_num_queries = get_num_queries();
402
+ update_option( 'sbp_page_time', $timer_stop );
403
+ update_option( 'sbp_page_queries', $get_num_queries );
404
+ }
405
 
406
 
407
+ /*--------------------------------------------------------------------------------------------------------
408
+ Use Google Libraries
409
+ ---------------------------------------------------------------------------------------------------------*/
410
 
411
+ function sbp_use_google_libraries() {
412
 
413
+ require_once( SPEED_BOOSTER_PACK_PATH . 'inc/use-google-libraries.php' );
414
 
415
+ if ( class_exists( 'SBP_GoogleLibraries' ) ) {
416
+ SBP_GoogleLibraries::configure_plugin();
417
 
418
+ }
419
 
420
+ } // End function sbp_use_google_libraries()
421
 
422
 
 
 
 
423
 
 
424
 
425
+ /*--------------------------------------------------------------------------------------------------------
426
+ Minify HTML and Javascripts
427
+ ---------------------------------------------------------------------------------------------------------*/
 
428
 
429
+ function sbp_minifier() {
430
 
431
+ require_once( SPEED_BOOSTER_PACK_PATH . 'inc/sbp-minifier.php' );
432
+ } // End function sbp_minifier()
433
 
 
 
 
434
 
435
+ /*--------------------------------------------------------------------------------------------------------
436
+ CSS Optimizer
437
+ ---------------------------------------------------------------------------------------------------------*/
438
 
439
+ function sbp_css_optimizer() {
 
440
 
441
+ require_once( SPEED_BOOSTER_PACK_PATH . 'inc/css-optimizer.php' );
442
 
443
+ } // End function sbp_css_optimizer()
 
 
444
 
445
+ /*--------------------------------------------------------------------------------------------------------
446
+ Defer parsing of JavaScript and exclusion files
447
+ ---------------------------------------------------------------------------------------------------------*/
448
 
449
+ function sbp_defer_parsing_of_js( $tag, $handle, $src ) {
450
 
451
+ $defer_exclude1 = '';
452
+ $defer_exclude2 = '';
453
+ $defer_exclude3 = '';
454
+ $defer_exclude4 = '';
455
 
456
+ if ( get_option( 'sbp_defer_exceptions1' ) ) {
457
+ $defer_exclude1 = get_option( 'sbp_defer_exceptions1' );
458
+ }
459
 
460
+ if ( get_option( 'sbp_defer_exceptions2' ) ) {
461
+ $defer_exclude2 = get_option( 'sbp_defer_exceptions2' );
462
+ }
463
 
464
+ if ( get_option( 'sbp_defer_exceptions3' ) ) {
465
+ $defer_exclude3 = get_option( 'sbp_defer_exceptions3' );
466
+ }
467
 
468
+ if ( get_option( 'sbp_defer_exceptions4' ) ) {
469
+ $defer_exclude4 = get_option( 'sbp_defer_exceptions4' );
470
+ }
471
 
472
+ $array_with_values[] = $defer_exclude1;
473
+ $array_with_values[] = $defer_exclude2;
474
+ $array_with_values[] = $defer_exclude3;
475
+ $array_with_values[] = $defer_exclude4;
476
 
477
+ $array_with_values = apply_filters( 'sbp_exclude_defer_scripts', $array_with_values ); // possibility of extending this via filters
478
+ $array_with_values = array_filter( $array_with_values ); // remove empty entries
 
479
 
 
 
 
480
 
481
+ if ( ! in_array( $handle, $array_with_values ) ) {
482
+ return '<script src="' . $src . '" defer="defer" type="text/javascript"></script>' . "\n";
483
+ }
484
 
485
+ return $tag;
 
 
486
 
487
+ } // END function sbp_defer_parsing_of_js
488
 
 
 
 
489
 
490
+ /*--------------------------------------------------------------------------------------------------------
491
+ Remove query strings from static resources
492
+ ---------------------------------------------------------------------------------------------------------*/
493
 
494
+ function sbp_remove_query_strings( $src ) { // remove "?ver" string
 
 
495
 
496
+ $output = preg_split( "/(\?rev|&ver|\?ver)/", $src );
 
 
497
 
498
+ return $output[0];
499
 
500
+ }
501
 
502
+ /*--------------------------------------------------------------------------------------------------------
503
+ Disable Emoji
504
+ ---------------------------------------------------------------------------------------------------------*/
505
+ function sbp_disable_emojis() {
506
+ remove_action( 'wp_head', 'print_emoji_detection_script', 7 );
507
+ remove_action( 'admin_print_scripts', 'print_emoji_detection_script' );
508
+ remove_action( 'wp_print_styles', 'print_emoji_styles' );
509
+ remove_action( 'admin_print_styles', 'print_emoji_styles' );
510
+ remove_filter( 'the_content_feed', 'wp_staticize_emoji' );
511
+ remove_filter( 'comment_text_rss', 'wp_staticize_emoji' );
512
+ remove_filter( 'wp_mail', 'wp_staticize_emoji_for_email' );
513
 
514
+ add_filter( 'tiny_mce_plugins', array( $this, 'sbp_disable_emojis_tinymce' ) );
515
+ add_filter( 'wp_resource_hints', array( $this, 'sbp_disable_emojis_dns_prefetch' ), 10, 2 );
516
+ }
517
 
518
+ function sbp_disable_emojis_tinymce( $plugins ) {
519
+ if ( is_array( $plugins ) ) {
520
+ return array_diff( $plugins, array( 'wpemoji' ) );
521
+ } else {
522
+ return array();
523
+ }
524
+ }
525
 
526
+ function sbp_disable_emojis_dns_prefetch( $urls, $relation_type ) {
527
+ if ( 'dns-prefetch' == $relation_type ) {
528
+ $emoji_svg_url = apply_filters( 'emoji_svg_url', 'https://s.w.org/images/core/emoji/2.2.1/svg/' );
529
+ $urls = array_diff( $urls, array( $emoji_svg_url ) );
530
+ }
531
 
532
+ return $urls;
533
+ }
 
 
534
 
535
+ /*--------------------------------------------------------------------------------------------------------
536
+ Disable XML-RPC
537
+ ---------------------------------------------------------------------------------------------------------*/
538
 
539
+ function sbp_remove_x_pingback( $headers ) {
540
+ unset( $headers['X-Pingback'] );
 
541
 
542
+ return $headers;
543
+ }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
544
 
545
+ /*--------------------------------------------------------------------------------------------------------
546
+ Dequeue extra Font Awesome stylesheet
547
+ ---------------------------------------------------------------------------------------------------------*/
548
 
549
+ function sbp_no_more_fontawesome() {
550
+ global $wp_styles;
551
+ global $sbp_options;
552
 
553
+ // we'll use preg_match to find only the following patterns as exact matches, to prevent other plugin stylesheets that contain font-awesome expression to be also dequeued
554
+ $patterns = array(
555
+ 'font-awesome.css',
556
+ 'font-awesome.min.css',
557
+ );
558
+ // multiple patterns hook
559
+ $regex = '/(' . implode( '|', $patterns ) . ')/i';
560
+ foreach ( $wp_styles->registered as $registered ) {
561
+ if ( ! is_admin() and preg_match( $regex, $registered->src ) and isset( $sbp_options['font_awesome'] ) ) {
562
+ wp_dequeue_style( $registered->handle );
563
+ // FA was dequeued, so here we need to enqueue it again from CDN
564
+ wp_enqueue_style( 'font-awesome', '//maxcdn.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css' );
565
+ } // END if( preg_match...
566
+ } // END foreach
567
+ } // End function dfa_no_more_fontawesome
568
+
569
+
570
+ /*--------------------------------------------------------------------------------------------------------
571
+ Remove junk header tags
572
+ ---------------------------------------------------------------------------------------------------------*/
573
+
574
+ public function sbp_junk_header_tags() {
575
 
576
+ global $sbp_options;
577
 
578
+ // Remove Adjacent Posts links PREV/NEXT
579
+ if ( isset( $sbp_options['remove_adjacent'] ) ) {
580
+ remove_action( 'wp_head', 'adjacent_posts_rel_link_wp_head' );
581
+ }
582
 
583
+ // Remove Windows Live Writer Manifest Link
584
+ if ( isset( $sbp_options['wml_link'] ) ) {
585
+ remove_action( 'wp_head', 'wlwmanifest_link' );
586
+ }
587
 
588
+ // Remove RSD (Really Simple Discovery) Link
589
+ if ( isset( $sbp_options['rsd_link'] ) ) {
590
+ remove_action( 'wp_head', 'rsd_link' );
591
+ }
592
 
593
+ // Remove WordPress Shortlinks from WP Head
594
+ if ( isset( $sbp_options['remove_wsl'] ) ) {
595
+ remove_action( 'wp_head', 'wp_shortlink_wp_head' );
596
+ }
597
 
598
+ // Remove WP Generator/Version - for security reasons and cleaning the header
599
+ if ( isset( $sbp_options['wp_generator'] ) ) {
600
+ remove_action( 'wp_head', 'wp_generator' );
601
+ }
 
602
 
603
+ // Remove all feeds
604
+ if ( isset( $sbp_options['remove_all_feeds'] ) ) {
605
+ remove_action( 'wp_head', 'feed_links_extra', 3 ); // remove the feed links from the extra feeds such as category feeds
606
+ remove_action( 'wp_head', 'feed_links', 2 ); // remove the feed links from the general feeds: Post and Comment Feed
607
+ }
608
 
609
+ } // END public function sbp_junk_header_tags
610
  } // END class Speed_Booster_Pack_Core
 
611
  } // END if(!class_exists('Speed_Booster_Pack_Core'))
inc/crazy-lazy.class.php DELETED
@@ -1,172 +0,0 @@
1
- <?php
2
- /**
3
- * CrazyLazy plugin class
4
- *
5
- * @package CrazyLazy
6
- */
7
-
8
- /* Quit */
9
- defined( 'ABSPATH' ) or exit;
10
-
11
-
12
- /**
13
- * Class CrazyLazy
14
- */
15
- final class CrazyLazy {
16
-
17
-
18
- /**
19
- * Class instance
20
- *
21
- * @since 0.0.1
22
- * @change 0.0.1
23
- */
24
- public static function instance() {
25
- new self();
26
- }
27
-
28
-
29
- /**
30
- * Class constructor
31
- *
32
- * @since 0.0.1
33
- * @change 0.0.9
34
- */
35
- public function __construct() {
36
- /* Go home */
37
- if ( is_feed() || ( defined( 'DOING_AUTOSAVE' ) && DOING_AUTOSAVE ) || ( defined( 'DOING_CRON' ) && DOING_CRON ) || ( defined( 'DOING_AJAX' ) && DOING_AJAX ) || ( defined( 'XMLRPC_REQUEST' ) && XMLRPC_REQUEST ) ) {
38
- return;
39
- }
40
-
41
- /* Hooks */
42
- add_filter(
43
- 'the_content',
44
- array(
45
- __CLASS__,
46
- 'prepare_images',
47
- ),
48
- 12 /* Important for galleries */
49
- );
50
- add_filter(
51
- 'post_thumbnail_html',
52
- array(
53
- __CLASS__,
54
- 'prepare_images',
55
- )
56
- );
57
- add_action(
58
- 'wp_enqueue_scripts',
59
- array(
60
- __CLASS__,
61
- 'print_scripts',
62
- )
63
- );
64
- }
65
-
66
-
67
- /**
68
- * Prepare content images for Crazy Lazy usage
69
- *
70
- * @since 0.0.1
71
- * @change 1.0.0
72
- *
73
- * @param string $content The original post content.
74
- *
75
- * @return string The modified post content.
76
- */
77
- public static function prepare_images( $content ) {
78
- /* No lazy images? */
79
- if ( strpos( $content, '-image' ) === false ) {
80
- return $content;
81
- }
82
-
83
- /* Replace images */
84
- return preg_replace_callback(
85
- '/(?P<all> (?# match the whole img tag )
86
- <img(?P<before>[^>]*) (?# the opening of the img and some optional attributes )
87
- ( (?# match a class attribute followed by some optional ones and the src attribute )
88
- class=["\'](?P<class1>.*?(?:wp-image-|wp-post-image)[^>"\']*)["\']
89
- (?P<between1>[^>]*)
90
- src=["\'](?P<src1>[^>"\']*)["\']
91
- | (?# match same as before, but with the src attribute before the class attribute )
92
- src=["\'](?P<src2>[^>"\']*)["\']
93
- (?P<between2>[^>]*)
94
- class=["\'](?P<class2>.*?(?:wp-image-|wp-post-image)[^>"\']*)["\']
95
- )
96
- (?P<after>[^>]*) (?# match any additional optional attributes )
97
- (?P<closing>\/?)> (?# match the closing of the img tag with or without a self closing slash )
98
- )/x',
99
- array( 'CrazyLazy', 'replace_images' ),
100
- $content
101
- );
102
- }
103
-
104
- /**
105
- * The callback function for the preg_match_callback to modify the img tags.
106
- *
107
- * @since 1.0.0
108
- *
109
- * @param array $matches The regex matches.
110
- *
111
- * @return string The modified content string.
112
- */
113
- public static function replace_images( $matches ) {
114
- /* Empty gif */
115
- $null = 'data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==';
116
- // Return unmodified image if the "data skip" attribute was found or the image has already been processed.
117
- if ( false !== strpos( $matches['all'], 'data-crazy-lazy="exclude"' ) || false !== strpos( $matches['class1'] . $matches['class2'], 'crazy_lazy' ) ) {
118
- return $matches['all'];
119
- } else {
120
- return '<img ' . $matches['before']
121
- . ' style="display:none" '
122
- . ' class="crazy_lazy ' . $matches['class1'] . $matches['class2'] . '" src="' . $null . '" '
123
- . $matches['between1'] . $matches['between2']
124
- . ' data-src="' . $matches['src1'] . $matches['src2'] . '" '
125
- . $matches['after']
126
- . $matches['closing'] . '><noscript>' . $matches['all'] . '</noscript>';
127
- }
128
- }
129
-
130
-
131
- /**
132
- * Print lazy load scripts in footer
133
- *
134
- * @since 0.0.1
135
- * @change 0.0.6
136
- */
137
- public static function print_scripts() {
138
- /* Globals */
139
- global $wp_scripts;
140
-
141
- /* Check for jQuery */
142
- if ( ! empty( $wp_scripts ) && (bool) $wp_scripts->query( 'jquery' ) ) { /* hot fix for buggy wp_script_is() */
143
- self::_print_jquery_lazyload();
144
- } else {
145
- self::_print_javascript_lazyload();
146
- }
147
- }
148
-
149
-
150
- /**
151
- * Call unveil lazy load jQuery plugin
152
- *
153
- * @since 0.0.5
154
- * @change 0.0.9
155
- */
156
- private static function _print_jquery_lazyload() {
157
- // wp_enqueue_script( 'unveil.js', plugins_url( '/js/jquery.unveil.min.js', CRAZY_LAZY_BASE ), array( 'jquery' ), '', true );
158
- wp_enqueue_script( 'unveil.js', plugin_dir_url( __FILE__ ) . 'js/jquery.unveil.min.js', array( 'jquery' ), SPEED_BOOSTER_PACK_VERSION, true );
159
- }
160
-
161
-
162
- /**
163
- * Call pure javascript lazyload.js
164
- *
165
- * @since 0.0.5
166
- * @change 0.0.9
167
- */
168
- private static function _print_javascript_lazyload() {
169
- // wp_enqueue_script( 'lazyload.js', plugins_url( '/js/lazyload.min.js', CRAZY_LAZY_BASE ), array(), '', true );
170
- wp_enqueue_script( 'lazyload.js', plugin_dir_url( __FILE__ ) . 'js/lazyload.min.js', array( 'jquery' ), SPEED_BOOSTER_PACK_VERSION, true );
171
- }
172
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
inc/crazy-lazy.php DELETED
@@ -1,37 +0,0 @@
1
- <?php
2
-
3
- /*
4
- Copyright (C) 2013-2015 Sergej Müller & https://github.com/pluginkollektiv/crazy-lazy
5
-
6
- This program is free software; you can redistribute it and/or modify
7
- it under the terms of the GNU General Public License as published by
8
- the Free Software Foundation; either version 2 of the License, or
9
- (at your option) any later version.
10
-
11
- This program is distributed in the hope that it will be useful,
12
- but WITHOUT ANY WARRANTY; without even the implied warranty of
13
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14
- GNU General Public License for more details.
15
-
16
- You should have received a copy of the GNU General Public License along
17
- with this program; if not, write to the Free Software Foundation, Inc.,
18
- 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
19
- */
20
-
21
-
22
- /* Quit */
23
- defined( 'ABSPATH' ) || exit;
24
-
25
-
26
- /* FE only */
27
- if ( is_admin() ) {
28
- return;
29
- }
30
-
31
-
32
- /* Fire! */
33
- define( 'CRAZY_LAZY_BASE', plugin_basename( __FILE__ ) );
34
-
35
- require_once( SPEED_BOOSTER_PACK_PATH . 'inc/crazy-lazy.class.php' );
36
-
37
- add_action( 'wp', array( 'CrazyLazy', 'instance' ) );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
inc/css-optimizer.php CHANGED
@@ -15,15 +15,16 @@ function sbp_generate_styles_list() {
15
  // load excluded stylesheet in render-blocking manner
16
  } else {
17
  $list[] = array(
18
- 'src' => $wp_styles->registered[$style]->src,
19
- 'media' => $wp_styles->registered[$style]->args
20
- );
21
  }
22
  }
23
  }
 
24
  return $list;
25
 
26
- } // END function sbp_generate_styles_list
27
 
28
 
29
  /*--------------------------------------------------------------------------------------------------------
@@ -36,8 +37,8 @@ function sbp_unregister_styles() {
36
 
37
  if ( isset( $wp_styles->queue ) && is_array( $wp_styles->queue ) ) {
38
 
39
- foreach ( $wp_styles->queue as $style ){
40
- if ( is_css_excluded( $style )) {
41
  continue;
42
  }
43
 
@@ -46,7 +47,7 @@ function sbp_unregister_styles() {
46
  }
47
  }
48
 
49
- } // END function sbp_unregister_styles
50
 
51
 
52
  /*--------------------------------------------------------------------------------------------------------
@@ -55,30 +56,31 @@ function sbp_unregister_styles() {
55
 
56
  function sbp_inline_css( $url, $minify = true ) {
57
 
58
- $base_url = get_bloginfo( 'wpurl' );
59
- $path = false;
60
 
61
- if ( strpos( $url, $base_url ) !== FALSE ) {
62
 
63
- $path = str_replace( $base_url,rtrim(ABSPATH,'/'),$url );
64
 
65
- } elseif ( $url[0]=='/' && $url[1]!='/' ) {
66
 
67
- $path = rtrim( ABSPATH,'/' ).$url;
68
- $url = $base_url.$url;
69
  }
70
 
71
- if ( $path && file_exists( $path ) ){
72
 
73
  $css = file_get_contents( $path );
74
 
75
- if ( $minify ){
76
  $css = sbp_minify_css( $css );
77
  }
78
 
79
  $css = sbp_rebuilding_css_urls( $css, $url );
80
 
81
  echo $css;
 
82
  return true;
83
 
84
  } else {
@@ -86,16 +88,22 @@ function sbp_inline_css( $url, $minify = true ) {
86
  return false;
87
  }
88
 
89
- } // END function sbp_inline_css
90
 
91
 
92
  /*--------------------------------------------------------------------------------------------------------
93
  CSS OPTIMIZER - Rebuilding CSS URLs
94
  ---------------------------------------------------------------------------------------------------------*/
95
 
96
- function sbp_rebuilding_css_urls($css,$url){
97
- $css_dir = substr($url,0,strrpos($url,'/'));
98
- $css = preg_replace("/url\((?!data:)['\"]?([^\/][^'\"\)]*)['\"]?\)/i","url({$css_dir}/$1)",$css);
 
 
 
 
 
 
99
 
100
  return $css;
101
  }
@@ -109,18 +117,18 @@ function sbp_rebuilding_css_urls($css,$url){
109
  function sbp_minify_css( $css ) {
110
 
111
  $css = sbp_remove_multiline_comments( $css );
112
- $css = str_replace(array("\t","\n","\r"),' ',$css);
113
  $cnt = 1;
114
 
115
- while ($cnt>0) {
116
- $css = str_replace(' ',' ',$css,$cnt);
117
  }
118
 
119
- $css = str_replace(array(' {','{ '),'{',$css);
120
- $css = str_replace(array(' }','} ',';}'),'}',$css);
121
- $css = str_replace(': ',':',$css);
122
- $css = str_replace('; ',';',$css);
123
- $css = str_replace(', ',',',$css);
124
 
125
  return $css;
126
  }
@@ -130,33 +138,35 @@ function sbp_minify_css( $css ) {
130
  CSS OPTIMIZER - Remove multi-line comments from CSS
131
  ---------------------------------------------------------------------------------------------------------*/
132
 
133
- function sbp_remove_multiline_comments( $code,$method=0 ) {
134
 
135
  switch ( $method ) {
136
- case 1:{
 
137
 
138
- $code = preg_replace( '/\s*(?!<\")\/\*[^\*]+\*\/(?!\")\s*/' , '' , $code );
139
- break;
140
- }
141
 
142
  case 0:
143
 
144
- default :{
 
145
 
146
- $open_pos = strpos($code,'/*');
147
- while ( $open_pos !== FALSE ){
148
- $close_pos = strpos($code,'*/',$open_pos)+2;
149
- if ($close_pos){
150
- $code = substr($code,0,$open_pos) . substr($code,$close_pos);
151
- } else {
152
- $code = substr($code,0,$open_pos);
 
 
 
153
  }
154
 
155
- $open_pos = strpos($code,'/*',$open_pos);
156
  }
157
-
158
- break;
159
- }
160
  }
161
 
162
  return $code;
@@ -169,15 +179,29 @@ function sbp_remove_multiline_comments( $code,$method=0 ) {
169
 
170
  function sbp_style_exceptions() {
171
 
172
- $array = explode("\n",get_option( 'sbp_css_exceptions' ));
 
 
 
 
 
 
 
 
 
 
173
  $css_exceptions = array();
174
- foreach ($array as $key=>$ex) {
175
- if (trim($ex)!=''){
176
- $css_exceptions[$key] = trim($ex);
 
177
  }
178
  }
179
 
180
- return $css_exceptions;
 
 
 
181
  }
182
 
183
 
@@ -189,13 +213,13 @@ function is_css_excluded( $file ) {
189
  global $wp_styles;
190
  $css_exceptions = sbp_style_exceptions();
191
 
192
- if( is_string( $file ) && isset( $wp_styles->registered[$file] ) ) {
193
  $filename = $file;
194
- $file = $wp_styles->registered[$file];
195
  }
196
 
197
- foreach ( $css_exceptions as $ex ){
198
- if ( $file->handle==$ex || (strpos($ex,'.')!==FALSE && strpos($file->src,$ex)!==FALSE) ){
199
  return true;
200
  }
201
  }
15
  // load excluded stylesheet in render-blocking manner
16
  } else {
17
  $list[] = array(
18
+ 'src' => $wp_styles->registered[ $style ]->src,
19
+ 'media' => $wp_styles->registered[ $style ]->args,
20
+ );
21
  }
22
  }
23
  }
24
+
25
  return $list;
26
 
27
+ } // END function sbp_generate_styles_list
28
 
29
 
30
  /*--------------------------------------------------------------------------------------------------------
37
 
38
  if ( isset( $wp_styles->queue ) && is_array( $wp_styles->queue ) ) {
39
 
40
+ foreach ( $wp_styles->queue as $style ) {
41
+ if ( is_css_excluded( $style ) ) {
42
  continue;
43
  }
44
 
47
  }
48
  }
49
 
50
+ } // END function sbp_unregister_styles
51
 
52
 
53
  /*--------------------------------------------------------------------------------------------------------
56
 
57
  function sbp_inline_css( $url, $minify = true ) {
58
 
59
+ $base_url = get_bloginfo( 'wpurl' );
60
+ $path = false;
61
 
62
+ if ( strpos( $url, $base_url ) !== false ) {
63
 
64
+ $path = str_replace( $base_url, rtrim( ABSPATH, '/' ), $url );
65
 
66
+ } elseif ( $url[0] == '/' && $url[1] != '/' ) {
67
 
68
+ $path = rtrim( ABSPATH, '/' ) . $url;
69
+ $url = $base_url . $url;
70
  }
71
 
72
+ if ( $path && file_exists( $path ) ) {
73
 
74
  $css = file_get_contents( $path );
75
 
76
+ if ( $minify ) {
77
  $css = sbp_minify_css( $css );
78
  }
79
 
80
  $css = sbp_rebuilding_css_urls( $css, $url );
81
 
82
  echo $css;
83
+
84
  return true;
85
 
86
  } else {
88
  return false;
89
  }
90
 
91
+ } // END function sbp_inline_css
92
 
93
 
94
  /*--------------------------------------------------------------------------------------------------------
95
  CSS OPTIMIZER - Rebuilding CSS URLs
96
  ---------------------------------------------------------------------------------------------------------*/
97
 
98
+ function sbp_rebuilding_css_urls( $css, $url ) {
99
+ $css_dir = substr( $url, 0, strrpos( $url, '/' ) );
100
+
101
+ // old regex expresison
102
+ //$css = preg_replace( "/url\((?!data:)['\"]?([^\/][^'\"\)]*)['\"]?\)/i", "url({$css_dir}/$1)", $css );
103
+
104
+ // new regex expression
105
+ $css = preg_replace( "/url(?!\(['\"]?(data:|http:))\(['\"]?([^\/][^'\"\)]*)['\"]?\)/i", "url({$css_dir}/$2)", $css );
106
+
107
 
108
  return $css;
109
  }
117
  function sbp_minify_css( $css ) {
118
 
119
  $css = sbp_remove_multiline_comments( $css );
120
+ $css = str_replace( array( "\t", "\n", "\r" ), ' ', $css );
121
  $cnt = 1;
122
 
123
+ while ( $cnt > 0 ) {
124
+ $css = str_replace( ' ', ' ', $css, $cnt );
125
  }
126
 
127
+ $css = str_replace( array( ' {', '{ ' ), '{', $css );
128
+ $css = str_replace( array( ' }', '} ', ';}' ), '}', $css );
129
+ $css = str_replace( ': ', ':', $css );
130
+ $css = str_replace( '; ', ';', $css );
131
+ $css = str_replace( ', ', ',', $css );
132
 
133
  return $css;
134
  }
138
  CSS OPTIMIZER - Remove multi-line comments from CSS
139
  ---------------------------------------------------------------------------------------------------------*/
140
 
141
+ function sbp_remove_multiline_comments( $code, $method = 0 ) {
142
 
143
  switch ( $method ) {
144
+ case 1:
145
+ {
146
 
147
+ $code = preg_replace( '/\s*(?!<\")\/\*[^\*]+\*\/(?!\")\s*/', '', $code );
148
+ break;
149
+ }
150
 
151
  case 0:
152
 
153
+ default :
154
+ {
155
 
156
+ $open_pos = strpos( $code, '/*' );
157
+ while ( $open_pos !== false ) {
158
+ $close_pos = strpos( $code, '*/', $open_pos ) + 2;
159
+ if ( $close_pos ) {
160
+ $code = substr( $code, 0, $open_pos ) . substr( $code, $close_pos );
161
+ } else {
162
+ $code = substr( $code, 0, $open_pos );
163
+ }
164
+
165
+ $open_pos = strpos( $code, '/*', $open_pos );
166
  }
167
 
168
+ break;
169
  }
 
 
 
170
  }
171
 
172
  return $code;
179
 
180
  function sbp_style_exceptions() {
181
 
182
+ /**
183
+ * Never include these CSS handles/files
184
+ *
185
+ * @since 3.7
186
+ */
187
+ $default = array(
188
+ 'admin-bar',
189
+ 'dashicons',
190
+ );
191
+
192
+ $array = explode( "\n", get_option( 'sbp_css_exceptions' ) );
193
  $css_exceptions = array();
194
+ foreach ( $array as $key => $ex ) {
195
+ if ( trim( $ex ) != '' ) {
196
+ $css_exceptions[ $key ] = trim( $ex );
197
+
198
  }
199
  }
200
 
201
+ // merge defaults with our actual exceptions
202
+ $css_exceptions = array_merge( $css_exceptions, $default );
203
+
204
+ return (array) $css_exceptions;
205
  }
206
 
207
 
213
  global $wp_styles;
214
  $css_exceptions = sbp_style_exceptions();
215
 
216
+ if ( is_string( $file ) && isset( $wp_styles->registered[ $file ] ) ) {
217
  $filename = $file;
218
+ $file = $wp_styles->registered[ $file ];
219
  }
220
 
221
+ foreach ( $css_exceptions as $ex ) {
222
+ if ( $file->handle == $ex || ( strpos( $ex, '.' ) !== false && strpos( $file->src, $ex ) !== false ) ) {
223
  return true;
224
  }
225
  }
inc/images/icon-128x128.jpg ADDED
Binary file
inc/images/icon-16x16.png ADDED
Binary file
inc/js/admin-scripts.js ADDED
@@ -0,0 +1,100 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /**
2
+ * The contents of this script only gets loaded on the plugin page
3
+ */
4
+ (function( $ ) {
5
+
6
+ 'use strict';
7
+
8
+ /**
9
+ * Function used to handle admin UI postboxes
10
+ */
11
+ function admin_postboxes() {
12
+
13
+ postboxes.add_postbox_toggles( pagenow );
14
+
15
+ // set cursor to pointer
16
+ $( '.postbox .hndle' ).css( 'cursor', 'pointer' );
17
+ }
18
+
19
+ /**
20
+ * Function used for the image compression slider under "Image Optimization"
21
+ */
22
+ function admin_jquery_sliders() {
23
+
24
+ var slider_selector = ".sbp-slider";
25
+ var slider_amount = ".sbp-amount";
26
+ var slider_integer = "#sbp_integer";
27
+
28
+ if ( $( slider_selector ).length > 0 ) {
29
+
30
+ $( slider_selector ).slider( {
31
+ value: jpegCompression,
32
+ min: 0,
33
+ max: 100,
34
+ step: 1,
35
+ slide: function( event, ui ) {
36
+ jQuery( slider_amount ).val( ui.value );
37
+ jQuery( slider_integer ).val( ui.value );
38
+ }
39
+ } );
40
+
41
+ $( slider_amount ).val( $( slider_selector ).slider( "value" ) );
42
+ }
43
+ }
44
+
45
+ /**
46
+ * Handle UI tab switching via jQuery instead of relying on CSS only
47
+ */
48
+ function admin_tab_switching() {
49
+
50
+ var nav_tab_selector = '.nav-tab-wrapper a';
51
+
52
+ /**
53
+ * Default tab handling
54
+ */
55
+
56
+ // make the first tab active by default
57
+ $( nav_tab_selector + ':first' ).addClass( 'nav-tab-active' );
58
+
59
+ // get the first tab href
60
+ var initial_tab_href = $( nav_tab_selector + ':first' ).attr( 'href' );
61
+
62
+ // make all the tabs, except the first one hidden
63
+ $( '.sb-pack-tab' ).each( function( index, value ) {
64
+ if ( '#' + $( this ).attr( 'id' ) !== initial_tab_href ) {
65
+ $( this ).hide();
66
+ }
67
+ } );
68
+
69
+ /**
70
+ * Listen for click events on nav-tab links
71
+ */
72
+ $( nav_tab_selector ).click( function( event ) {
73
+
74
+ $( nav_tab_selector ).removeClass( 'nav-tab-active' ); // remove class from previous selector
75
+ $( this ).addClass( 'nav-tab-active' ).blur(); // add class to currently clicked selector
76
+
77
+ var clicked_tab = $( this ).attr( 'href' );
78
+
79
+ $( '.sb-pack-tab' ).each( function( index, value ) {
80
+ if ( '#' + $( this ).attr( 'id' ) !== clicked_tab ) {
81
+ $( this ).hide();
82
+ }
83
+
84
+ $( clicked_tab ).fadeIn();
85
+
86
+ } );
87
+
88
+ // prevent default behavior
89
+ event.preventDefault();
90
+
91
+ } );
92
+ }
93
+
94
+ $( document ).ready( function() {
95
+ admin_postboxes();
96
+ admin_jquery_sliders();
97
+ admin_tab_switching();
98
+ } );
99
+
100
+ })( jQuery );
inc/js/jquery.unveil.js DELETED
@@ -1,72 +0,0 @@
1
- /**
2
- * jQuery Unveil
3
- * A very lightweight jQuery plugin to lazy load images
4
- * http://luis-almeida.github.com/unveil
5
- *
6
- * Modified by Sergej Müller
7
- * http://wpcoder.de
8
- *
9
- * Licensed under the MIT license.
10
- */
11
-
12
- ;(function($) {
13
- $.fn.unveil = function() {
14
-
15
- var $w = $(window),
16
- images = this,
17
- loaded,
18
- inview,
19
- source;
20
-
21
- this.one(
22
- 'unveil',
23
- function() {
24
- var $$ = $(this),
25
- source = $$.data('src') || $$.attr('data-src');
26
-
27
- if ( source) {
28
- $$
29
- .css('opacity', 0)
30
- .attr('src', source)
31
- .animate(
32
- {
33
- 'opacity': 1
34
- },
35
- 200
36
- );
37
- }
38
- }
39
- );
40
-
41
- function unveil() {
42
- inview = images.filter(
43
- function() {
44
- var $e = $(this),
45
- wt = $w.scrollTop(),
46
- wb = wt + $w.height(),
47
- et = $e.offset().top,
48
- eb = et + $e.height();
49
-
50
- return eb >= wt && et <= wb;
51
- }
52
- );
53
-
54
- loaded = inview.trigger('unveil');
55
- images = images.not(loaded);
56
- }
57
-
58
- $w.scroll(unveil);
59
- $w.resize(unveil);
60
-
61
- unveil();
62
-
63
- return this;
64
- };
65
- })(window.jQuery);
66
-
67
-
68
- jQuery(document).ready(
69
- function(){
70
- jQuery("img.crazy_lazy").css('display', '').unveil();
71
- }
72
- );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
inc/js/jquery.unveil.min.js DELETED
@@ -1,12 +0,0 @@
1
- /**
2
- * jQuery Unveil
3
- * A very lightweight jQuery plugin to lazy load images
4
- * http://luis-almeida.github.com/unveil
5
- *
6
- * Modified by Sergej Müller
7
- * http://wpcoder.de
8
- *
9
- * Licensed under the MIT license.
10
- */
11
-
12
- (function(c){c.fn.unveil=function(){function b(){e=a.filter(function(){var f=c(this),g=d.scrollTop(),b=g+d.height(),a=f.offset().top;return a+f.height()>=g&&a<=b});h=e.trigger("unveil");a=a.not(h)}var d=c(window),a=this,h,e;this.one("unveil",function(){var a=c(this),b=a.data("src")||a.attr("data-src");b&&a.css("opacity",0).attr("src",b).animate({opacity:1},200)});d.scroll(b);d.resize(b);b();return this}})(window.jQuery);jQuery(document).ready(function(){jQuery("img.crazy_lazy").css("display","").unveil()});
 
 
 
 
 
 
 
 
 
 
 
 
inc/js/lazyload.js DELETED
@@ -1,91 +0,0 @@
1
- /* lazyload.js (c) Lorenzo Giuliani
2
- * MIT License (http://www.opensource.org/licenses/mit-license.html)
3
- *
4
- * Modified by Sergej Müller | http://wpcoder.de
5
- */
6
-
7
-
8
- window.onload = function() {
9
- var $q = function(q, res){
10
- if (document.querySelectorAll) {
11
- res = document.querySelectorAll(q);
12
- } else {
13
- var d=document,
14
- a=d.styleSheets[0] || d.createStyleSheet();
15
-
16
- a.addRule(q,'f:b');
17
- for(var l=d.all,b=0,c=[],f=l.length;b<f;b++)
18
- l[b].currentStyle.f && c.push(l[b]);
19
-
20
- a.removeRule(0);
21
- res = c;
22
- }
23
-
24
- return res;
25
- },
26
-
27
- addEventListener = function(evt, fn) {
28
- window.addEventListener
29
- ? this.addEventListener(evt, fn, false)
30
- : (window.attachEvent)
31
- ? this.attachEvent('on' + evt, fn)
32
- : this['on' + evt] = fn;
33
- },
34
-
35
- _has = function(obj, key) {
36
- return Object.prototype.hasOwnProperty.call(obj, key);
37
- };
38
-
39
- function loadImage (el, fn) {
40
- var img = new Image(),
41
- src = el.getAttribute('data-src');
42
-
43
- img.onload = function() {
44
- if ( !! el.parent )
45
- el.parent.replaceChild(img, el)
46
- else
47
- el.src = src;
48
-
49
- if ( fn ) fn();
50
- }
51
-
52
- img.src = src;
53
- }
54
-
55
- function elementInViewport(el) {
56
- var rect = el.getBoundingClientRect();
57
-
58
- return (
59
- rect.top >= 0
60
- && rect.left >= 0
61
- && rect.top <= (window.innerHeight || document.documentElement.clientHeight)
62
- );
63
- }
64
-
65
- var images = new Array(),
66
- query = $q('img.crazy_lazy'),
67
- processScroll = function() {
68
- for (var i = 0; i < images.length; i++) {
69
- if (elementInViewport(images[i])) {
70
- loadImage(
71
- images[i],
72
- function () {
73
- images.splice(i, i);
74
- }
75
- );
76
- }
77
- }
78
- };
79
-
80
- for (var i = 0; i < query.length; i++) {
81
- query[i].removeAttribute('style');
82
- images.push(query[i]);
83
- };
84
-
85
- processScroll();
86
-
87
- addEventListener(
88
- 'scroll',
89
- processScroll
90
- );
91
- };
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
inc/js/lazyload.min.js DELETED
@@ -1,8 +0,0 @@
1
- /* lazyload.js (c) Lorenzo Giuliani
2
- * MIT License (http://www.opensource.org/licenses/mit-license.html)
3
- *
4
- * Modified by Sergej Müller | http://wpcoder.de
5
- */
6
-
7
- window.onload=function(){function h(a,e){var c=new Image,b=a.getAttribute("data-src");c.onload=function(){a.parent?a.parent.replaceChild(c,a):a.src=b;e&&e()};c.src=b}function k(a){a=a.getBoundingClientRect();return 0<=a.top&&0<=a.left&&a.top<=(window.innerHeight||document.documentElement.clientHeight)}for(var b=[],f=function(a,e){if(document.querySelectorAll)e=document.querySelectorAll(a);else{var c=document,b=c.styleSheets[0]||c.createStyleSheet();b.addRule(a,"f:b");for(var c=c.all,d=0,f=[],g=c.length;d<
8
- g;d++)c[d].currentStyle.f&&f.push(c[d]);b.removeRule(0);e=f}return e}("img.crazy_lazy"),g=function(){for(var a=0;a<b.length;a++)k(b[a])&&h(b[a],function(){b.splice(a,a)})},d=0;d<f.length;d++)f[d].removeAttribute("style"),b.push(f[d]);g();(function(a,b){window.addEventListener?this.addEventListener(a,b,!1):window.attachEvent?this.attachEvent("on"+a,b):this["on"+a]=b})("scroll",g)};
 
 
 
 
 
 
 
 
inc/js/plugin-install.js ADDED
@@ -0,0 +1,55 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ (function( wp, $ ) {
2
+ 'use strict';
3
+
4
+ if ( ! wp ) {
5
+ return;
6
+ }
7
+
8
+ function activatePlugin( url, el ) {
9
+ var message = el.data( 'message' );
10
+
11
+ $.ajax( {
12
+ async: true,
13
+ type: 'GET',
14
+ dataType: 'html',
15
+ url: url,
16
+ success: function() {
17
+ el.removeClass( 'sbp-updating' );
18
+ el.text( message );
19
+ }
20
+ } );
21
+ }
22
+
23
+ $( function() {
24
+ $( document ).on( 'click', '.sbp-plugin-button', function( event ) {
25
+ var action = $( this ).data( 'action' ),
26
+ url = $( this ).attr( 'href' ),
27
+ slug = $( this ).data( 'slug' );
28
+
29
+ event.preventDefault();
30
+
31
+ if ( 'install' === action ) {
32
+
33
+ $( this ).addClass( 'sbp-updating disbpled' );
34
+
35
+ wp.updates.installPlugin( {
36
+ slug: slug
37
+ } );
38
+
39
+ } else if ( 'activate' === action ) {
40
+
41
+ $( this ).addClass( 'sbp-updating disbpled' );
42
+ activatePlugin( url, $( this ) );
43
+
44
+ }
45
+
46
+ } );
47
+
48
+ $( document ).on( 'wp-plugin-install-success', function( response, data ) {
49
+ var el = $( '.sbp-plugin-button[data-slug="' + data.slug + '"]' );
50
+ event.preventDefault();
51
+ activatePlugin( data.activateUrl, el );
52
+ } );
53
+
54
+ } );
55
+ })( window.wp, jQuery );
inc/js/post-tabs-edit.js DELETED
@@ -1,9 +0,0 @@
1
- jQuery(document).on('ready', function($){
2
- postboxes.save_state = function(){
3
- return;
4
- };
5
- postboxes.save_order = function(){
6
- return;
7
- };
8
- postboxes.add_postbox_toggles();
9
- });
 
 
 
 
 
 
 
 
 
inc/js/sbp-hide.js DELETED
@@ -1,16 +0,0 @@
1
- if (typeof (jQuery) != 'undefined') {
2
- jQuery(document).ready(function () {
3
- validate();
4
- jQuery('input').change(function () {
5
- validate();
6
- })
7
- });
8
-
9
- function validate() {
10
- if (jQuery('input[id=sbp_css_async]').is(':checked')) {
11
- jQuery('#sbp-css-content').show();
12
- } else {
13
- jQuery('#sbp-css-content').hide();
14
- }
15
- }
16
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
inc/js/sbp-slide.js DELETED
@@ -1,13 +0,0 @@
1
- jQuery(document).ready(function () {
2
- jQuery(".sbp-slider").slider({
3
- value: jpegCompression,
4
- min: 0,
5
- max: 100,
6
- step: 1,
7
- slide: function (event, ui) {
8
- jQuery(".sbp-amount").val(ui.value);
9
- jQuery("#sbp_integer").val(ui.value);
10
- }
11
- });
12
- jQuery(".sbp-amount").val(jQuery(".sbp-slider").slider("value"));
13
- });
 
 
 
 
 
 
 
 
 
 
 
 
 
inc/sbp-minifier.php CHANGED
@@ -4,10 +4,11 @@
4
  MINIFIER - increase your page load speed by minifying JavaScript and HTML
5
  ---------------------------------------------------------------------------------------------------------*/
6
 
 
7
  class SBP_HTML_Minifier {
8
  // Minify settings
9
  protected $minify_css = true;
10
- protected $minify_js = true;
11
  protected $info_comment = true;
12
  protected $remove_comments = true;
13
 
4
  MINIFIER - increase your page load speed by minifying JavaScript and HTML
5
  ---------------------------------------------------------------------------------------------------------*/
6
 
7
+
8
  class SBP_HTML_Minifier {
9
  // Minify settings
10
  protected $minify_css = true;
11
+ protected $minify_js = false;
12
  protected $info_comment = true;
13
  protected $remove_comments = true;
14
 
inc/settings.php CHANGED
@@ -1,324 +1,290 @@
1
  <?php
2
 
3
- if( !class_exists( 'Speed_Booster_Pack_Options' ) ) {
4
 
5
- class Speed_Booster_Pack_Options {
6
 
7
- private $sbp_options;
8
- /*--------------------------------------------------------------------------------------------------------
9
- Construct the plugin object
10
- ---------------------------------------------------------------------------------------------------------*/
11
 
12
- public function __construct() {
 
 
13
 
14
- add_action( 'admin_init', array( $this, 'sbp_admin_init' ) );
15
- add_action( 'admin_menu', array( $this, 'sbp_add_menu' ) );
16
- add_action('wp_footer', array( $this, 'sbp_detected_scripts_handle'), 999 );
17
- add_action('wp_footer', array( $this, 'sbp_detected_scripts_src'), 999 );
18
- add_action('wp_footer', array( $this, 'sbp_detected_styles_handle'), 999 );
19
 
20
- } // END public function __construct
 
 
 
 
21
 
 
22
 
23
- public function sbp_admin_init() {
24
 
25
- register_setting( 'speed_booster_settings_group', 'sbp_settings' );
26
- register_setting( 'speed_booster_settings_group', 'sbp_integer' );
27
- register_setting( 'speed_booster_settings_group', 'sbp_css_exceptions' );
28
- register_setting( 'speed_booster_settings_group', 'sbp_sanitize');
29
 
30
- register_setting( 'speed_booster_settings_group', 'sbp_js_footer_exceptions1' );
31
- register_setting( 'speed_booster_settings_group', 'sbp_js_footer_exceptions2' );
32
- register_setting( 'speed_booster_settings_group', 'sbp_js_footer_exceptions3' );
33
- register_setting( 'speed_booster_settings_group', 'sbp_js_footer_exceptions4' );
34
 
35
- register_setting( 'speed_booster_settings_group', 'sbp_head_html_script1' );
36
- register_setting( 'speed_booster_settings_group', 'sbp_head_html_script2' );
37
- register_setting( 'speed_booster_settings_group', 'sbp_head_html_script3' );
38
- register_setting( 'speed_booster_settings_group', 'sbp_head_html_script4' );
39
 
40
- register_setting( 'speed_booster_settings_group', 'sbp_defer_exceptions1' );
41
- register_setting( 'speed_booster_settings_group', 'sbp_defer_exceptions2' );
42
- register_setting( 'speed_booster_settings_group', 'sbp_defer_exceptions3' );
43
- register_setting( 'speed_booster_settings_group', 'sbp_defer_exceptions4' );
44
 
45
- } // END public function admin_init
46
 
47
 
48
- /*--------------------------------------------------------------------------------------------------------
49
- Get enqueued scripts handles
50
- ---------------------------------------------------------------------------------------------------------*/
51
 
52
- public function sbp_detected_scripts_handle( $handles = array() ) {
53
 
54
- global $wp_scripts;
55
 
56
 
57
- // scripts
58
- foreach ( $wp_scripts -> registered as $registered )
59
- $script_urls[ $registered -> handle ] = $registered -> src;
 
60
 
61
- // if empty
62
- if ( empty( $handles ) ) {
63
- $handles = array_merge( $wp_scripts -> queue );
64
- array_values( $handles );
65
- }
66
- // output of values
67
- $get_enqueued_scripts_handle = '';
68
- foreach ( $handles as $handle ) {
69
- if ( ! empty( $script_urls[ $handle ] ) )
70
- $get_enqueued_scripts_handle .= $handle . '<br />';
 
71
 
72
- }
73
 
74
- update_option( 'all_theme_scripts_handle', $get_enqueued_scripts_handle );
75
 
76
- }
77
 
78
- /*--------------------------------------------------------------------------------------------------------
79
- Get enqueued scripts src path
80
- ---------------------------------------------------------------------------------------------------------*/
81
 
82
- public function sbp_detected_scripts_src( $handles = array() ) {
83
 
84
- global $wp_scripts;
85
 
86
- // scripts
87
- foreach ( $wp_scripts -> registered as $registered )
88
- $script_urls[ $registered -> handle ] = $registered -> src;
 
89
 
90
- // if empty
91
- if ( empty( $handles ) ) {
92
- $handles = array_merge( $wp_scripts -> queue );
93
- array_values( $handles );
94
- }
95
- // output of values
96
- $get_enqueued_scripts_src = '';
97
- foreach ( $handles as $handle ) {
98
- if ( ! empty( $script_urls[ $handle ] ) )
99
- $get_enqueued_scripts_src .= $script_urls[ $handle ] . '<br />';
 
100
 
101
- }
102
 
103
- update_option( 'all_theme_scripts_src', $get_enqueued_scripts_src );
104
 
105
- }
106
 
107
 
108
- /*--------------------------------------------------------------------------------------------------------
109
- Get enqueued style handles
110
- ---------------------------------------------------------------------------------------------------------*/
111
 
112
- public function sbp_detected_styles_handle( $handles = array() ) {
113
 
114
- global $wp_styles;
115
 
116
 
117
- // scripts
118
- foreach ( $wp_styles -> registered as $registered )
119
- $style_urls[ $registered -> handle ] = $registered -> src;
 
120
 
121
- // if empty
122
- if ( empty( $handles ) ) {
123
- $handles = array_merge( $wp_styles -> queue );
124
- array_values( $handles );
125
- }
126
- // output of values
127
- $get_enqueued_styles_handle = '';
128
- foreach ( $handles as $handle ) {
129
- if ( ! empty( $style_urls[ $handle ] ) )
130
- $get_enqueued_styles_handle .= $handle . '<br />';
 
131
 
132
- }
133
 
134
- update_option( 'all_theme_styles_handle', $get_enqueued_styles_handle );
135
 
136
- }
137
 
138
 
139
- /*--------------------------------------------------------------------------------------------------------
140
- Sanitize Options
141
- ---------------------------------------------------------------------------------------------------------*/
142
 
143
- public function sbp_sanitize( $input ) {
144
 
145
- $output = array();
146
 
147
- foreach( $input as $key => $tigu ) {
148
 
149
- switch( $key ) {
150
- case 'sbp_js_footer_exceptions1':
151
- $output[$key] = wp_filter_post_kses( $tigu );
152
- break;
153
- case 'sbp_js_footer_exceptions2':
154
- $output[$key] = wp_filter_post_kses( $tigu );
155
- break;
156
- case 'sbp_js_footer_exceptions3':
157
- $output[$key] = wp_filter_post_kses( $tigu );
158
- break;
159
- case 'sbp_js_footer_exceptions4':
160
- $output[$key] = wp_filter_post_kses( $tigu );
161
- break;
162
- case 'sbp_head_html_script1':
163
- $output[$key] = wp_filter_post_kses( $tigu );
164
- break;
165
- case 'sbp_head_html_script2':
166
- $output[$key] = wp_kses_stripslashes( $tigu );
167
- break;
168
- case 'sbp_head_html_script3':
169
- $output[$key] = wp_kses_stripslashes( $tigu );
170
- break;
171
- case 'sbp_head_html_script4':
172
- $output[$key] = wp_kses_stripslashes( $tigu );
173
- break;
174
 
175
- }
176
 
177
- }
 
178
 
179
- return $output;
180
- }
181
 
 
 
 
182
 
183
- /*--------------------------------------------------------------------------------------------------------
184
- // Add a page to manage the plugin's settings
185
- ---------------------------------------------------------------------------------------------------------*/
186
-
187
- public function sbp_add_menu() {
188
-
189
- global $sbp_settings_page;
190
- $sbp_settings_page = add_options_page( 'Speed Booster Options', 'Speed Booster Pack', 'manage_options', 'sbp-options', array( $this, 'sbp_plugin_settings_page' ) );
191
-
192
- } // END public function add_menu()
193
-
194
-
195
- public function sbp_plugin_settings_page() {
196
-
197
- if( !current_user_can( 'manage_options' ) ) {
198
- wp_die(__( 'You do not have sufficient permissions to access this page.' ));
199
- }
200
-
201
-
202
- /*--------------------------------------------------------------------------------------------------------
203
- Global Variables used on options HTML page
204
- ---------------------------------------------------------------------------------------------------------*/
205
-
206
- global $sbp_options;
207
-
208
- // Global variables used in plugin options page
209
- $url = get_site_url();
210
- $response = wp_remote_get( $url, array() );
211
- $page_time = get_option( 'sbp_page_time' );
212
- $page_queries = get_option( 'sbp_page_queries' );
213
- $get_enqueued_scripts_handle = get_option( 'all_theme_scripts_handle' );
214
- $get_enqueued_scripts_src = get_option( 'all_theme_scripts_src' );
215
- $get_enqueued_styles_handle = get_option( 'all_theme_styles_handle' );
216
-
217
- // fallback for image compression integer
218
- if ( get_option( 'sbp_integer' ) ) {
219
- $this->image_compression = get_option( 'sbp_integer' );
220
- } else {
221
- $this->image_compression = 90;
222
- }
223
- $this->plugin_url = plugin_dir_url(dirname(__FILE__));
224
-
225
- // fallback for stylesheets exception handle
226
- if ( get_option( 'sbp_css_exceptions' ) ) {
227
- $css_exceptions = get_option( 'sbp_css_exceptions' );
228
- } else {
229
- $css_exceptions = '' ;
230
- }
231
 
232
- /*--------------------------------------------------------------------------------------------------------*/
 
 
 
 
233
 
234
- if ( get_option( 'sbp_js_footer_exceptions1' ) ) {
235
- $js_footer_exceptions1 = get_option( 'sbp_js_footer_exceptions1' );
236
- } else {
237
- $js_footer_exceptions1 = '' ;
238
- }
239
-
240
- if ( get_option( 'sbp_js_footer_exceptions2' ) ) {
241
- $js_footer_exceptions2 = get_option( 'sbp_js_footer_exceptions2' );
242
- } else {
243
- $js_footer_exceptions2 = '' ;
244
- }
245
-
246
- if ( get_option( 'sbp_js_footer_exceptions3' ) ) {
247
- $js_footer_exceptions3 = get_option( 'sbp_js_footer_exceptions3' );
248
- } else {
249
- $js_footer_exceptions3 = '' ;
250
- }
251
-
252
- if ( get_option( 'sbp_js_footer_exceptions4' ) ) {
253
- $js_footer_exceptions4 = get_option( 'sbp_js_footer_exceptions4' );
254
- } else {
255
- $js_footer_exceptions4 = '' ;
256
- }
257
-
258
- /*--------------------------------------------------------------------------------------------------------*/
259
-
260
- if ( get_option( 'sbp_head_html_script1' ) ) {
261
- $sbp_html_script1 = get_option( 'sbp_head_html_script1' );
262
- } else {
263
- $sbp_html_script1 = '' ;
264
- }
265
 
266
- if ( get_option( 'sbp_head_html_script2' ) ) {
267
- $sbp_html_script2 = get_option( 'sbp_head_html_script2' );
268
- } else {
269
- $sbp_html_script2 = '' ;
270
- }
271
 
272
- if ( get_option( 'sbp_head_html_script3' ) ) {
273
- $sbp_html_script3 = get_option( 'sbp_head_html_script3' );
274
- } else {
275
- $sbp_html_script3 = '' ;
276
- }
277
 
278
- if ( get_option( 'sbp_head_html_script4' ) ) {
279
- $sbp_html_script4 = get_option( 'sbp_head_html_script4' );
280
- } else {
281
- $sbp_html_script4 = '' ;
282
- }
283
-
284
- /*--------------------------------------------------------------------------------------------------------*/
285
 
286
- if ( get_option( 'sbp_defer_exceptions1' ) ) {
287
- $defer_exceptions1 = get_option( 'sbp_defer_exceptions1' );
288
- } else {
289
- $defer_exceptions1 = '' ;
290
- }
291
-
292
- if ( get_option( 'sbp_defer_exceptions2' ) ) {
293
- $defer_exceptions2 = get_option( 'sbp_defer_exceptions2' );
294
- } else {
295
- $defer_exceptions2 = '' ;
296
- }
297
-
298
- if ( get_option( 'sbp_defer_exceptions3' ) ) {
299
- $defer_exceptions3 = get_option( 'sbp_defer_exceptions3' );
300
- } else {
301
- $defer_exceptions3 = '' ;
302
- }
303
-
304
- if ( get_option( 'sbp_defer_exceptions4' ) ) {
305
- $defer_exceptions4 = get_option( 'sbp_defer_exceptions4' );
306
- } else {
307
- $defer_exceptions4 = '' ;
308
- }
309
-
310
- /*--------------------------------------------------------------------------------------------------------*/
311
-
312
- // Render the plugin options page HTML
313
- include( SPEED_BOOSTER_PACK_PATH . 'css/dynamic-css.php' );
314
-
315
- // Render the plugin options page HTML
316
- include( SPEED_BOOSTER_PACK_PATH . 'inc/template/options.php' );
317
-
318
- } // END public function sbp_plugin_settings_page()
319
-
320
-
321
-
322
- } // END class Speed_Booster_Pack_Options
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
323
 
324
  } // END if(!class_exists('Speed_Booster_Pack_Options'))
1
  <?php
2
 
3
+ if ( ! class_exists( 'Speed_Booster_Pack_Options' ) ) {
4
 
5
+ class Speed_Booster_Pack_Options {
6
 
7
+ private $sbp_options;
 
 
 
8
 
9
+ /*--------------------------------------------------------------------------------------------------------
10
+ Construct the plugin object
11
+ ---------------------------------------------------------------------------------------------------------*/
12
 
13
+ public function __construct() {
 
 
 
 
14
 
15
+ add_action( 'admin_init', array( $this, 'sbp_admin_init' ) );
16
+ add_action( 'admin_menu', array( $this, 'sbp_add_menu' ) );
17
+ add_action( 'wp_footer', array( $this, 'sbp_detected_scripts_handle' ), 999 );
18
+ add_action( 'wp_footer', array( $this, 'sbp_detected_scripts_src' ), 999 );
19
+ add_action( 'wp_footer', array( $this, 'sbp_detected_styles_handle' ), 999 );
20
 
21
+ } // END public function __construct
22
 
 
23
 
24
+ public function sbp_admin_init() {
 
 
 
25
 
26
+ register_setting( 'speed_booster_settings_group', 'sbp_settings' );
27
+ register_setting( 'speed_booster_settings_group', 'sbp_integer' );
28
+ register_setting( 'speed_booster_settings_group', 'sbp_css_exceptions' );
29
+ register_setting( 'speed_booster_settings_group', 'sbp_sanitize' );
30
 
31
+ register_setting( 'speed_booster_settings_group', 'sbp_js_footer_exceptions1' );
32
+ register_setting( 'speed_booster_settings_group', 'sbp_js_footer_exceptions2' );
33
+ register_setting( 'speed_booster_settings_group', 'sbp_js_footer_exceptions3' );
34
+ register_setting( 'speed_booster_settings_group', 'sbp_js_footer_exceptions4' );
35
 
36
+ register_setting( 'speed_booster_settings_group', 'sbp_defer_exceptions1' );
37
+ register_setting( 'speed_booster_settings_group', 'sbp_defer_exceptions2' );
38
+ register_setting( 'speed_booster_settings_group', 'sbp_defer_exceptions3' );
39
+ register_setting( 'speed_booster_settings_group', 'sbp_defer_exceptions4' );
40
 
41
+ } // END public function admin_init
42
 
43
 
44
+ /*--------------------------------------------------------------------------------------------------------
45
+ Get enqueued scripts handles
46
+ ---------------------------------------------------------------------------------------------------------*/
47
 
48
+ public function sbp_detected_scripts_handle( $handles = array() ) {
49
 
50
+ global $wp_scripts;
51
 
52
 
53
+ // scripts
54
+ foreach ( $wp_scripts->registered as $registered ) {
55
+ $script_urls[ $registered->handle ] = $registered->src;
56
+ }
57
 
58
+ // if empty
59
+ if ( empty( $handles ) ) {
60
+ $handles = array_merge( $wp_scripts->done );
61
+ array_values( $handles );
62
+ }
63
+ // output of values
64
+ $get_enqueued_scripts_handle = '';
65
+ foreach ( $handles as $handle ) {
66
+ if ( ! empty( $script_urls[ $handle ] ) ) {
67
+ $get_enqueued_scripts_handle .= $handle . '<br />';
68
+ }
69
 
70
+ }
71
 
72
+ update_option( 'all_theme_scripts_handle', $get_enqueued_scripts_handle );
73
 
74
+ }
75
 
76
+ /*--------------------------------------------------------------------------------------------------------
77
+ Get enqueued scripts src path
78
+ ---------------------------------------------------------------------------------------------------------*/
79
 
80
+ public function sbp_detected_scripts_src( $handles = array() ) {
81
 
82
+ global $wp_scripts;
83
 
84
+ // scripts
85
+ foreach ( $wp_scripts->registered as $registered ) {
86
+ $script_urls[ $registered->handle ] = $registered->src;
87
+ }
88
 
89
+ // if empty
90
+ if ( empty( $handles ) ) {
91
+ $handles = array_merge( $wp_scripts->done );
92
+ array_values( $handles );
93
+ }
94
+ // output of values
95
+ $get_enqueued_scripts_src = '';
96
+ foreach ( $handles as $handle ) {
97
+ if ( ! empty( $script_urls[ $handle ] ) ) {
98
+ $get_enqueued_scripts_src .= $script_urls[ $handle ] . '<br />';
99
+ }
100
 
101
+ }
102
 
103
+ update_option( 'all_theme_scripts_src', $get_enqueued_scripts_src );
104
 
105
+ }
106
 
107
 
108
+ /*--------------------------------------------------------------------------------------------------------
109
+ Get enqueued style handles
110
+ ---------------------------------------------------------------------------------------------------------*/
111
 
112
+ public function sbp_detected_styles_handle( $handles = array() ) {
113
 
114
+ global $wp_styles;
115
 
116
 
117
+ // scripts
118
+ foreach ( $wp_styles->registered as $registered ) {
119
+ $style_urls[ $registered->handle ] = $registered->src;
120
+ }
121
 
122
+ // if empty
123
+ if ( empty( $handles ) ) {
124
+ $handles = array_merge( $wp_styles->queue );
125
+ array_values( $handles );
126
+ }
127
+ // output of values
128
+ $get_enqueued_styles_handle = '';
129
+ foreach ( $handles as $handle ) {
130
+ if ( ! empty( $style_urls[ $handle ] ) ) {
131
+ $get_enqueued_styles_handle .= $handle . '<br />';
132
+ }
133
 
134
+ }
135
 
136
+ update_option( 'all_theme_styles_handle', $get_enqueued_styles_handle );
137
 
138
+ }
139
 
140
 
141
+ /*--------------------------------------------------------------------------------------------------------
142
+ Sanitize Options
143
+ ---------------------------------------------------------------------------------------------------------*/
144
 
145
+ public function sbp_sanitize( $input ) {
146
 
147
+ $output = array();
148
 
149
+ foreach ( $input as $key => $tigu ) {
150
 
151
+ switch ( $key ) {
152
+ case 'sbp_js_footer_exceptions1':
153
+ $output[ $key ] = esc_html( $tigu );
154
+ break;
155
+ case 'sbp_js_footer_exceptions2':
156
+ $output[ $key ] = esc_html( $tigu );
157
+ break;
158
+ case 'sbp_js_footer_exceptions3':
159
+ $output[ $key ] = esc_html( $tigu );
160
+ break;
161
+ case 'sbp_js_footer_exceptions4':
162
+ $output[ $key ] = esc_html( $tigu );
163
+ break;
164
+ }
 
 
 
 
 
 
 
 
 
 
 
165
 
166
+ }
167
 
168
+ return $output;
169
+ }
170
 
 
 
171
 
172
+ /*--------------------------------------------------------------------------------------------------------
173
+ // Add a page to manage the plugin's settings
174
+ ---------------------------------------------------------------------------------------------------------*/
175
 
176
+ public function sbp_add_menu() {
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
177
 
178
+ global $sbp_settings_page;
179
+ $sbp_settings_page = add_menu_page( __( 'Speed Booster Options', 'sb-pack' ), __( 'Speed Booster', 'sb-pack' ), 'manage_options', 'sbp-options', array(
180
+ $this,
181
+ 'sbp_plugin_settings_page',
182
+ ), plugin_dir_url( __FILE__ ) . 'images/icon-16x16.png' );
183
 
184
+ } // END public function add_menu()
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
185
 
 
 
 
 
 
186
 
187
+ public function sbp_plugin_settings_page() {
 
 
 
 
188
 
189
+ if ( ! current_user_can( 'manage_options' ) ) {
190
+ wp_die( __( 'You do not have sufficient permissions to access this page.' ) );
191
+ }
 
 
 
 
192
 
193
+
194
+ /*--------------------------------------------------------------------------------------------------------
195
+ Global Variables used on options HTML page
196
+ ---------------------------------------------------------------------------------------------------------*/
197
+
198
+ global $sbp_options;
199
+
200
+ // Global variables used in plugin options page
201
+ $url = get_site_url();
202
+ $response = wp_remote_get( $url, array() );
203
+ $page_time = get_option( 'sbp_page_time' );
204
+ $page_queries = get_option( 'sbp_page_queries' );
205
+ $get_enqueued_scripts_handle = get_option( 'all_theme_scripts_handle' );
206
+ $get_enqueued_scripts_src = get_option( 'all_theme_scripts_src' );
207
+ $get_enqueued_styles_handle = get_option( 'all_theme_styles_handle' );
208
+
209
+ // fallback for image compression integer
210
+ if ( get_option( 'sbp_integer' ) ) {
211
+ $this->image_compression = get_option( 'sbp_integer' );
212
+ } else {
213
+ $this->image_compression = 75;
214
+ }
215
+ $this->plugin_url = plugin_dir_url( dirname( __FILE__ ) );
216
+
217
+ // fallback for stylesheets exception handle
218
+ if ( get_option( 'sbp_css_exceptions' ) ) {
219
+ $css_exceptions = get_option( 'sbp_css_exceptions' );
220
+ } else {
221
+ $css_exceptions = '';
222
+ }
223
+
224
+ /*--------------------------------------------------------------------------------------------------------*/
225
+
226
+ if ( get_option( 'sbp_js_footer_exceptions1' ) ) {
227
+ $js_footer_exceptions1 = get_option( 'sbp_js_footer_exceptions1' );
228
+ } else {
229
+ $js_footer_exceptions1 = '';
230
+ }
231
+
232
+ if ( get_option( 'sbp_js_footer_exceptions2' ) ) {
233
+ $js_footer_exceptions2 = get_option( 'sbp_js_footer_exceptions2' );
234
+ } else {
235
+ $js_footer_exceptions2 = '';
236
+ }
237
+
238
+ if ( get_option( 'sbp_js_footer_exceptions3' ) ) {
239
+ $js_footer_exceptions3 = get_option( 'sbp_js_footer_exceptions3' );
240
+ } else {
241
+ $js_footer_exceptions3 = '';
242
+ }
243
+
244
+ if ( get_option( 'sbp_js_footer_exceptions4' ) ) {
245
+ $js_footer_exceptions4 = get_option( 'sbp_js_footer_exceptions4' );
246
+ } else {
247
+ $js_footer_exceptions4 = '';
248
+ }
249
+
250
+ /*--------------------------------------------------------------------------------------------------------*/
251
+
252
+
253
+
254
+ if ( get_option( 'sbp_defer_exceptions1' ) ) {
255
+ $defer_exceptions1 = get_option( 'sbp_defer_exceptions1' );
256
+ } else {
257
+ $defer_exceptions1 = '';
258
+ }
259
+
260
+ if ( get_option( 'sbp_defer_exceptions2' ) ) {
261
+ $defer_exceptions2 = get_option( 'sbp_defer_exceptions2' );
262
+ } else {
263
+ $defer_exceptions2 = '';
264
+ }
265
+
266
+ if ( get_option( 'sbp_defer_exceptions3' ) ) {
267
+ $defer_exceptions3 = get_option( 'sbp_defer_exceptions3' );
268
+ } else {
269
+ $defer_exceptions3 = '';
270
+ }
271
+
272
+ if ( get_option( 'sbp_defer_exceptions4' ) ) {
273
+ $defer_exceptions4 = get_option( 'sbp_defer_exceptions4' );
274
+ } else {
275
+ $defer_exceptions4 = '';
276
+ }
277
+
278
+ /*--------------------------------------------------------------------------------------------------------*/
279
+
280
+
281
+
282
+ // Render the plugin options page HTML
283
+ include( SPEED_BOOSTER_PACK_PATH . 'inc/template/options.php' );
284
+
285
+ } // END public function sbp_plugin_settings_page()
286
+
287
+
288
+ } // END class Speed_Booster_Pack_Options
289
 
290
  } // END if(!class_exists('Speed_Booster_Pack_Options'))
inc/template/notice.php CHANGED
@@ -1,7 +1,7 @@
1
  <div class='notice notice-warning' id='sbp-news' style="padding-top: 7px">
2
  <div style="float:right;"><a href="javascript:dismissNews()" class="button" style="margin-top:10px;"><?php _e('Dismiss','sb-pack');?></a></div>
3
  <strong><?php _e('Speed Booster Pack','sb-pack');?></strong>
4
- <p><?php printf(__('Check out the %s Plugin settings %s for new features that can make your site load faster.','sb-pack'), '<a href="options-general.php?page=sbp-options">', '</a>');?></p>
5
  </div>
6
  <script>
7
  function dismissNews() {
1
  <div class='notice notice-warning' id='sbp-news' style="padding-top: 7px">
2
  <div style="float:right;"><a href="javascript:dismissNews()" class="button" style="margin-top:10px;"><?php _e('Dismiss','sb-pack');?></a></div>
3
  <strong><?php _e('Speed Booster Pack','sb-pack');?></strong>
4
+ <p><?php printf(__('Check out the %s Plugin settings %s for new features that can make your site load faster.','sb-pack'), '<a href="admin.php?page=sbp-options">', '</a>');?></p>
5
  </div>
6
  <script>
7
  function dismissNews() {
inc/template/options.php CHANGED
@@ -1,444 +1,634 @@
1
- <div class="wrap">
2
-
3
- <div class="sb-pack">
4
-
5
- <div id="poststuff">
6
- <div id="postbox-container" class="postbox-container">
7
- <div class="meta-box-sortables ui-sortable" id="normal-sortables">
8
-
9
-
10
- <h2 class="sbp-icon"><?php echo esc_html( get_admin_page_title() ); ?></h2>
11
-
12
- <div class="welcome-panel">
13
-
14
- <div class="welcome-panel-content">
15
-
16
- <form method="post" action="options.php">
17
-
18
- <?php settings_fields( 'speed_booster_settings_group' ); ?>
19
- <div class="main-sbp-title"><h3 ><?php _e( 'Boost Your Website Speed!', 'sb-pack' ); ?></h3></div>
20
- <div class="postbox" id="tiguan1">
21
-
22
- <div title="Click to toggle" class="handlediv"><br></div>
23
- <h3 class="hndle"><span><?php _e( 'General options', 'sb-pack' ); ?></span></h3>
24
-
25
- <div class="inside">
26
-
27
- <div class="welcome-panel-column-container">
28
-
29
- <div class="welcome-panel-column">
30
-
31
- <h4><?php _e( 'Main plugin options', 'sb-pack' ); ?></h4>
32
-
33
- <p>
34
- <input id="sbp_settings[jquery_to_footer]" name="sbp_settings[jquery_to_footer]" type="checkbox" value="1" <?php checked( 1, isset( $sbp_options['jquery_to_footer'] ) ); ?> />
35
- <label for="sbp_settings[jquery_to_footer]"><?php _e( 'Move scripts to the footer', 'sb-pack' ); ?></label>
36
- </p>
37
-
38
- <p>
39
- <input id="sbp_settings[use_google_libs]" name="sbp_settings[use_google_libs]" type="checkbox" value="1" <?php checked( 1, isset( $sbp_options['use_google_libs'] ) ); ?> />
40
- <label for="sbp_settings[use_google_libs]"><?php _e( 'Load JS from Google Libraries', 'sb-pack' ); ?></label>
41
- </p>
42
-
43
- <p>
44
- <input id="sbp_settings[defer_parsing]" name="sbp_settings[defer_parsing]" type="checkbox" value="1" <?php checked( 1, isset( $sbp_options['defer_parsing'] ) ); ?> />
45
- <label for="sbp_settings[defer_parsing]"><?php _e( 'Defer parsing of javascript files', 'sb-pack' ); ?></label>
46
- </p>
47
-
48
- <p>
49
- <input id="sbp_settings[query_strings]" name="sbp_settings[query_strings]" type="checkbox" value="1" <?php checked( 1, isset( $sbp_options['query_strings'] ) ); ?> />
50
- <label for="sbp_settings[query_strings]"><?php _e( 'Remove query strings', 'sb-pack' ); ?></label>
51
- </p>
52
-
53
- <p>
54
- <?php if ( is_plugin_active('crazy-lazy/crazy-lazy.php') ) { ?>
55
- <input id="sbp_settings[lazy_load]" name="sbp_settings[lazy_load]" type="hidden" value="<?php echo(isset( $sbp_options['lazy_load'] )? '1' : '0' ); ?>" />
56
- <label for="sbp_settings[lazy_load]"><?php _e( 'Lazy loading already handled by CrazyLazy plugin', 'sb-pack' ); ?></label>
57
- <?php } else {?>
58
- <input id="sbp_settings[lazy_load]" name="sbp_settings[lazy_load]" type="checkbox" value="1" <?php checked( 1, isset( $sbp_options['lazy_load'] ) ); ?> />
59
- <label for="sbp_settings[lazy_load]"><?php _e( 'Lazy load images to improve speed', 'sb-pack' ); ?></label>
60
- <?php } ?>
61
- </p>
62
-
63
-
64
- <p>
65
- <input id="sbp_settings[font_awesome]" name="sbp_settings[font_awesome]" type="checkbox" value="1" <?php checked( 1, isset( $sbp_options['font_awesome'] ) ); ?> />
66
- <label for="sbp_settings[font_awesome]"><?php _e( 'Removes extra Font Awesome styles', 'sb-pack' ); ?></label>
67
- </p>
68
-
69
- </div> <!-- END welcome-panel-column -->
70
-
71
-
72
- <div class="welcome-panel-column">
73
- <h4> <?php _e( 'Other plugin settings', 'sb-pack' ); ?></h4>
74
-
75
- <p>
76
- <input id="sbp_settings[minify_html_js]" name="sbp_settings[minify_html_js]" type="checkbox" value="1" <?php checked( 1, isset( $sbp_options['minify_html_js'] ) ); ?> />
77
- <label for="sbp_settings[minify_html_js]"><?php _e( 'Minify HTML and JS', 'sb-pack' ); ?></label>
78
- </p>
79
-
80
- <p>
81
- <input id="sbp_settings[remove_wsl]" name="sbp_settings[remove_wsl]" type="checkbox" value="1" <?php checked( 1, isset( $sbp_options['remove_wsl'] ) ); ?> />
82
- <label for="sbp_settings[remove_wsl]"><?php _e( 'Remove WordPress Shortlink', 'sb-pack' ); ?></label>
83
- </p>
84
-
85
- <p>
86
- <input id="sbp_settings[remove_adjacent]" name="sbp_settings[remove_adjacent]" type="checkbox" value="1" <?php checked( 1, isset( $sbp_options['remove_adjacent'] ) ); ?> />
87
- <label for="sbp_settings[remove_adjacent]"><?php _e( 'Remove Adjacent Posts Links', 'sb-pack' ); ?></label>
88
- </p>
89
-
90
- <p>
91
- <input id="sbp_settings[wml_link]" name="sbp_settings[wml_link]" type="checkbox" value="1" <?php checked( 1, isset( $sbp_options['wml_link'] ) ); ?> />
92
- <label for="sbp_settings[wml_link]"><?php _e( 'Remove Windows Manifest', 'sb-pack' ); ?></label>
93
- </p>
94
-
95
- <p>
96
- <input id="sbp_settings[wp_generator]" name="sbp_settings[wp_generator]" type="checkbox" value="1" <?php checked( 1, isset( $sbp_options['wp_generator'] ) ); ?> />
97
- <label for="sbp_settings[wp_generator]"><?php _e( 'Remove the WordPress Version', 'sb-pack' ); ?></label>
98
- </p>
99
-
100
- <p>
101
- <input id="sbp_settings[remove_all_feeds]" name="sbp_settings[remove_all_feeds]" type="checkbox" value="1" <?php checked( 1, isset( $sbp_options['remove_all_feeds'] ) ); ?> />
102
- <label for="sbp_settings[remove_all_feeds]"><?php _e( 'Remove all rss feed links', 'sb-pack' ); ?></label>
103
- </p>
104
-
105
- </div> <!-- END welcome-panel-column -->
106
-
107
-
108
- <div class="welcome-panel-column welcome-panel-last">
109
-
110
- <h4> <?php _e( 'Home Page Load Stats', 'sb-pack' ); ?></h4>
111
-
112
- <span class="sbp-stats"><?php _e( 'Page loading time in seconds:', 'sb-pack' ); ?></span>
113
-
114
- <div class="sbp-progress time">
115
- <span></span>
116
- </div>
117
-
118
- <div class="sbp-values">
119
- <div class="sbp-numbers">
120
- <?php echo $page_time; ?> <?php _e( 's', 'sb-pack' ); ?>
121
- </div>
122
- </div>
123
-
124
- <span class="sbp-stats"><?php _e( 'Number of executed queries:', 'sb-pack' ); ?></span>
125
-
126
- <div class="sbp-progress queries">
127
- <span></span>
128
- </div>
129
-
130
- <div class="sbp-values">
131
- <div class="sbp-numbers">
132
- <?php echo $page_queries; ?> <?php _e( 'q', 'sb-pack' ); ?>
133
- </div>
134
- </div>
135
-
136
- <div class="debug-info">
137
- <strong><?php _e( 'Peak Memory Used:', 'sb-pack' ); ?></strong> <span><?php echo number_format( ( memory_get_peak_usage()/1024/1024 ), 2, ',', '' ) . ' / ' . ini_get( 'memory_limit' ), '<br />'; ?></span>
138
- <strong><?php _e( 'Active Plugins:', 'sb-pack' ); ?></strong> <span><?php echo count( get_option( 'active_plugins' ) ) ; ?></span>
139
- </div>
140
-
141
- </div> <!-- END welcome-panel-column welcome-panel-last -->
142
-
143
- </div> <!-- END welcome-panel-column-container -->
144
-
145
- </div>
146
- </div>
147
-
148
- <div style="display: block;" class="postbox closed" id="tiguan2">
149
- <div title="Click to toggle" class="handlediv"><br></div><h3 class="hndle"><?php _e( 'Exclude scripts from being moved to the footer', 'sb-pack' ); ?></h3>
150
- <div class="inside">
151
-
152
- <div class="sbp-inline-wrap">
153
- <div class="sbp-columns1">
154
-
155
- <h4><?php _e( 'Script Handle', 'sb-pack' ); ?></h4>
156
-
157
- <p>
158
- <input type="text" name="sbp_js_footer_exceptions1" id="sbp_js_footer_exceptions1" value="<?php echo $js_footer_exceptions1; ?>" />
159
- </p>
160
-
161
- <p>
162
- <input type="text" name="sbp_js_footer_exceptions2" id="sbp_js_footer_exceptions2" value="<?php echo $js_footer_exceptions2; ?>" />
163
- </p>
164
-
165
- <p>
166
- <input type="text" name="sbp_js_footer_exceptions3" id="sbp_js_footer_exceptions3" value="<?php echo $js_footer_exceptions3; ?>" />
167
- </p>
168
-
169
- <p>
170
- <input type="text" name="sbp_js_footer_exceptions4" id="sbp_js_footer_exceptions4" value="<?php echo $js_footer_exceptions4; ?>" />
171
- </p>
172
-
173
-
174
- </div>
175
-
176
- <div class="sbp-columns2">
177
-
178
- <h4><?php _e( 'Copy the HTML code of the script from your page source and add it below', 'sb-pack' ); ?></h4>
179
-
180
-
181
- <p>
182
- <input type="text" name="sbp_head_html_script1" id="sbp_head_html_script1" class="regular-text" value="<?php echo $sbp_html_script1; ?>" />
183
- </p>
184
-
185
- <p>
186
- <input type="text" name="sbp_head_html_script2" id="sbp_head_html_script2" class="regular-text" value="<?php echo $sbp_html_script2; ?>" />
187
- </p>
188
-
189
- <p>
190
- <input type="text" name="sbp_head_html_script3" id="sbp_head_html_script3" class="regular-text" value="<?php echo $sbp_html_script3; ?>" />
191
- </p>
192
-
193
- <p>
194
- <input type="text" name="sbp_head_html_script4" id="sbp_head_html_script4" class="regular-text" value="<?php echo $sbp_html_script4; ?>" />
195
- </p>
196
-
197
- </div>
198
- </div>
199
-
200
- <p class="description">
201
- <?php _e('Enter one js handle per text field, in the left area and the correspondent html script in the right text fields.', 'sb-pack' ); ?> <?php _e( 'Read more', 'sb-pack' ); ?> <a href="http://tiguandesign.com/docs/speed-booster/#exclude-scripts-from-being-moved-to-the-footer-50" target="_blank" title="Documentation"><?php _e( 'detailed instructions', 'sb-pack' ); ?></a> <?php _e( 'on this option on plugin documentation.', 'sb-pack' ); ?> <br /> <?php _e( 'If you want to exclude more than 4 scripts, your page score will be hit and therefore the use of "Move scripts to footer" option will become useless so you can disable it.', 'sb-pack' ); ?>
202
- </p>
203
- <div class="td-border-last"></div>
204
-
205
- <p>
206
- <h4 class="hndle"><?php _e( 'As a guidance, here is a list of script handles and script paths of each enqueued script detected by our plugin:', 'sb-pack' ); ?></h4>
207
- </p>
208
-
209
- <div class="sbp-all-enqueued">
210
-
211
- <div class="sbp-div-head">
212
- <div class="sbp-title-scripts"><?php _e('Script Handle', 'sb-pack' ); ?></div>
213
- <div class="sbp-title-scripts"><?php _e('Script Path', 'sb-pack' ); ?></div>
214
- </div>
215
-
216
- <div class="sbp-inline-wrap">
217
-
218
- <div class="sbp-columns1 sbp-width">
219
- <?php echo get_option( 'all_theme_scripts_handle' ) ; ?>
220
- </div>
221
-
222
- <div class="sbp-columns2 sbp-width">
223
- <?php echo get_option( 'all_theme_scripts_src' ) ; ?>
224
- </div>
225
-
226
-
227
- </div>
228
-
229
- </div>
230
- <p class="description">
231
- <?php _e('*The list may be incomplete in some circumstances.', 'sb-pack' ); ?>
232
- </p>
233
- </div>
234
- </div>
235
-
236
-
237
-
238
- <div style="display: block;" class="postbox closed" id="tiguan3">
239
- <div title="Click to toggle" class="handlediv"><br></div><h3 class="hndle"><?php _e( 'Exclude scripts from being deferred', 'sb-pack' ); ?></h3>
240
- <div class="inside">
241
-
242
- <div class="sbp-inline-wrap">
243
-
244
- <p>
245
- <input type="text" class="sbp-more-width" name="sbp_defer_exceptions1" id="sbp_defer_exceptions1" value="<?php echo $defer_exceptions1; ?>" />
246
- </p>
247
-
248
- <p>
249
- <input type="text" class="sbp-more-width" name="sbp_defer_exceptions2" id="sbp_defer_exceptions2" value="<?php echo $defer_exceptions2; ?>" />
250
- </p>
251
-
252
- <p>
253
- <input type="text" class="sbp-more-width" name="sbp_defer_exceptions3" id="sbp_defer_exceptions3" value="<?php echo $defer_exceptions3; ?>" />
254
- </p>
255
-
256
- <p>
257
- <input type="text" class="sbp-more-width" name="sbp_defer_exceptions4" id="sbp_defer_exceptions4" value="<?php echo $defer_exceptions4; ?>" />
258
- </p>
259
-
260
-
261
- </div>
262
- <p class="description">
263
- <?php _e('Enter one by text field, the final part of the js files that you want to be excluded from defer parsing option. For example: <code>jquery.min.js</code> If you want to exclude more than 4 scripts, your page score will be hit and therefore the use of "Defer parsing of javascript files" option will become useless so you can disable it', 'sb-pack' ); ?>
264
- </p>
265
-
266
- </div>
267
- </div>
268
-
269
-
270
- <div style="display: block;" class="postbox closed" id="tiguan4">
271
- <div title="Click to toggle" class="handlediv"><br></div><h3 class="hndle sbp-emphasize"><?php _e( 'Change the default image compression level', 'sb-pack' ); ?></h3>
272
- <div class="inside">
273
-
274
-
275
-
276
- <script type='text/javascript'>
277
- var jpegCompression = '<?php echo $this->image_compression; ?>';
278
- </script>
279
-
280
- <div>
281
-
282
- <p class="sbp-amount">
283
- <?php _e( 'Compression level:', 'sb-pack' ); ?><input type="text" class="sbp-amount" id="sbp-amount" />
284
- </p>
285
-
286
- <p>
287
- <div class="sbp-slider" id="sbp-slider"></div>
288
- <input type="hidden" name="sbp_integer" id="sbp_integer" value="<?php echo $this->image_compression; ?>" />
289
- </p>
290
-
291
- <p class="description">
292
- <?php _e( 'The default image compression setting in WordPress is 90%. Compressing your images further than the default will make your file sizes even smaller and will boost your site performance. As a reference, a lower level of compression means more performance but might induce quality loss. We recommend you choose a compression level between 50 and 75.', 'sb-pack' ); ?><br />
293
- </p>
294
- <p class="description"><strong>
295
- <?php _e( 'Note that any changes you make will only affect new images uploaded to your site. A specialized plugin can optimize all your present images and will also optimize new ones as they are added. ', 'sb-pack' ); ?>
296
- </strong></p>
297
- <br>
298
- <p class="description sp-link"><strong>
299
- <a href="https://shortpixel.com/h/af/U3NQVWK31472" target="_blank">
300
- <?php _e( 'Test your website with ShortPixel for free to see how much you could gain by optimizing your images.', 'sb-pack' ); ?>
301
- </a>
302
- </strong></p>
303
- <a href="https://shortpixel.com/h/af/U3NQVWK31472" target="_blank"><img src="<?php echo $this->plugin_url . "inc/images/sp.png"; ?>" class="sbp-sp"/></a>
304
- <p class="description">
305
- <?php _e( 'ShortPixel is an easy to use, comprehensive, stable and frequently updated image optimization plugin supported by the friendly team that created it. Using a powerful set of specially tuned algorithms, it squeezes the most of each image striking the best balance between image size and quality. Current images can be all optimized with a single click. Newly added images are automatically resized/rescaled and optimized on the fly, in the background.', 'sb-pack' ); ?>
306
- </p>
307
- <p class="description-link">
308
- <a href="https://shortpixel.com/h/af/U3NQVWK31472" target="_blank">&gt;&gt; <?php _e( 'More info', 'sb-pack' ); ?></a>
309
- </p>
310
- </div>
311
-
312
- </div>
313
- </div>
314
-
315
-
316
- <div style="display: block;" class="postbox closed" id="tiguan5">
317
- <div title="Click to toggle" class="handlediv"><br></div><h3 class="hndle"><?php _e( 'Still need more speed?', 'sb-pack' ); ?></h3>
318
- <div class="inside">
319
-
320
-
321
- <p>
322
- <input id="sbp_css_async" name="sbp_settings[sbp_css_async]" type="checkbox" value="1" <?php checked( 1, isset( $sbp_options['sbp_css_async'] ) ); ?> />
323
- <label for="sbp_css_async"><?php _e( 'Load CSS asynchronously', 'sb-pack' ); ?></label>
324
- </p>
325
-
326
-
327
- <div id="sbp-css-content">
328
-
329
- <p>
330
- <input id="sbp_settings[sbp_css_minify]" name="sbp_settings[sbp_css_minify]" type="checkbox" value="1" <?php checked( 1, isset( $sbp_options['sbp_css_minify'] ) ); ?> />
331
- <label for="sbp_settings[sbp_css_minify]"><?php _e( 'Minify all CSS styles', 'sb-pack' ); ?></label>
332
- </p>
333
-
334
- <div class="sbp-radio-content">
335
-
336
- <p>
337
- <input id="sbp_settings[sbp_footer_css]" name="sbp_settings[sbp_footer_css]" type="checkbox" value="1" <?php checked( 1, isset( $sbp_options['sbp_footer_css'] ) ); ?> />
338
- <label for="sbp_settings[sbp_footer_css]"><?php _e( 'Insert all CSS styles inline to the footer', 'sb-pack' ); ?></label>
339
- </p>
340
-
341
- <p>
342
- <input id="sbp_settings[sbp_is_mobile]" name="sbp_settings[sbp_is_mobile]" type="checkbox" value="1" <?php checked( 1, isset( $sbp_options['sbp_is_mobile'] ) ); ?> />
343
- <label for="sbp_settings[sbp_is_mobile]"><?php _e( 'Disable all above CSS options on mobile devices', 'sb-pack' ); ?></label>
344
- </p>
345
-
346
- <div class="td-border-last"></div>
347
-
348
- <h4><?php _e( 'Exclude styles from asynchronously option: ', 'sb-pack' ); ?></h4>
349
- <p><textarea cols="50" rows="3" name="sbp_css_exceptions" id="sbp_css_exceptions" value="<?php echo $css_exceptions; ?>" /><?php echo $css_exceptions; ?></textarea></p>
350
- <p class="description">
351
- <?php _e('Enter one by line, the handles of css files or the final part of the style URL. For example: <code>font-awesome</code> or <code>font-awesome.min.css</code>', 'sb-pack' ); ?>
352
- </p>
353
-
354
-
355
- <div class="td-border-last"></div>
356
-
357
- <p>
358
- <h4 class="hndle"><?php _e( 'As a guidance, here is a list of css handles of each enqueued style detected by our plugin:', 'sb-pack' ); ?></h4>
359
- </p>
360
-
361
- <div class="sbp-all-enqueued">
362
-
363
- <div class="sbp-div-head">
364
- <div class="sbp-title-scripts"><?php _e('CSS Handle', 'sb-pack' ); ?></div>
365
- </div>
366
-
367
- <div class="sbp-inline-wrap">
368
- <div class="sbp-columns1 sbp-width">
369
- <?php echo get_option( 'all_theme_styles_handle' ) ; ?>
370
- </div>
371
- </div>
372
-
373
- </div>
374
-
375
- <p class="description">
376
- <?php _e('*The list may be incomplete in some circumstances.', 'sb-pack' ); ?>
377
- </p>
378
-
379
-
380
-
381
- <div class="td-border-last"></div>
382
- <h4 class="sbp-icon-information"><?php _e( 'Additional information:', 'sb-pack' ); ?></h4>
383
- <p class ="description"><strong><?php _e( 'Insert all CSS styles inline to the footer: ', 'sb-pack' ); ?></strong><?php _e( 'this option will eliminate render-blocking CSS warning in Google Page Speed test. If there is something broken after activation, you need to disable this option. Please note that before enabling this sensitive option, it is strongly recommended that you also enable the "Move scripts to the footer" option.', 'sb-pack' ); ?></p>
384
-
385
- </div>
386
- </div>
387
- </div><!-- END sbp-radio-content -->
388
- </div><!-- END sbp-css-content -->
389
-
390
-
391
-
392
- <?php submit_button() ?>
393
-
394
- </form>
395
-
396
- </div> <!-- END welcome-panel-content -->
397
-
398
- </div> <!-- END welcome-panel -->
399
-
400
- <div class="col-fulwidth feedback-box">
401
- <h3>
402
- <?php esc_html_e( 'Lend a hand & share your thoughts', 'saboxplugin' ); ?>
403
- <img src="<?php echo $this->plugin_url . "inc/images/handshake.png"; ?>">
404
- </h3>
405
- <p>
406
- <?php
407
- echo vsprintf(
408
- // Translators: 1 is Theme Name, 2 is opening Anchor, 3 is closing.
409
- __( 'We\'ve been working hard on making %1$s the best one out there. We\'re interested in hearing your thoughts about %1$s and what we could do to <u>make it even better</u>.<br/> <br/> %2$sHave your say%3$s', 'sb-pack' ),
410
- array(
411
- 'Speed Booster Pack',
412
- '<a class="button button-feedback" target="_blank" href="http://bit.ly/feedback-speed-booster-pack">',
413
- '</a>',
414
- )
415
- );
416
- ?>
417
- </p>
418
- </div>
419
-
420
- <!-- START docs and version areas -->
421
-
422
- <div class="sbp-title-div">
423
- <div class="sbp-title">
424
- <?php _e( 'What do these settings mean?', 'sb-pack' ); ?>
425
- </div>
426
- </div>
427
-
428
- <div class="sbp-box"><!-- start sbp-box div 1 -->
429
-
430
- <div class="sbp-box-legend">
431
- <i class="sbp-icon-help"></i>
432
- </div>
433
-
434
- <p><a href="http://tiguandesign.com/docs/speed-booster/" target="_blank" title="Documentation"><?php _e( 'Read online plugin documentation', 'sb-pack' ); ?></a><?php _e( ' with guidelines to enhance your website performance.', 'sb-pack' ); ?></p>
435
-
436
- </div> <!-- end sbp-box div 1-->
437
-
438
- <!-- END docs and version areas -->
439
- </div>
440
- </div>
441
- </div>
442
- </div> <!-- END sb-pack-->
443
-
444
- </div> <!-- end wrap div -->
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ // handle closed postboxes
4
+ $user_id = get_current_user_id();
5
+ $option_name = 'closedpostboxes_' . 'toplevel_page_sbp-options'; // use the "pagehook" ID
6
+ $option_arr = get_user_option( $option_name, $user_id ); // get the options for that page
7
+
8
+
9
+ if ( is_array( $option_arr ) && in_array( 'exclude-from-footer', $option_arr ) ) {
10
+ $closed = true;
11
+ }
12
+
13
+
14
+ if ( is_array( $option_arr ) && in_array( 'defer-from-footer', $option_arr ) ) {
15
+ $closed_defer = true;
16
+ }
17
+
18
+ ?>
19
+
20
+ <div class="wrap about-wrap">
21
+ <div class="sb-pack">
22
+
23
+ <h1><?php echo esc_html( get_admin_page_title() ); ?></h1>
24
+
25
+ <div class="about-text">
26
+ <?php
27
+ /* Translators: Welcome Screen Description. */
28
+ echo esc_html__( 'Speed Booster Pack is a lightweight, frequently updated, easy to use and well supported plugin which allows you to improve your website’s loading speed. Visitors usually close a website if it doesn’t load in a few seconds and the slower a site loads the greater the chances are that the visitors will leave. And you don’t want that to happen, do you?
29
+ ', 'sb-pack' );
30
+ ?>
31
+ </div>
32
+ <div class="wp-badge sbp-welcome-logo"></div>
33
+ <div class="sbp-fast-as-a-rabbit">
34
+ <div class="sbp-speed-page-load">
35
+ <?php _e( 'Page load: ', 'sb-pack' ); ?>
36
+ <span><?php echo esc_html( $page_time ) . __( ' sec', 'sb-pack' ); ?></span>
37
+ <span class="sbp-progress-bar">
38
+ <?php if ( $page_time < 10 ) { ?>
39
+ <progress max="100" value="<?php echo $page_time * 10; ?>">
40
+ <?php } else { ?>
41
+ <progress max="100" value="100" class="sbp-progress-red">
42
+ <?php } ?>
43
+ </progress>
44
+
45
+ <?php if ( ( $page_time ) > 10 ) { ?>
46
+ <img draggable="false" class="emoji" title="Your page loading time just made us cry" alt="😥" src="https://s.w.org/images/core/emoji/2.4/svg/1f625.svg">
47
+ <?php } else if ( ( $page_time ) > 8 && ( $page_time ) < 10 ) { ?>
48
+ <img draggable="false" class="emoji" title="Your page loading time just made us cry" alt="😥" src="https://s.w.org/images/core/emoji/2.4/svg/1f625.svg">
49
+ <?php } else if ( ( $page_time ) > 6 && ( $page_time ) < 8 ) { ?>
50
+ <img draggable="false" class="emoji" title="I'm not gonna lie, things aren't looking to good" alt="😮" src="https://s.w.org/images/core/emoji/2.4/svg/1f62e.svg">
51
+ <?php } else if ( ( $page_time ) > 4 && ( $page_time ) < 6 ) { ?>
52
+ <img draggable="false" class="emoji" title="Could be better" alt="🙄" src="https://s.w.org/images/core/emoji/2.4/svg/1f644.svg">
53
+ <?php } else if ( ( $page_time ) > 2 && ( $page_time ) < 4 ) { ?>
54
+ <img draggable="false" class="emoji" title="Going strong" alt="😥" src="https://s.w.org/images/core/emoji/2.4/svg/1f625.svg">
55
+ <?php } else if ( ( $page_time ) < 2 ) { ?>
56
+ <img draggable="false" title="You're a star" class="emoji" alt="⭐" src="https://s.w.org/images/core/emoji/2.4/svg/2b50.svg">
57
+ <?php } ?>
58
+ </span>
59
+
60
+ </div>
61
+ <div class="sbp-speed-db-queries">
62
+ <i class="dashicons dashicons-dashboard"></i><span><?php echo esc_html( $page_queries ); ?></span> <?php _e( 'DB Queries', 'sb-pack' ); ?>
63
+ </div>
64
+
65
+ <div class="sbp-speed-memory-usage">
66
+ <i class="dashicons dashicons-chart-pie"></i>
67
+ <?php _e( 'Memory: ', 'sb-pack' ); ?>
68
+ <span><?php echo number_format( ( memory_get_peak_usage() / 1024 / 1024 ), 1, ',', '' ) . ' / ' . ini_get( 'memory_limit' ), '<br />'; ?></span>
69
+
70
+ </div>
71
+
72
+ <div class="sbp-speed-plugin-number">
73
+ <i class="dashicons dashicons-admin-plugins"></i>
74
+ <?php _e( 'Plugins: ', 'sb-pack' ); ?>
75
+ <span><?php echo count( get_option( 'active_plugins' ) ); ?></span>
76
+ </div>
77
+
78
+ <div class="sbp-speed-info-analyze-container">
79
+ <!-- <a href="#" class="button button-secondary"><i class="dashicons dashicons-info"></i></a> -->
80
+ <!-- <a href="#" class="button button-primary"><i class="dashicons dashicons-search"></i><?php _e( 'Analyse', 'sb-pack' ); ?> -->
81
+ </a>
82
+ </div>
83
+ </div>
84
+
85
+ <h2 class="nav-tab-wrapper wp-clearfix">
86
+ <a class="nav-tab" href="#general-options"><?php _e( 'General', 'sb-pack' ); ?></a>
87
+ <a class="nav-tab" href="#advanced-options"><?php _e( 'Advanced', 'sb-pack' ); ?></a>
88
+ <a class="nav-tab" href="#image-options"><?php _e( 'Image Optimization', 'sb-pack' ); ?></a>
89
+ <a class="nav-tab" href="#support"><?php _e( 'Support', 'sb-pack' ); ?></a>
90
+ </h2>
91
+
92
+ <form method="post" action="options.php">
93
+
94
+ <?php wp_nonce_field( 'closedpostboxes', 'closedpostboxesnonce', false ); ?>
95
+ <?php wp_nonce_field( 'meta-box-order', 'meta-box-order-nonce', false ); ?>
96
+ <?php settings_fields( 'speed_booster_settings_group' ); ?>
97
+
98
+ <div id="general-options" class="sb-pack-tab">
99
+
100
+ <h3><?php _e( 'General', 'sb-pack' ); ?></h3>
101
+
102
+ <p>
103
+ <input id="sbp_settings[jquery_to_footer]" name="sbp_settings[jquery_to_footer]" type="checkbox" value="1" <?php checked( 1, isset( $sbp_options['jquery_to_footer'] ) ); ?> />
104
+ <label for="sbp_settings[jquery_to_footer]"><?php _e( 'Move scripts to the footer', 'sb-pack' ); ?></label>
105
+ <span class="tooltip-right"
106
+ data-tooltip="<?php echo __( 'This option move all scripts to the footer while keeping stylesheets in the header to improve page loading speed and get a higher score on the major speed testing sites such as GTmetrix or other website speed testing tools.', 'sb-pack' ); ?>">
107
+ <i class="dashicons dashicons-editor-help"></i>
108
+ </span>
109
+
110
+ </p>
111
+
112
+ <p>
113
+ <input id="sbp_settings[use_google_libs]" name="sbp_settings[use_google_libs]" type="checkbox" value="1" <?php checked( 1, isset( $sbp_options['use_google_libs'] ) ); ?> />
114
+ <label for="sbp_settings[use_google_libs]"><?php _e( 'Load JS from Google Libraries', 'sb-pack' ); ?></label>
115
+ <span class="tooltip-right"
116
+ data-tooltip="<?php echo __( 'Loading WordPress javascript files from Google’s Libraries rather than serving it from your WordPress install directly, will reduce latency, increase parallelism and improve caching.', 'sb-pack' ); ?>">
117
+ <i class="dashicons dashicons-editor-help"></i>
118
+ </span>
119
+ </p>
120
+
121
+ <p>
122
+ <input id="sbp_settings[minify_html_js]" name="sbp_settings[minify_html_js]" type="checkbox" value="1" <?php checked( 1, isset( $sbp_options['minify_html_js'] ) ); ?> />
123
+ <label for="sbp_settings[minify_html_js]"><?php _e( 'Minify HTML', 'sb-pack' ); ?></label>
124
+ <span class="tooltip-right"
125
+ data-tooltip="<?php echo __( 'Activate this option only if you don’t want to use other minify plugins or other speed optimization plugin that has minify option included. If something goes wrong, simply uncheck this option and save the settings.', 'sb-pack' ); ?>">
126
+ <i class="dashicons dashicons-editor-help"></i>
127
+ </span>
128
+ </p>
129
+
130
+ <p>
131
+ <input id="sbp_settings[defer_parsing]" name="sbp_settings[defer_parsing]" type="checkbox" value="1" <?php checked( 1, isset( $sbp_options['defer_parsing'] ) ); ?> />
132
+ <label for="sbp_settings[defer_parsing]"><?php _e( 'Defer parsing of javascript files', 'sb-pack' ); ?></label>
133
+ <span class="tooltip-right"
134
+ data-tooltip="<?php echo __( '!!!Note: This will be disabled IF Move Scripts to Footer is enabled. By deferring parsing of unneeded JavaScript until it needs to be executed, you can reduce the initial load time of your page. Please note that this option will not defer the main WordPress jQuery script if Load JS from Google Libraries option is not checked.', 'sb-pack' ); ?>">
135
+ <i class="dashicons dashicons-editor-help"></i>
136
+ </span>
137
+ </p>
138
+
139
+ <p>
140
+ <input id="sbp_settings[query_strings]" name="sbp_settings[query_strings]" type="checkbox" value="1" <?php checked( 1, isset( $sbp_options['query_strings'] ) ); ?> />
141
+ <label for="sbp_settings[query_strings]"><?php _e( 'Remove query strings', 'sb-pack' ); ?></label>
142
+ <span class="tooltip-right"
143
+ data-tooltip="<?php echo __( 'Since most proxies do not cache resources with a ? in their URL, this option allows you to remove any query strings (version numbers) from static resources like CSS & JS files, thus improving your speed scores in services like GTmetrix, PageSpeed, YSlow and Pingdoom.', 'sb-pack' ); ?>">
144
+ <i class="dashicons dashicons-editor-help"></i>
145
+ </span>
146
+ </p>
147
+
148
+ <p>
149
+ <input id="sbp_settings[font_awesome]" name="sbp_settings[font_awesome]" type="checkbox" value="1" <?php checked( 1, isset( $sbp_options['font_awesome'] ) ); ?> />
150
+ <label for="sbp_settings[font_awesome]"><?php _e( 'Removes extra Font Awesome styles', 'sb-pack' ); ?></label>
151
+ <span class="tooltip-right"
152
+ data-tooltip="<?php echo __( 'Use this option only if your theme uses Font Awesome, to prevent other plugins that uses Font Awesome, to add their stylesheets to your theme. In other words, this option removes extra Font Awesome stylesheets added to your theme by certain plugins.', 'sb-pack' ); ?>">
153
+ <i class="dashicons dashicons-editor-help"></i>
154
+ </span>
155
+ </p>
156
+
157
+ <h3> <?php _e( 'More settings', 'sb-pack' ); ?></h3>
158
+
159
+ <p>
160
+ <input id="sbp_settings[remove_emojis]" name="sbp_settings[remove_emojis]" type="checkbox" value="1" <?php checked( 1, isset( $sbp_options['remove_emojis'] ) ); ?> />
161
+ <label for="sbp_settings[remove_emojis]"><?php _e( 'Remove WordPress Emoji scripts', 'sb-pack' ); ?></label>
162
+ <span class="tooltip-right"
163
+ data-tooltip="<?php echo __( 'Emojis are fun and all, but if you are aren’t using them they actually load a JavaScript file (wp-emoji-release.min.js) on every page of your website. For a lot of businesses, this is not needed and simply adds load time to your site. So we recommend disabling this.', 'sb-pack' ); ?>">
164
+ <i class="dashicons dashicons-editor-help"></i>
165
+ </span>
166
+ </p>
167
+
168
+ <p>
169
+ <input id="sbp_settings[remove_wsl]" name="sbp_settings[remove_wsl]" type="checkbox" value="1" <?php checked( 1, isset( $sbp_options['remove_wsl'] ) ); ?> />
170
+ <label for="sbp_settings[remove_wsl]"><?php _e( 'Remove WordPress Shortlink', 'sb-pack' ); ?></label>
171
+ <span class="tooltip-right"
172
+ data-tooltip="<?php echo __( 'WordPress URL shortening is sometimes useful, but it automatically adds an ugly code in your header, so you can remove it.', 'sb-pack' ); ?>">
173
+ <i class="dashicons dashicons-editor-help"></i>
174
+ </span>
175
+ </p>
176
+
177
+ <p>
178
+ <input id="sbp_settings[remove_adjacent]" name="sbp_settings[remove_adjacent]" type="checkbox" value="1" <?php checked( 1, isset( $sbp_options['remove_adjacent'] ) ); ?> />
179
+ <label for="sbp_settings[remove_adjacent]"><?php _e( 'Remove Adjacent Posts Links', 'sb-pack' ); ?></label>
180
+ <span class="tooltip-right"
181
+ data-tooltip="<?php echo __( 'WordPress incorrectly implements this feature that supposedly should fix a pagination issues but it messes up, so there is no reason to keep these around. However, some browsers may use Adjacent Posts Links to navigate your site, although you can remove it if you run a well designed theme.', 'sb-pack' ); ?>">
182
+ <i class="dashicons dashicons-editor-help"></i>
183
+ </span>
184
+ </p>
185
+
186
+ <p>
187
+ <input id="sbp_settings[wml_link]" name="sbp_settings[wml_link]" type="checkbox" value="1" <?php checked( 1, isset( $sbp_options['wml_link'] ) ); ?> />
188
+ <label for="sbp_settings[wml_link]"><?php _e( 'Remove Windows Manifest', 'sb-pack' ); ?></label>
189
+ <span class="tooltip-right"
190
+ data-tooltip="<?php echo __( 'Windows Live Writer (WLW) is a Microsoft application for composing and managing blog posts offline and publish them later. If you are not using Windows Live Writer application, you can remove it from the WP head.', 'sb-pack' ); ?>">
191
+ <i class="dashicons dashicons-editor-help"></i>
192
+ </span>
193
+ </p>
194
+
195
+ <p>
196
+ <input id="sbp_settings[rsd_link]" name="sbp_settings[rsd_link]" type="checkbox" value="1" <?php checked( 1, isset( $sbp_options['rsd_link'] ) ); ?> />
197
+ <label for="sbp_settings[rsd_link]"><?php _e( 'Remove RSD(Really Simple Discovery) Link', 'sb-pack' ); ?></label>
198
+ <span class="tooltip-right"
199
+ data-tooltip="<?php echo __( 'This type of link is used by blog clients. If you edit your site from your browser then you don’t need this. It is also used by some 3rd party applications that utilize XML-RPC requests. In most cases, this is just unnecessary code.', 'sb-pack' ); ?>">
200
+ <i class="dashicons dashicons-editor-help"></i>
201
+ </span>
202
+ </p>
203
+
204
+ <p>
205
+ <input id="sbp_settings[wp_generator]" name="sbp_settings[wp_generator]" type="checkbox" value="1" <?php checked( 1, isset( $sbp_options['wp_generator'] ) ); ?> />
206
+ <label for="sbp_settings[wp_generator]"><?php _e( 'Remove the WordPress Version', 'sb-pack' ); ?></label>
207
+ <span class="tooltip-right"
208
+ data-tooltip="<?php echo __( 'This option is added for security reasons and cleaning the header.', 'sb-pack' ); ?>">
209
+ <i class="dashicons dashicons-editor-help"></i>
210
+ </span>
211
+ </p>
212
+
213
+ <p>
214
+ <input id="sbp_settings[remove_all_feeds]" name="sbp_settings[remove_all_feeds]" type="checkbox" value="1" <?php checked( 1, isset( $sbp_options['remove_all_feeds'] ) ); ?> />
215
+ <label for="sbp_settings[remove_all_feeds]"><?php _e( 'Remove all rss feed links', 'sb-pack' ); ?></label>
216
+ <span class="tooltip-right"
217
+ data-tooltip="<?php echo __( 'This option wil remove all rss feed links to cleanup your WordPress header. It is also useful on Unicorn – The W3C Markup Validation Service to get rid out the “feed does not validate” error.', 'sb-pack' ); ?>">
218
+ <i class="dashicons dashicons-editor-help"></i>
219
+ </span>
220
+ </p>
221
+
222
+ <p>
223
+ <input id="sbp_settings[disable_xmlrpc]" name="sbp_settings[disable_xmlrpc]" type="checkbox" value="1" <?php checked( 1, isset( $sbp_options['disable_xmlrpc'] ) ); ?> />
224
+ <label for="sbp_settings[disable_xmlrpc]"><?php _e( 'Disable XML-RPC', 'sb-pack' ); ?></label>
225
+ <span class="tooltip-right"
226
+ data-tooltip="<?php echo __( 'XML-RPC was added in WordPress 3.5 and allows for remote connections, and unless you are using your mobile device to post to WordPress it does more bad than good. In fact, it can open your site up to a bunch of security risks. There are a few plugins that utilize this such as JetPack, but we don’t recommend using JetPack for performance reasons.', 'sb-pack' ); ?>">
227
+ <i class="dashicons dashicons-editor-help"></i>
228
+ </span>
229
+ </p>
230
+
231
+ <h3><?php _e( 'Need even more speed?', 'sb-pack' ); ?></h3>
232
+
233
+ <p>
234
+ <input id="sbp_css_async" name="sbp_settings[sbp_css_async]" type="checkbox" value="1" <?php checked( 1, isset( $sbp_options['sbp_css_async'] ) ); ?> />
235
+ <label for="sbp_css_async"><?php _e( 'Inline all CSS styles', 'sb-pack' ); ?></label>
236
+ <span class="tooltip-right"
237
+ data-tooltip="<?php echo __( 'Checking this option will inline the contents of all your stylesheets. This helps with the annoying render blocking error Google Page Speed Insights displays.', 'sb-pack' ); ?>">
238
+ <i class="dashicons dashicons-editor-help"></i>
239
+ </span>
240
+ </p>
241
+
242
+ <p>
243
+ <input id="sbp_settings[sbp_css_minify]" name="sbp_settings[sbp_css_minify]" type="checkbox" value="1" <?php checked( 1, isset( $sbp_options['sbp_css_minify'] ) ); ?> />
244
+ <label for="sbp_settings[sbp_css_minify]"><?php _e( 'Minify all (previously) inlined CSS styles', 'sb-pack' ); ?></label>
245
+ <span class="tooltip-right"
246
+ data-tooltip="<?php echo __( 'Minifying all inlined CSS styles will optimize the CSS delivery and will eliminate the annoying message on Google Page Speed regarding to render-blocking css.', 'sb-pack' ); ?>">
247
+ <i class="dashicons dashicons-editor-help"></i>
248
+ </span>
249
+ </p>
250
+
251
+ <p>
252
+ <input id="sbp_settings[sbp_footer_css]" name="sbp_settings[sbp_footer_css]" type="checkbox" value="1" <?php checked( 1, isset( $sbp_options['sbp_footer_css'] ) ); ?> />
253
+ <label for="sbp_settings[sbp_footer_css]"><?php _e( 'Move all inlined CSS into the footer', 'sb-pack' ); ?></label>
254
+ <span class="tooltip-right"
255
+ data-tooltip="<?php echo __( 'Inserting all CSS styles inline to the footer is a sensitive option that will eliminate render-blocking CSS warning in Google Page Speed test. If there is something broken after activation, you need to disable this option. Please note that before enabling this sensitive option, it is strongly recommended that you also enable the “ Move scripts to the footer” option.', 'sb-pack' ); ?>">
256
+ <i class="dashicons dashicons-editor-help"></i>
257
+ </span>
258
+ </p>
259
+
260
+ <p>
261
+ <input id="sbp_settings[sbp_is_mobile]" name="sbp_settings[sbp_is_mobile]" type="checkbox" value="1" <?php checked( 1, isset( $sbp_options['sbp_is_mobile'] ) ); ?> />
262
+ <label for="sbp_settings[sbp_is_mobile]"><?php _e( 'Disable all above CSS options on mobile devices', 'sb-pack' ); ?></label>
263
+ <span class="tooltip-right"
264
+ data-tooltip="<?php echo __( 'Disable all above CSS options on mobile devices: this option was added to avoid some appearance issues on mobile devices.', 'sb-pack' ); ?>">
265
+ <i class="dashicons dashicons-editor-help"></i>
266
+ </span>
267
+ </p>
268
+
269
+ <div class="td-border-last"></div>
270
+
271
+ <h4><?php _e( 'Exclude styles from being inlined and/or minified option: ', 'sb-pack' ); ?></h4>
272
+ <p>
273
+ <textarea cols="50" rows="3" name="sbp_css_exceptions" id="sbp_css_exceptions" value="<?php echo esc_attr( $css_exceptions ); ?>" /><?php echo wp_kses_post( $css_exceptions ); ?></textarea>
274
+ </p>
275
+ <p class="description">
276
+ <?php _e( 'Enter one by line, the handles of css files or the final part of the style URL. For example: <code>font-awesome</code> or <code>font-awesome.min.css</code>', 'sb-pack' ); ?>
277
+ </p>
278
+
279
+ <div class="td-border-last"></div>
280
+
281
+ <p>
282
+ <h4><?php _e( 'As a guidance, here is a list of css handles of each enqueued style detected by our plugin:', 'sb-pack' ); ?></h4>
283
+ </p>
284
+
285
+ <div class="sbp-all-enqueued">
286
+
287
+ <div class="sbp-div-head">
288
+ <div class="sbp-title-scripts"><?php _e( 'CSS Handle', 'sb-pack' ); ?></div>
289
+ </div>
290
+
291
+ <div class="sbp-inline-wrap">
292
+ <div class="sbp-columns1 sbp-width">
293
+ <?php print_r( get_option( 'all_theme_styles_handle' ) ); ?>
294
+ </div>
295
+ </div>
296
+ </div>
297
+
298
+ </div><!--#general-options-->
299
+ <div id="advanced-options" class="sb-pack-tab">
300
+
301
+ <div id="poststuff">
302
+ <div id="postbox-container-exclude-footer-scripts" class="postbox-container">
303
+ <div class="meta-box-sortables" id="normal-sortables">
304
+ <?php if ( isset( $closed ) && $closed == true ) { ?>
305
+ <div class="postbox closed" id="exclude-from-footer">
306
+ <?php } else { ?>
307
+ <div class="postbox" id="exclude-from-footer">
308
+ <?Php } ?>
309
+ <button type="button" class="handlediv" aria-expanded="true">
310
+ <span class="screen-reader-text"><?php _e( 'Exclude scripts from being moved to the footer', 'sb-pack' ); ?></span>
311
+ <span class="toggle-indicator" aria-hidden="true"></span>
312
+ </button>
313
+ <h3 class="hndle ui-sortable-handle">
314
+ <span><?php _e( 'Exclude scripts from being moved to the footer', 'sb-pack' ); ?></span>
315
+ </h3>
316
+ <div class="inside">
317
+ <div class="sbp-inline-wrap">
318
+
319
+ <h4><?php _e( 'Script Handle', 'sb-pack' ); ?></h4>
320
+ <i>
321
+ <?php _e( 'Enter one js handle per text field.', 'sb-pack' ); ?> <?php _e( 'Read more', 'sb-pack' ); ?>
322
+ <a href="https://docs.machothemes.com/article/119-plugin-options-explained#exclude-scripts-from-being-moved-to-the-footer-50" target="_blank" title="Documentation"><?php _e( 'detailed instructions', 'sb-pack' ); ?></a> <?php _e( 'on this option on plugin documentation.', 'sb-pack' ); ?>
323
+
324
+ </i>
325
+
326
+ <p>
327
+ <input type="text" name="sbp_js_footer_exceptions1" id="sbp_js_footer_exceptions1" value="<?php echo esc_attr( $js_footer_exceptions1 ); ?>" />
328
+ </p>
329
+
330
+ <p>
331
+ <input type="text" name="sbp_js_footer_exceptions2" id="sbp_js_footer_exceptions2" value="<?php echo esc_attr( $js_footer_exceptions2 ); ?>" />
332
+ </p>
333
+
334
+ <p>
335
+ <input type="text" name="sbp_js_footer_exceptions3" id="sbp_js_footer_exceptions3" value="<?php echo esc_attr( $js_footer_exceptions3 ); ?>" />
336
+ </p>
337
+
338
+ <p>
339
+ <input type="text" name="sbp_js_footer_exceptions4" id="sbp_js_footer_exceptions4" value="<?php echo esc_attr( $js_footer_exceptions4 ); ?>" />
340
+ </p>
341
+
342
+ <div class="td-border-last"></div>
343
+
344
+ <p>
345
+ <h4><?php _e( 'As a guidance, here is a list of script handles and script paths of each enqueued script detected by our plugin:', 'sb-pack' ); ?></h4>
346
+ </p>
347
+
348
+ <div class="sbp-all-enqueued">
349
+
350
+ <div class="sbp-div-head">
351
+ <div class="sbp-title-scripts"><?php _e( 'Script Handle', 'sb-pack' ); ?></div>
352
+ <div class="sbp-title-scripts"><?php _e( 'Script Path', 'sb-pack' ); ?></div>
353
+ </div>
354
+
355
+ <div class="sbp-inline-wrap">
356
+
357
+ <div class="sbp-columns1 sbp-width">
358
+ <?php
359
+ $all_script_handles = get_option( 'all_theme_scripts_handle' );
360
+
361
+ $all_script_handles = explode( '<br />', $all_script_handles );
362
+
363
+ foreach ( $all_script_handles as $key => $value ) {
364
+ if ( ! empty( $value ) ) {
365
+ echo '<p>' . esc_html( $value ) . '</p>';
366
+ }
367
+ }
368
+ ?>
369
+ </div>
370
+
371
+ <div class="sbp-columns2 sbp-width">
372
+ <?php
373
+ $all_scripts_src = get_option( 'all_theme_scripts_src' );
374
+
375
+ $all_scripts_src = explode( '<br />', $all_scripts_src );
376
+
377
+ foreach ( $all_scripts_src as $key => $value ) {
378
+ if ( ! empty( $value ) ) {
379
+ $value = parse_url( $value );
380
+ echo '<p>' . esc_html( str_replace( '/wp-content', '', $value['path'] ) ) . '</p>';
381
+ }
382
+
383
+ }
384
+ ?>
385
+ </div>
386
+
387
+ </div>
388
+
389
+ </div>
390
+
391
+ </div><!--/.sbp-inline-wrap-->
392
+
393
+ </div>
394
+ </div>
395
+ </div>
396
+ </div>
397
+
398
+ <div id="postbox-container-defer-scripts" class="postbox-container">
399
+
400
+ <?php if ( isset( $closed_defer ) && $closed_defer == true ) { ?>
401
+ <div class="postbox closed" id="defer-from-footer">
402
+ <?php } else { ?>
403
+ <div class="postbox" id="defer-from-footer">
404
+ <?Php } ?>
405
+
406
+ <button type="button" class="handlediv" aria-expanded="true">
407
+ <span class="screen-reader-text"><?php _e( 'Exclude scripts from being deferred', 'sb-pack' ); ?></span>
408
+ <span class="toggle-indicator" aria-hidden="true"></span>
409
+ </button>
410
+ <h3 class="hndle ui-sortable-handle">
411
+ <span><?php _e( 'Exclude scripts from being deferred', 'sb-pack' ); ?></span>
412
+ </h3>
413
+ <div class="inside">
414
+
415
+ <div class="sbp-inline-wrap">
416
+ <p>
417
+ <input type="text" class="sbp-more-width" name="sbp_defer_exceptions1" id="sbp_defer_exceptions1" value="<?php echo $defer_exceptions1; ?>" />
418
+ </p>
419
+
420
+ <p>
421
+ <input type="text" class="sbp-more-width" name="sbp_defer_exceptions2" id="sbp_defer_exceptions2" value="<?php echo $defer_exceptions2; ?>" />
422
+ </p>
423
+
424
+ <p>
425
+ <input type="text" class="sbp-more-width" name="sbp_defer_exceptions3" id="sbp_defer_exceptions3" value="<?php echo $defer_exceptions3; ?>" />
426
+ </p>
427
+
428
+ <p>
429
+ <input type="text" class="sbp-more-width" name="sbp_defer_exceptions4" id="sbp_defer_exceptions4" value="<?php echo $defer_exceptions4; ?>" />
430
+ </p>
431
+ </div>
432
+ <p class="description">
433
+ <?php _e( 'Enter one by text field, the handle part of the js files that you want to be excluded from defer parsing option. For example: <code>jquery-core</code> If you want to exclude more than 4 scripts, you can use the following filter: <code>sbp_exclude_defer_scripts</code> which takes an array of script handles as params. If you don\'t know how to handle this, feel free to post on our support forums.', 'sb-pack' ); ?>
434
+ </p>
435
+
436
+ </div>
437
+ </div>
438
+ </div>
439
+ </div>
440
+ </div>
441
+
442
+ <div id="image-options" class="sb-pack-tab">
443
+
444
+ <br />
445
+ <?php
446
+ $plugins = array(
447
+ 'shortpixel-image-optimiser' => array(
448
+ 'title' => esc_html__( 'ShortPixel Image Optimizer', 'sb-pack' ),
449
+ 'description' => esc_html__( 'Increase your website’s SEO ranking, number of visitors and ultimately your sales by optimizing any image or PDF document on your website. ', 'sb-pack' ),
450
+ 'more' => 'https://shortpixel.com/h/af/IVAKFSX31472',
451
+ ),
452
+
453
+ );
454
+
455
+ if ( ! function_exists( 'get_plugins' ) || ! function_exists( 'is_plugin_active' ) ) {
456
+ require_once ABSPATH . 'wp-admin/includes/plugin.php';
457
+ }
458
+
459
+ $installed_plugins = get_plugins();
460
+
461
+ function sbp_get_plugin_basename_from_slug( $slug, $installed_plugins ) {
462
+ $keys = array_keys( $installed_plugins );
463
+ foreach ( $keys as $key ) {
464
+ if ( preg_match( '|^' . $slug . '/|', $key ) ) {
465
+ return $key;
466
+ }
467
+ }
468
+
469
+ return $slug;
470
+ }
471
+
472
+ ?>
473
+
474
+ <div class="sbp-recommended-plugins">
475
+ <?php
476
+ foreach ( $plugins as $slug => $plugin ) {
477
+
478
+ $label = __( 'Install + Activate & get 500 free credits', 'sb-pack' );
479
+ $action = 'install';
480
+ $plugin_path = sbp_get_plugin_basename_from_slug( $slug, $installed_plugins );
481
+ $url = '#';
482
+ $class = '';
483
+
484
+ if ( file_exists( ABSPATH . 'wp-content/plugins/' . $plugin_path ) ) {
485
+
486
+ if ( is_plugin_active( $plugin_path ) ) {
487
+ $label = __( 'Activated', 'sb-pack' );
488
+ $action = 'disable';
489
+ $class = 'disabled';
490
+ } else {
491
+ $label = __( 'Activate & get 500 free credits', 'sb-pack' );
492
+ $action = 'activate';
493
+ $url = wp_nonce_url( add_query_arg( array(
494
+ 'action' => 'activate',
495
+ 'plugin' => $plugin_path,
496
+ ), admin_url( 'plugins.php' ) ), 'activate-plugin_' . $plugin_path );
497
+ }
498
+ }
499
+
500
+ ?>
501
+ <div class="sbp-recommended-plugin">
502
+ <div class="plugin-image">
503
+ <img src="https://ps.w.org/shortpixel-image-optimiser/assets/icon-128x128.png?rev=1038819">
504
+ </div>
505
+ <div class="plugin-information">
506
+ <h3 class="plugin-name">
507
+ <strong><?php echo esc_html( $plugin['title'] ); ?></strong></h3>
508
+ <p class="plugin-description"><?php echo esc_html( $plugin['description'] ); ?></p>
509
+
510
+ <a href="<?php echo esc_url( $url ); ?>" data-action="<?php echo esc_attr( $action ); ?>" data-slug="<?php echo esc_attr( $plugin_path ); ?>" data-message="<?php esc_html_e( 'Activated', 'sb-pack' ); ?>" class="button-primary sbp-plugin-button <?php echo esc_attr( $class ); ?>"><?php echo esc_html( $label ); ?></a>
511
+ <?php if ( isset( $plugin['more'] ) ) : ?>
512
+ <a href="<?php echo esc_url( $plugin['more'] ); ?>" class="button-secondary" target="_blank"><?php esc_html_e( 'Test your site for free', 'sb-pack' ); ?></a>
513
+ <?php endif ?>
514
+ </div>
515
+ </div>
516
+ <?php } ?>
517
+ </div>
518
+
519
+ <h3><?php _e( 'Change the default image compression level', 'sb-pack' ); ?></h3>
520
+
521
+ <script type='text/javascript'>
522
+ var jpegCompression = '<?php echo $this->image_compression; ?>';
523
+ </script>
524
+
525
+ <p class="sbp-amount">
526
+ <?php _e( 'Compression level:', 'sb-pack' ); ?>
527
+ <input type="text" class="sbp-amount" id="sbp-amount" />
528
+ </p>
529
+
530
+ <p>
531
+ <div class="sbp-slider" id="sbp-slider"></div>
532
+ <input type="hidden" name="sbp_integer" id="sbp_integer" value="<?php echo $this->image_compression; ?>" />
533
+ </p>
534
+
535
+ <p class="description">
536
+ <?php _e( 'The default image compression setting in WordPress is 90%. Compressing your images further than the default will make your file sizes even smaller and will boost your site performance. As a reference, a lower level of compression means more performance but might induce quality loss. We recommend you choose a compression level between 50 and 75.', 'sb-pack' ); ?>
537
+ <br />
538
+ </p>
539
+ <p class="description"><strong>
540
+ <?php _e( 'Note that any changes you make will only affect new images uploaded to your site. A specialized plugin can optimize all your present images and will also optimize new ones as they are added. ', 'sb-pack' ); ?>
541
+ </strong></p>
542
+ <br>
543
+
544
+ </div><!--#image-options-->
545
+ <div id="support" class="sb-pack-tab">
546
+
547
+ <?php
548
+ if ( ! defined( 'WPINC' ) ) {
549
+ die;
550
+ }
551
+ ?>
552
+ <div class="feature-section sbp-support">
553
+ <div class="row two-col center-support">
554
+
555
+ <h3>
556
+ <i class="dashicons dashicons-sos" style="display: inline-block;vertical-align: middle;margin-right: 5px"></i><?php esc_html_e( 'Contact Support', 'sb-pack' ); ?>
557
+ </h3>
558
+ <p>
559
+ <i><?php esc_html_e( 'We offer support through WordPress.org\'s support forums.', 'sb-pack' ); ?></i>
560
+ </p>
561
+ <p>
562
+ <a target="_blank" class="button button-hero button-primary" href="<?php echo esc_url( 'https://wordpress.org/support/plugin/speed-booster-pack#new-post' ); ?>"><?php esc_html_e( 'Post on our support forums', 'sb-pack' ); ?></a>
563
+ </p>
564
+
565
+ </div>
566
+ <div class="row">
567
+ <h2 class="sbp-title">Looking for better WP hosting ?</h2>
568
+ </div>
569
+ <div class="row sbp-blog three-col">
570
+ <div class="col">
571
+ <h3>
572
+ <i class="dashicons dashicons-performance" style="display: inline-block;vertical-align: middle;margin-right: 5px"></i><?php esc_html_e( 'Our Bluehost Hosting Review', 'sb-pack' ); ?>
573
+ </h3>
574
+ <p>
575
+ <i><?php esc_html_e( 'Despite its popularity, though, Bluehost often carries a negative perception among WordPress professionals. So as we dig into this Bluehost review, we\'ll be looking to figure out whether Bluehost\'s performance and features actually justify that reputation.', 'sb-pack' ); ?></i>
576
+ </p>
577
+ <p>
578
+ <a target="_blank" href="<?php echo esc_url( 'https://www.machothemes.com/blog/bluehost-review/?utm_source=sbp&utm_medium=about-page&utm_campaign=blog-links' ); ?>"><?php esc_html_e( 'Read more', 'sb-pack' ); ?></a>
579
+ </p>
580
+ </div><!--/.col-->
581
+
582
+ <div class="col">
583
+ <h3>
584
+ <i class="dashicons dashicons-performance" style="display: inline-block;vertical-align: middle;margin-right: 5px"></i><?php esc_html_e( 'Our InMotion Hosting Review', 'sb-pack' ); ?>
585
+ </h3>
586
+ <p>
587
+ <i><?php esc_html_e( 'InMotion Hosting is a popular independent web host that serves over 300,000 customers. They\'re notably not a part of the EIG behemoth (the parent company behind Bluehost, HostGator, and more), which is a plus in my book.', 'sb-pack' ); ?></i>
588
+ </p>
589
+ <p>
590
+ <a target="_blank" href="<?php echo esc_url( 'https://www.machothemes.com/blog/inmotion-hosting-review/?utm_source=sbp&utm_medium=about-page&utm_campaign=blog-links' ); ?>"><?php esc_html_e( 'Read more', 'sb-pack' ); ?></a>
591
+ </p>
592
+ </div><!--/.col-->
593
+
594
+ <div class="col">
595
+ <h3>
596
+ <i class="dashicons dashicons-performance" style="display: inline-block;vertical-align: middle;margin-right: 5px"></i><?php esc_html_e( 'Our A2 Hosting Review', 'sb-pack' ); ?>
597
+ </h3>
598
+ <p>
599
+ <i><?php esc_html_e( 'When it comes to affordable WordPress hosting, A2 Hosting is a name that often comes up in various WordPress groups for offering quick-loading performance that belies its low price tag.', 'sb-pack' ); ?></i>
600
+ </p>
601
+ <p>
602
+ <a target="_blank" href="<?php echo esc_url( 'https://www.machothemes.com/blog/a2-hosting-review/?utm_source=sbp&utm_medium=about-page&utm_campaign=blog-links' ); ?>"><?php esc_html_e( 'Read more', 'sb-pack' ); ?></a>
603
+ </p>
604
+ </div><!--/.col-->
605
+ </div>
606
+ </div><!--/.feature-section-->
607
+
608
+ <div class="col-fulwidth feedback-box">
609
+ <h3>
610
+ <?php esc_html_e( 'Lend a hand & share your thoughts', 'sb-pack' ); ?>
611
+ <img src="<?php echo $this->plugin_url . "inc/images/handshake.png"; ?>">
612
+ </h3>
613
+ <p>
614
+ <?php
615
+ echo vsprintf( // Translators: 1 is Theme Name, 2 is opening Anchor, 3 is closing.
616
+ __( 'We\'ve been working hard on making %1$s the best one out there. We\'re interested in hearing your thoughts about %1$s and what we could do to <u>make it even better</u>.<br/> <br/> %2$sHave your say%3$s', 'sb-pack' ), array(
617
+ 'Speed Booster Pack',
618
+ '<a class="button button-feedback" target="_blank" href="http://bit.ly/feedback-speed-booster-pack">',
619
+ '</a>',
620
+ ) );
621
+ ?>
622
+ </p>
623
+ </div>
624
+ </div><!--#support-->
625
+
626
+ <div class="textright">
627
+ <hr />
628
+ <?php submit_button( '', 'button button-primary button-hero' ); ?>
629
+ </div>
630
+
631
+ </form>
632
+
633
+ </div><!--/.sb-pack-->
634
+ </div> <!-- end wrap div -->
inc/use-google-libraries.php CHANGED
@@ -1,21 +1,17 @@
1
  <?php
2
- /* Use Google Libraries 1.5.2 => Allows your site to use common javascript libraries from Google's AJAX Libraries CDN, rather than from WordPress's own copies. */
3
- /* http://jasonpenney.net/wordpress-plugins/use-google-libraries/ */
4
- /* Author & copyright (c) 2008-2013 : Jason Penney (email : jpenney@jczorkmid.net ). General Public License v.2.0 */
5
 
 
6
 
7
- if ( ! class_exists( 'SBP_GoogleLibraries' ) ) {
8
-
9
- class SBP_GoogleLibraries {
10
 
11
  protected static $instance;
12
  protected static $plugin_file = __FILE__;
13
- protected static $version = '1.6dev';
14
  protected static $noconflict_inject = "<script type='text/javascript'>try{jQuery.noConflict();}catch(e){};</script>\n";
15
 
16
  public static function get_instance() {
17
  if ( ! isset( self::$instance ) ) {
18
- self::$instance = new SBP_GoogleLibraries();
19
  }
20
  return self::$instance;
21
  }
@@ -77,7 +73,7 @@ if ( ! class_exists( 'SBP_GoogleLibraries' ) ) {
77
  *
78
  * @var string
79
  */
80
- protected static $cache_id = 'SBP_GoogleLibraries_cache';
81
 
82
  /**
83
  * transient expiration
@@ -131,9 +127,12 @@ if ( ! class_exists( 'SBP_GoogleLibraries' ) ) {
131
  'jquery-ui-progressbar' => array( '', '', 'jquery-ui-core' ),
132
  'jquery-ui-resizable' => array( '', '', 'jquery-ui-core' ),
133
  'jquery-ui-selectable' => array( '', '', 'jquery-ui-core' ),
 
134
  'jquery-ui-slider' => array( '', '', 'jquery-ui-core' ),
135
  'jquery-ui-sortable' => array( '', '', 'jquery-ui-core' ),
 
136
  'jquery-ui-tabs' => array( '', '', 'jquery-ui-core' ),
 
137
  'jquery-ui-widget' => array( '', '', 'jquery-ui-core' ), /* jQuery UI 1.8 */
138
 
139
  /* jQuery Effects */
@@ -146,9 +145,11 @@ if ( ! class_exists( 'SBP_GoogleLibraries' ) ) {
146
  'jquery-effects-fade' => array( '', '', 'jquery-ui-core' ), /* jQuery UI 1.8 */
147
  'jquery-effects-fold' => array( '', '', 'jquery-ui-core' ),
148
  'jquery-effects-highlight' => array( '', '', 'jquery-ui-core' ),
 
149
  'jquery-effects-pulsate' => array( '', '', 'jquery-ui-core' ),
150
  'jquery-effects-scale' => array( '', '', 'jquery-ui-core' ),
151
  'jquery-effects-shake' => array( '', '', 'jquery-ui-core' ),
 
152
  'jquery-effects-slide' => array( '', '', 'jquery-ui-core' ),
153
  'jquery-effects-transfer' => array( '', '', 'jquery-ui-core' ),
154
 
@@ -188,7 +189,7 @@ if ( ! class_exists( 'SBP_GoogleLibraries' ) ) {
188
  $this->jquery_tag = 'jquery';
189
  $this->google_scripts = self::$default_google_scripts;
190
 
191
- $this->noconflict_next = FALSE;
192
  // protocol-relative URLS accepted by `wp_register_scripts`
193
  // starting with version 3.5
194
  $this->protocol_relative_supported = version_compare(
@@ -197,22 +198,23 @@ if ( ! class_exists( 'SBP_GoogleLibraries' ) ) {
197
  }
198
 
199
  static function configure_plugin() {
 
200
  add_action(
201
  'wp_default_scripts',
202
  array(
203
- 'SBP_GoogleLibraries',
204
  'replace_default_scripts_action',
205
  ),
206
  1000
207
  );
208
  add_filter(
209
  'script_loader_src',
210
- array( 'SBP_GoogleLibraries', 'remove_ver_query_filter' ),
211
  1000
212
  );
213
  add_filter(
214
  'init',
215
- array( 'SBP_GoogleLibraries', 'setup_filter' )
216
  );
217
 
218
  // There's a chance some plugin has called wp_enqueue_script
@@ -303,13 +305,14 @@ if ( ! class_exists( 'SBP_GoogleLibraries' ) ) {
303
  if ( $lib != '' ) {
304
  // build new URL
305
  $url = "//ajax.googleapis.com/ajax/libs/$lib/$ver/$js.js";
306
- $head = wp_remote_head( "http:$url" );
 
307
  if ( wp_remote_retrieve_response_code( $head ) !== 200 ) {
308
  self::debug( "Google servers do not seem to be hosting requested version of $name (version $ver). Using version provided by WordPress." );
309
  return $orig_url;
310
  }
311
  if ( ! $this->protocol_relative_supported ) {
312
- return "http:$url";
313
  }
314
  return $url;
315
  } else {
@@ -447,17 +450,21 @@ if ( ! class_exists( 'SBP_GoogleLibraries' ) ) {
447
 
448
  function wp_dependency_get_data( $dep_obj, $handle, $data_name = false ) {
449
 
450
- if ( ! method_exists( $dep_obj, 'add_data' ) )
451
  return false;
 
452
 
453
- if ( ! isset( $dep_obj->registered[$handle] ) )
454
  return false;
 
455
 
456
- if ( ! $data_name )
457
- return $dep_obj->registered[$handle]->extra;
 
458
 
459
- if ( ! method_exists( $dep_obj, 'get_data' ) )
460
- return $dep_obj->registered[$handle]->extra[$data_name];
 
461
 
462
  return $dep_obj->get_data( $handle, $data_name );
463
  }
@@ -472,13 +479,13 @@ if ( ! class_exists( 'SBP_GoogleLibraries' ) ) {
472
  */
473
  function remove_ver_query( $src ) {
474
  if ( $this->noconflict_next ) {
475
- $this->noconflict_next = FALSE;
476
  echo self::$noconflict_inject; // xss ok
477
  }
478
  if ( preg_match( '/ajax\.googleapis\.com\//', $src ) ) {
479
  $src = remove_query_arg( 'ver', $src );
480
- if ( strpos( $src, $this->google_scripts[$this->jquery_tag][1] . '.js' ) ) {
481
- $this->noconflict_next = TRUE;
482
  }
483
  }
484
  return $src;
@@ -489,4 +496,9 @@ if ( ! class_exists( 'SBP_GoogleLibraries' ) ) {
489
  return $ugl->remove_ver_query( $src );
490
  }
491
  }
492
- }
 
 
 
 
 
1
  <?php
 
 
 
2
 
3
+ if ( ! class_exists( 'JCP_UseGoogleLibraries' ) ) {
4
 
5
+ class JCP_UseGoogleLibraries {
 
 
6
 
7
  protected static $instance;
8
  protected static $plugin_file = __FILE__;
9
+ protected static $version = '1.6.2.3';
10
  protected static $noconflict_inject = "<script type='text/javascript'>try{jQuery.noConflict();}catch(e){};</script>\n";
11
 
12
  public static function get_instance() {
13
  if ( ! isset( self::$instance ) ) {
14
+ self::$instance = new JCP_UseGoogleLibraries();
15
  }
16
  return self::$instance;
17
  }
73
  *
74
  * @var string
75
  */
76
+ protected static $cache_id = 'JCP_UseGoogleLibraries_cache';
77
 
78
  /**
79
  * transient expiration
127
  'jquery-ui-progressbar' => array( '', '', 'jquery-ui-core' ),
128
  'jquery-ui-resizable' => array( '', '', 'jquery-ui-core' ),
129
  'jquery-ui-selectable' => array( '', '', 'jquery-ui-core' ),
130
+ 'jquery-ui-selectmenu' => array( '', '', 'jquery-ui-core' ),/* jQuery UI 1.11 */
131
  'jquery-ui-slider' => array( '', '', 'jquery-ui-core' ),
132
  'jquery-ui-sortable' => array( '', '', 'jquery-ui-core' ),
133
+ 'jquery-ui-spinner' => array( '', '', 'jquery-ui-core' ), /* jQuery UI 1.11 */
134
  'jquery-ui-tabs' => array( '', '', 'jquery-ui-core' ),
135
+ 'jquery-ui-tooltip' => array( '', '', 'jquery-ui-core' ), /* jQuery UI 1.11 */
136
  'jquery-ui-widget' => array( '', '', 'jquery-ui-core' ), /* jQuery UI 1.8 */
137
 
138
  /* jQuery Effects */
145
  'jquery-effects-fade' => array( '', '', 'jquery-ui-core' ), /* jQuery UI 1.8 */
146
  'jquery-effects-fold' => array( '', '', 'jquery-ui-core' ),
147
  'jquery-effects-highlight' => array( '', '', 'jquery-ui-core' ),
148
+ 'jquery-effects-puff' => array( '', '', 'jquery-ui-core' ), /* jQuery UI 1.11 */
149
  'jquery-effects-pulsate' => array( '', '', 'jquery-ui-core' ),
150
  'jquery-effects-scale' => array( '', '', 'jquery-ui-core' ),
151
  'jquery-effects-shake' => array( '', '', 'jquery-ui-core' ),
152
+ 'jquery-effects-size' => array( '', '', 'jquery-ui-core' ), /* jQuery UI 1.11 */
153
  'jquery-effects-slide' => array( '', '', 'jquery-ui-core' ),
154
  'jquery-effects-transfer' => array( '', '', 'jquery-ui-core' ),
155
 
189
  $this->jquery_tag = 'jquery';
190
  $this->google_scripts = self::$default_google_scripts;
191
 
192
+ $this->noconflict_next = false;
193
  // protocol-relative URLS accepted by `wp_register_scripts`
194
  // starting with version 3.5
195
  $this->protocol_relative_supported = version_compare(
198
  }
199
 
200
  static function configure_plugin() {
201
+
202
  add_action(
203
  'wp_default_scripts',
204
  array(
205
+ 'JCP_UseGoogleLibraries',
206
  'replace_default_scripts_action',
207
  ),
208
  1000
209
  );
210
  add_filter(
211
  'script_loader_src',
212
+ array( 'JCP_UseGoogleLibraries', 'remove_ver_query_filter' ),
213
  1000
214
  );
215
  add_filter(
216
  'init',
217
+ array( 'JCP_UseGoogleLibraries', 'setup_filter' )
218
  );
219
 
220
  // There's a chance some plugin has called wp_enqueue_script
305
  if ( $lib != '' ) {
306
  // build new URL
307
  $url = "//ajax.googleapis.com/ajax/libs/$lib/$ver/$js.js";
308
+ $proto_url = "http:$url";
309
+ $head = wp_remote_head( $proto_url );
310
  if ( wp_remote_retrieve_response_code( $head ) !== 200 ) {
311
  self::debug( "Google servers do not seem to be hosting requested version of $name (version $ver). Using version provided by WordPress." );
312
  return $orig_url;
313
  }
314
  if ( ! $this->protocol_relative_supported ) {
315
+ return $proto_url;
316
  }
317
  return $url;
318
  } else {
450
 
451
  function wp_dependency_get_data( $dep_obj, $handle, $data_name = false ) {
452
 
453
+ if ( ! method_exists( $dep_obj, 'add_data' ) ) {
454
  return false;
455
+ }
456
 
457
+ if ( ! isset( $dep_obj->registered[ $handle ] ) ) {
458
  return false;
459
+ }
460
 
461
+ if ( ! $data_name ) {
462
+ return $dep_obj->registered[ $handle ]->extra;
463
+ }
464
 
465
+ if ( ! method_exists( $dep_obj, 'get_data' ) ) {
466
+ return $dep_obj->registered[ $handle ]->extra[ $data_name ];
467
+ }
468
 
469
  return $dep_obj->get_data( $handle, $data_name );
470
  }
479
  */
480
  function remove_ver_query( $src ) {
481
  if ( $this->noconflict_next ) {
482
+ $this->noconflict_next = false;
483
  echo self::$noconflict_inject; // xss ok
484
  }
485
  if ( preg_match( '/ajax\.googleapis\.com\//', $src ) ) {
486
  $src = remove_query_arg( 'ver', $src );
487
+ if ( strpos( $src, $this->google_scripts[ $this->jquery_tag ][1] . '.js' ) ) {
488
+ $this->noconflict_next = true;
489
  }
490
  }
491
  return $src;
496
  return $ugl->remove_ver_query( $src );
497
  }
498
  }
499
+ }
500
+
501
+ //instantiate the class
502
+ if ( class_exists( 'JCP_UseGoogleLibraries' ) ) {
503
+ JCP_UseGoogleLibraries::configure_plugin();
504
+ }
lang/es_ES.mo DELETED
Binary file
lang/es_ES.po DELETED
@@ -1,372 +0,0 @@
1
- msgid ""
2
- msgstr ""
3
- "Content-Type: text/plain; charset=UTF-8\n"
4
- "Content-Transfer-Encoding: 8bit\n"
5
- "Plural-Forms: nplurals=2; plural=(n != 1);\n"
6
- "Project-Id-Version: Speed Booster Pack\n"
7
- "POT-Creation-Date: \n"
8
- "PO-Revision-Date: \n"
9
- "Last-Translator: jelena kovacevic <jecajeca260@gmail.com>\n"
10
- "Language-Team: Tiguandesign.com <tiguan@tiguandesign.com>\n"
11
- "MIME-Version: 1.0\n"
12
- "Language: en\n"
13
- "X-Generator: Poedit 1.5.5\n"
14
- "X-Poedit-SourceCharset: UTF-8\n"
15
- "X-Poedit-KeywordsList: _e;__\n"
16
- "X-Poedit-Basepath: .\n"
17
- "X-Poedit-SearchPath-0: ..\n"
18
- "X-Poedit-SearchPath-1: ...\n"
19
-
20
- #. Text in echo
21
- #: speed-booster-pack/inc/template/options.php:399
22
- msgid " with guidelines to enhance your website performance."
23
- msgstr "con directrices para mejorar el rendimiento de su sitio web.."
24
-
25
- #. Text in echo
26
- #: speed-booster-pack/inc/template/options.php:360
27
- msgid "*The list may be incomplete in some circumstances."
28
- msgstr "* La lista puede ser incompleta en algunas circunstancias"
29
-
30
- #. Text in echo
31
- #: speed-booster-pack/inc/template/options.php:132
32
- msgid "Active Plugins:"
33
- msgstr "Plugins activos:"
34
-
35
- #. Text in echo
36
- #: speed-booster-pack/inc/template/options.php:367
37
- msgid "Additional information:"
38
- msgstr "Información adicional:"
39
-
40
- #. Text in echo
41
- #: speed-booster-pack/inc/template/options.php:342
42
- msgid ""
43
- "As a guidance, here is a list of css handles of each enqueued style detected "
44
- "by our plugin:"
45
- msgstr ""
46
- "Como guía, aquí está una lista de los handles css de cada estilo en cola "
47
- "detectado por nuestro plugin:"
48
-
49
- #. Text in echo
50
- #: speed-booster-pack/inc/template/options.php:200
51
- msgid ""
52
- "As a guidance, here is a list of script handles and script paths of each "
53
- "enqueued script detected by our plugin:"
54
- msgstr ""
55
- "Como guía, aquí está una lista de handles de script y rutas de script de "
56
- "cada secuencia de comandos en cola detectado por nuestro plugin:"
57
-
58
- #. Text in echo
59
- #: speed-booster-pack/inc/template/options.php:19
60
- msgid "Boost Your Website Speed!"
61
- msgstr "¡Aumente la velocidad de su Sitio Web!"
62
-
63
- #. Text in echo
64
- #: speed-booster-pack/inc/template/options.php:348
65
- msgid "CSS Handle"
66
- msgstr "Handle CSS"
67
-
68
- #. Text in echo
69
- #: speed-booster-pack/inc/template/options.php:265
70
- msgid "Change the default image compression level"
71
- msgstr "Cambiar el nivel de compresión de imágenes"
72
-
73
- #. Text in echo
74
- #: speed-booster-pack/inc/template/options.php:277
75
- msgid "Compression level:"
76
- msgstr "Nivel de compresión:"
77
-
78
- #. Text in echo
79
- #: speed-booster-pack/inc/template/options.php:172
80
- msgid "Copy the HTML code of the script from your page source and add it below"
81
- msgstr ""
82
- "Copie el código HTML del script de la fuente de su página y añádalo a "
83
- "continuación"
84
-
85
- #. Text in echo
86
- #: speed-booster-pack/inc/template/options.php:45
87
- msgid "Defer parsing of javascript files"
88
- msgstr "Aplazar análisis de archivos javascript"
89
-
90
- #. Text in echo
91
- #: speed-booster-pack/inc/template/options.php:325
92
- msgid "Disable all above CSS options on mobile devices"
93
- msgstr "Desactivar todas las opciones CSS de arriba en dispositivos móviles"
94
-
95
- #. Text in echo
96
- #: speed-booster-pack/inc/template/options.php:333
97
- msgid ""
98
- "Enter one by line, the handles of css files or the final part of the style "
99
- "URL. For example: <code>font-awesome</code> or <code>font-awesome.min.css</"
100
- "code>"
101
- msgstr ""
102
- "Introduzca uno por línea, los handles de los archivos CSS o la parte final "
103
- "de la URL del estilo. Por ejemplo: <code>-font awesome </code> o <code> font-"
104
- "awesome.min.css </code>"
105
-
106
- #. Text in echo
107
- #: speed-booster-pack/inc/template/options.php:257
108
- msgid ""
109
- "Enter one by text field, the final part of the js files that you want to be "
110
- "excluded from defer parsing option. For example: <code>jquery.min.js</code> "
111
- "If you want to exclude more than 4 scripts, your page score will be hit and "
112
- "therefore the use of \"Defer parsing of javascript files\" option will "
113
- "become useless so you can disable it"
114
- msgstr ""
115
- "Introduzca uno por campo de texto, la parte final de los archivos js que "
116
- "desea que sea excluido de la opción del análisis defer. Por ejemplo: <code> "
117
- "jquery.min.js </code> Si desea excluir más de 4 scripts, el puntaje de su "
118
- "página se verá afectado y por lo tanto el uso de la opción \"Análisis defer "
119
- "de archivos javascript\" se convertirá en inútil por lo que puede "
120
- "desactivarla"
121
-
122
- #. Text in echo
123
- #: speed-booster-pack/inc/template/options.php:195
124
- msgid ""
125
- "Enter one js handle per text field, in the left area and the corespondent "
126
- "html script in the right text fields."
127
- msgstr ""
128
- "Introduzca un handle js por campo de texto, en la parte izquierda y la "
129
- "secuencia de comandos HTML correspondiente en los campos de texto adecuados."
130
-
131
- #. Text in echo
132
- #: speed-booster-pack/inc/template/options.php:233
133
- msgid "Exclude scripts from being deferred"
134
- msgstr "Excluir scripts de ser diferidos"
135
-
136
- #. Text in echo
137
- #: speed-booster-pack/inc/template/options.php:143
138
- msgid "Exclude scripts from being moved to the footer"
139
- msgstr "Excluir scripts de ser trasladado al pie de página"
140
-
141
- #. Text in echo
142
- #: speed-booster-pack/inc/template/options.php:330
143
- msgid "Exclude styles from asynchronously option: "
144
- msgstr "Excluir estilos de opción de forma asíncrona:"
145
-
146
- #. Text in echo
147
- #: speed-booster-pack/inc/template/options.php:23
148
- msgid "General options"
149
- msgstr "Opciones generales"
150
-
151
- #. Text in echo
152
- #: speed-booster-pack/inc/template/options.php:104
153
- msgid "Home Page Load Stats"
154
- msgstr "Página de inicio Carga Estadísticas"
155
-
156
- #. Text in echo
157
- #: speed-booster-pack/inc/template/options.php:195
158
- msgid ""
159
- "If you want to exclude more than 4 scripts, your page score will be hit and "
160
- "therefore the use of \"Move scripts to footer\" option will become useless "
161
- "so you can disable it."
162
- msgstr ""
163
- "Si desea excluir más de 4 scripts, el puntaje de su página se verá afectado "
164
- "y por lo tanto el uso de la opción \"Mover scripts a pie de página\" se "
165
- "convertirá en inútil por lo que puede desactivarla."
166
-
167
- #. Text in echo
168
- #: speed-booster-pack/inc/template/options.php:320
169
- msgid "Insert all CSS styles inline to the footer"
170
- msgstr "Inserte todos los estilos CSS en línea al pie de página"
171
-
172
- #. Text in echo
173
- #: speed-booster-pack/inc/template/options.php:368
174
- msgid "Insert all CSS styles inline to the footer: "
175
- msgstr "Insertar todos los estilos CSS en línea al pie de página:"
176
-
177
- #. Text in echo
178
- #: speed-booster-pack/inc/template/options.php:416
179
- msgid "Installed Version:"
180
- msgstr "Versión instalada:"
181
-
182
- #. Text in echo
183
- #: speed-booster-pack/inc/template/options.php:55
184
- msgid "Lazy load images to improve speed"
185
- msgstr "Cargar imágenes Lazy para mejorar la velocidad"
186
-
187
- #. Text in echo
188
- #: speed-booster-pack/inc/template/options.php:305
189
- msgid "Load CSS asynchronously"
190
- msgstr "Cargar CSS de forma asíncrona"
191
-
192
- #. Text in echo
193
- #: speed-booster-pack/inc/template/options.php:40
194
- msgid "Load JS from Google Libraries"
195
- msgstr "Cargar JS desde Bibliotecas Google"
196
-
197
- #. Text in echo
198
- #: speed-booster-pack/inc/template/options.php:31
199
- msgid "Main plugin options"
200
- msgstr "Opciones Principales del plugin"
201
-
202
- #. Text in echo
203
- #: speed-booster-pack/inc/template/options.php:313
204
- msgid "Minify all CSS styles"
205
- msgstr "Minimizar todos los estilos CSS"
206
-
207
- #. Text in echo
208
- #: speed-booster-pack/inc/template/options.php:35
209
- msgid "Move scripts to the footer"
210
- msgstr "Mover scripts al pie de página"
211
-
212
- #. Text in echo
213
- #: speed-booster-pack/inc/template/options.php:289
214
- msgid ""
215
- "Note that any changes you make will only affect new images uploaded to your "
216
- "site. If you want to update all of your images with the new sizes, install "
217
- "and run the Regenerate Thumbnails plugin. As a reference, a lower level of "
218
- "compression means more performance. We recommend you choose a compression "
219
- "level between 50 and 75."
220
- msgstr ""
221
- "Tenga en cuenta que los cambios que realice sólo afectarán a las nuevas "
222
- "imágenes subidas a su sitio. Si desea actualizar todas sus imágenes con los "
223
- "nuevos tamaños, instale y ejecute el plugin Regenerar miniaturas. Como "
224
- "referencia, un menor nivel de compresión significa más rendimiento. Le "
225
- "recomendamos que escoja un nivel de compresión entre 50 y 75."
226
-
227
- #. Text in echo
228
- #: speed-booster-pack/inc/template/options.php:118
229
- msgid "Number of executed queries:"
230
- msgstr "Número de consultas ejecutadas:"
231
-
232
- #. Text in echo
233
- #: speed-booster-pack/inc/template/options.php:106
234
- msgid "Page loading time in seconds:"
235
- msgstr "Tiempo de carga de página en segundos:"
236
-
237
- #. Text in echo
238
- #: speed-booster-pack/inc/template/options.php:131
239
- msgid "Peak Memory Used:"
240
- msgstr "Memoria pico utilizada:"
241
-
242
- #. Text in echo
243
- #: speed-booster-pack/inc/template/options.php:195
244
- msgid "Read more"
245
- msgstr "Leer más"
246
-
247
- #. Text in echo
248
- #: speed-booster-pack/inc/template/options.php:399
249
- msgid "Read online plugin documentation"
250
- msgstr "Leer la documentación en línea del plugin"
251
-
252
- #. Text in echo
253
- #: speed-booster-pack/inc/template/options.php:423
254
- msgid "Released date:"
255
- msgstr "Fecha de lanzamiento:"
256
-
257
- #. Text in echo
258
- #: speed-booster-pack/inc/template/options.php:81
259
- msgid "Remove Adjacent Posts Links"
260
- msgstr "Quitar Enlaces de Mensajes Adyacentes"
261
-
262
- #. Text in echo
263
- #: speed-booster-pack/inc/template/options.php:71
264
- msgid "Remove RSD Link"
265
- msgstr "Eliminar Enlace RSD"
266
-
267
- #. Text in echo
268
- #: speed-booster-pack/inc/template/options.php:86
269
- msgid "Remove Windows Manifest"
270
- msgstr "Eliminar Manifiesto Windows"
271
-
272
- #. Text in echo
273
- #: speed-booster-pack/inc/template/options.php:76
274
- msgid "Remove WordPress Shortlink"
275
- msgstr "Eliminar Shortlink WordPress"
276
-
277
- #. Text in echo
278
- #: speed-booster-pack/inc/template/options.php:96
279
- msgid "Remove all rss feed links"
280
- msgstr "Quitar todos los enlaces rss feed"
281
-
282
- #. Text in echo
283
- #: speed-booster-pack/inc/template/options.php:67
284
- msgid "Remove junk header tags"
285
- msgstr "Eliminar encabezados basura"
286
-
287
- #. Text in echo
288
- #: speed-booster-pack/inc/template/options.php:50
289
- msgid "Remove query strings"
290
- msgstr "Retirar las cadenas de consulta"
291
-
292
- #. Text in echo
293
- #: speed-booster-pack/inc/template/options.php:91
294
- msgid "Remove the WordPress Version"
295
- msgstr "Eiminar la versión WordPress"
296
-
297
- #. Text in echo
298
- #: speed-booster-pack/inc/template/options.php:60
299
- msgid "Removes extra Font Awesome styles"
300
- msgstr "Eliminar estilos de Font Awesome adicionales"
301
-
302
- #. Text in echo
303
- #: speed-booster-pack/inc/template/options.php:149
304
- #: speed-booster-pack/inc/template/options.php:206
305
- msgid "Script Handle"
306
- msgstr "Handle de Script"
307
-
308
- #. Text in echo
309
- #: speed-booster-pack/inc/template/options.php:207
310
- msgid "Script Path"
311
- msgstr "Ruta del script"
312
-
313
- #. Text in echo
314
- #: speed-booster-pack/inc/template/options.php:299
315
- msgid "Still need more speed?"
316
- msgstr "¿Todavía necesita más velocidad?"
317
-
318
- #. Text in echo
319
- #: speed-booster-pack/inc/template/options.php:286
320
- msgid ""
321
- "The default image compression setting in WordPress is 90%. Compressing your "
322
- "images further than the default will make your file sizes even smaller and "
323
- "will boost your site performance."
324
- msgstr ""
325
- "El ajuste de compresión de imagen por defecto de WordPress es del 90%. La "
326
- "compresión de imágenes más allá del de por defecto hará los tamaños de "
327
- "archivos aún más pequeños y aumentará el rendimiento de su sitio."
328
-
329
- #. Text in echo
330
- #: speed-booster-pack/inc/template/options.php:405
331
- msgid "Version Information"
332
- msgstr "Información de la versión"
333
-
334
- #. Text in echo
335
- #: speed-booster-pack/inc/template/options.php:389
336
- msgid "What do these settings mean?"
337
- msgstr "¿Qué significan estos ajustes?"
338
-
339
- #. Text in echo
340
- #: speed-booster-pack/inc/template/options.php:195
341
- msgid "detailed instructions"
342
- msgstr "Instrucciones detalladas"
343
-
344
- #. Text in echo
345
- #: speed-booster-pack/inc/template/options.php:195
346
- msgid "on this option on plugin documentation."
347
- msgstr "sobre esta opción en la documentación del plugin."
348
-
349
- #. Text in echo
350
- #: speed-booster-pack/inc/template/options.php:126
351
- msgid "q"
352
- msgstr "Q"
353
-
354
- #. Text in echo
355
- #: speed-booster-pack/inc/template/options.php:114
356
- msgid "s"
357
- msgstr "S"
358
-
359
- #. Text in echo
360
- #: speed-booster-pack/inc/template/options.php:368
361
- msgid ""
362
- "this option will eliminate render-blocking CSS warning in Google Page Speed "
363
- "test. If there is something broken after activation, you need to disable "
364
- "this option. Please note that before enabling this sensitive option, it is "
365
- "strongly recommended that you also enable the \"Move scripts to the footer\" "
366
- "option."
367
- msgstr ""
368
- "esta opción eliminará render de bloqueo de advertencia CSS en la prueba de "
369
- "Velocidad de Página Google Page. Si hay algo que falle después de la "
370
- "activación, es necesario deshabilitar esta opción. Tenga en cuenta que antes "
371
- "de habilitar esta opción sensible, se recomienda encarecidamente que también "
372
- "habilite la opción \"Mover scripts al pie de página\"."
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
lang/ro_RO.mo DELETED
Binary file
lang/ro_RO.po DELETED
@@ -1,374 +0,0 @@
1
- msgid ""
2
- msgstr ""
3
- "Content-Type: text/plain; charset=UTF-8\n"
4
- "Content-Transfer-Encoding: 8bit\n"
5
- "Plural-Forms: nplurals=2; plural=(n != 1);\n"
6
- "Project-Id-Version: Speed Booster Pack\n"
7
- "POT-Creation-Date: \n"
8
- "PO-Revision-Date: \n"
9
- "Last-Translator: Liviu Costache <tiguan@tiguandesign.com>\n"
10
- "Language-Team: Tiguandesign.com <tiguan@tiguandesign.com>\n"
11
- "MIME-Version: 1.0\n"
12
- "Language: en\n"
13
- "X-Generator: Poedit 1.6.7\n"
14
- "X-Poedit-SourceCharset: UTF-8\n"
15
- "X-Poedit-KeywordsList: _e;__\n"
16
- "X-Poedit-Basepath: .\n"
17
- "X-Poedit-SearchPath-0: ..\n"
18
- "X-Poedit-SearchPath-1: ...\n"
19
-
20
- #. Text in echo
21
- #: speed-booster-pack/inc/template/options.php:399
22
- msgid " with guidelines to enhance your website performance."
23
- msgstr "care conţine îndrumari pentru a îmbunătăți performanța site-ul tău."
24
-
25
- #. Text in echo
26
- #: speed-booster-pack/inc/template/options.php:360
27
- msgid "*The list may be incomplete in some circumstances."
28
- msgstr "* Lista poate fi incompletă în anumite circumstanțe."
29
-
30
- #. Text in echo
31
- #: speed-booster-pack/inc/template/options.php:132
32
- msgid "Active Plugins:"
33
- msgstr "Pluginuri Active:"
34
-
35
- #. Text in echo
36
- #: speed-booster-pack/inc/template/options.php:367
37
- msgid "Additional information:"
38
- msgstr "Informaţii suplimentare:"
39
-
40
- #. Text in echo
41
- #: speed-booster-pack/inc/template/options.php:342
42
- msgid ""
43
- "As a guidance, here is a list of css handles of each enqueued style detected "
44
- "by our plugin:"
45
- msgstr ""
46
- "Orientativ, aici este o listă cu toate handle-urile CSS detectate de "
47
- "pluginul nostru:"
48
-
49
- #. Text in echo
50
- #: speed-booster-pack/inc/template/options.php:200
51
- msgid ""
52
- "As a guidance, here is a list of script handles and script paths of each "
53
- "enqueued script detected by our plugin:"
54
- msgstr ""
55
- "Orientativ, aici este o listă cu toate handle-urile JS si calea acestora, "
56
- "detectate de pluginul nostru:"
57
-
58
- #. Text in echo
59
- #: speed-booster-pack/inc/template/options.php:19
60
- msgid "Boost Your Website Speed!"
61
- msgstr "Sporeşte-ţi viteza site-ului!"
62
-
63
- #. Text in echo
64
- #: speed-booster-pack/inc/template/options.php:348
65
- msgid "CSS Handle"
66
- msgstr "Handle pentru CSS"
67
-
68
- #. Text in echo
69
- #: speed-booster-pack/inc/template/options.php:265
70
- msgid "Change the default image compression level"
71
- msgstr "Schimbă nivelul de compresie al imaginilor"
72
-
73
- #. Text in echo
74
- #: speed-booster-pack/inc/template/options.php:277
75
- msgid "Compression level:"
76
- msgstr "Nivelul de compresie:"
77
-
78
- #. Text in echo
79
- #: speed-booster-pack/inc/template/options.php:172
80
- msgid "Copy the HTML code of the script from your page source and add it below"
81
- msgstr ""
82
- "Copiaţi codul HTML al script-ului din sursa paginii, şi adăugaţi-l mai jos"
83
-
84
- #. Text in echo
85
- #: speed-booster-pack/inc/template/options.php:45
86
- msgid "Defer parsing of javascript files"
87
- msgstr "Amână analizarea fişierelor javascript"
88
-
89
- #. Text in echo
90
- #: speed-booster-pack/inc/template/options.php:325
91
- msgid "Disable all above CSS options on mobile devices"
92
- msgstr ""
93
- "Dezactivează toate opţiunile CSS de mai sus pentru dispozitivele mobile"
94
-
95
- #. Text in echo
96
- #: speed-booster-pack/inc/template/options.php:333
97
- msgid ""
98
- "Enter one by line, the handles of css files or the final part of the style "
99
- "URL. For example: <code>font-awesome</code> or <code>font-awesome.min.css</"
100
- "code>"
101
- msgstr ""
102
- "Introdu câte una pe linie, denumirile fişierelor CSS sau partea finală a URL-"
103
- "ului acestora. De exemplu: <code>font-awesome</code> sau <code>font-awesome."
104
- "min.css</code>"
105
-
106
- #. Text in echo
107
- #: speed-booster-pack/inc/template/options.php:257
108
- msgid ""
109
- "Enter one by text field, the final part of the js files that you want to be "
110
- "excluded from defer parsing option. For example: <code>jquery.min.js</code> "
111
- "If you want to exclude more than 4 scripts, your page score will be hit and "
112
- "therefore the use of \"Defer parsing of javascript files\" option will "
113
- "become useless so you can disable it"
114
- msgstr ""
115
- "Introdu câte una pe linie, partea finală a fişierelor JS pe care vrei să le "
116
- "excluzi de la opţiunea \"Amână analizarea fişierelor javascript\" De "
117
- "exemplu: <code>jquery.min.js</code> Dacă doreşti să excluzi mai mult de 4 "
118
- "script-uri, scorul pagini va avea de suferit şi, prin urmare, utilizarea "
119
- "opţiunii \"Amână analizarea fişierelor javascript \" va deveni inutilă, şi "
120
- "o poţi dezactiva."
121
-
122
- #. Text in echo
123
- #: speed-booster-pack/inc/template/options.php:195
124
- msgid ""
125
- "Enter one js handle per text field, in the left area and the corespondent "
126
- "html script in the right text fields."
127
- msgstr ""
128
- "Introdu un handle js pe câte un câmp text, în zona din stânga şi codul HTML "
129
- "al script-ului corespondent în câmpurile text din dreapta."
130
-
131
- #. Text in echo
132
- #: speed-booster-pack/inc/template/options.php:233
133
- msgid "Exclude scripts from being deferred"
134
- msgstr ""
135
- "Exclude script-uri de la opţiunea \"Amână analizarea fişierelor javascript\""
136
-
137
- #. Text in echo
138
- #: speed-booster-pack/inc/template/options.php:143
139
- msgid "Exclude scripts from being moved to the footer"
140
- msgstr "Exclude script-uri de la opţiunea \"Muta script-uri in footer\""
141
-
142
- #. Text in echo
143
- #: speed-booster-pack/inc/template/options.php:330
144
- msgid "Exclude styles from asynchronously option: "
145
- msgstr "Exclude stiluri de la opţiunea \"Încărcare CSS în mod asincron\""
146
-
147
- #. Text in echo
148
- #: speed-booster-pack/inc/template/options.php:23
149
- msgid "General options"
150
- msgstr "Opţiuni Generale"
151
-
152
- #. Text in echo
153
- #: speed-booster-pack/inc/template/options.php:104
154
- msgid "Home Page Load Stats"
155
- msgstr "Încărcarea paginii de bază"
156
-
157
- #. Text in echo
158
- #: speed-booster-pack/inc/template/options.php:195
159
- msgid ""
160
- "If you want to exclude more than 4 scripts, your page score will be hit and "
161
- "therefore the use of \"Move scripts to footer\" option will become useless "
162
- "so you can disable it."
163
- msgstr ""
164
- "Dacă doreşti să excluzi mai mult de 4 script-uri, scorul paginii va avea de "
165
- "suferit şi, prin urmare, utilizarea opţiunii \"Mută script-uri în footer \" "
166
- "va deveni inutilă, şi o poţi dezactiva."
167
-
168
- #. Text in echo
169
- #: speed-booster-pack/inc/template/options.php:320
170
- msgid "Insert all CSS styles inline to the footer"
171
- msgstr "Mută toate stilurile CSS în linie în footer"
172
-
173
- #. Text in echo
174
- #: speed-booster-pack/inc/template/options.php:368
175
- msgid "Insert all CSS styles inline to the footer: "
176
- msgstr "Mută toate stilurile CSS în linie în footer:"
177
-
178
- #. Text in echo
179
- #: speed-booster-pack/inc/template/options.php:416
180
- msgid "Installed Version:"
181
- msgstr "Versiunea instalată:"
182
-
183
- #. Text in echo
184
- #: speed-booster-pack/inc/template/options.php:55
185
- msgid "Lazy load images to improve speed"
186
- msgstr "Întârzie încărcarea imaginilor"
187
-
188
- #. Text in echo
189
- #: speed-booster-pack/inc/template/options.php:305
190
- msgid "Load CSS asynchronously"
191
- msgstr "Încărcare CSS în mod asincron"
192
-
193
- #. Text in echo
194
- #: speed-booster-pack/inc/template/options.php:40
195
- msgid "Load JS from Google Libraries"
196
- msgstr "Încarcă JS din Google Libraries"
197
-
198
- #. Text in echo
199
- #: speed-booster-pack/inc/template/options.php:31
200
- msgid "Main plugin options"
201
- msgstr "Opţiunile principale"
202
-
203
- #. Text in echo
204
- #: speed-booster-pack/inc/template/options.php:313
205
- msgid "Minify all CSS styles"
206
- msgstr "Comprimă toate fişierele CSS"
207
-
208
- #. Text in echo
209
- #: speed-booster-pack/inc/template/options.php:35
210
- msgid "Move scripts to the footer"
211
- msgstr "Muta script-uri in footer"
212
-
213
- #. Text in echo
214
- #: speed-booster-pack/inc/template/options.php:289
215
- msgid ""
216
- "Note that any changes you make will only affect new images uploaded to your "
217
- "site. If you want to update all of your images with the new sizes, install "
218
- "and run the Regenerate Thumbnails plugin. As a reference, a lower level of "
219
- "compression means more performance. We recommend you choose a compression "
220
- "level between 50 and 75."
221
- msgstr ""
222
- "Reţine că după alegerea nivelului de compresie, modificările vor afecta "
223
- "numai imaginile noi încărcate pe site. Dacă doreşti să actualizezi toate "
224
- "imaginile la noul nivel de compresie, instalează şi rulează plugin-ul "
225
- "Regenerate Thumbnails. Că referinţă, un nivel mai scăzut de comprimare "
226
- "înseamnă mai multă performanţă a site-ului. Îţi recomandăm să alegi un nivel "
227
- "de compresie cu valorea cuprinsă între 50 şi 75."
228
-
229
- #. Text in echo
230
- #: speed-booster-pack/inc/template/options.php:118
231
- msgid "Number of executed queries:"
232
- msgstr "Numărul de interogări (queries) executate:"
233
-
234
- #. Text in echo
235
- #: speed-booster-pack/inc/template/options.php:106
236
- msgid "Page loading time in seconds:"
237
- msgstr "Timpul de încărcare a paginii în secunde:"
238
-
239
- #. Text in echo
240
- #: speed-booster-pack/inc/template/options.php:131
241
- msgid "Peak Memory Used:"
242
- msgstr "Memoria folosită"
243
-
244
- #. Text in echo
245
- #: speed-booster-pack/inc/template/options.php:195
246
- msgid "Read more"
247
- msgstr "Citeşte mai multe"
248
-
249
- #. Text in echo
250
- #: speed-booster-pack/inc/template/options.php:399
251
- msgid "Read online plugin documentation"
252
- msgstr "Citeşte online documentaţia pluginului"
253
-
254
- #. Text in echo
255
- #: speed-booster-pack/inc/template/options.php:423
256
- msgid "Released date:"
257
- msgstr "Data lansării:"
258
-
259
- #. Text in echo
260
- #: speed-booster-pack/inc/template/options.php:81
261
- msgid "Remove Adjacent Posts Links"
262
- msgstr "Elimină Adjacent Posts Links"
263
-
264
- #. Text in echo
265
- #: speed-booster-pack/inc/template/options.php:71
266
- msgid "Remove RSD Link"
267
- msgstr "Elimină linkul RSD"
268
-
269
- #. Text in echo
270
- #: speed-booster-pack/inc/template/options.php:86
271
- msgid "Remove Windows Manifest"
272
- msgstr "Elimină Windows Manifest"
273
-
274
- #. Text in echo
275
- #: speed-booster-pack/inc/template/options.php:76
276
- msgid "Remove WordPress Shortlink"
277
- msgstr "Elimină WordPress Shortlink"
278
-
279
- #. Text in echo
280
- #: speed-booster-pack/inc/template/options.php:96
281
- msgid "Remove all rss feed links"
282
- msgstr "Elimină toate link-urile RSS feed"
283
-
284
- #. Text in echo
285
- #: speed-booster-pack/inc/template/options.php:67
286
- msgid "Remove junk header tags"
287
- msgstr "Elimină tag-urile inutile din header"
288
-
289
- #. Text in echo
290
- #: speed-booster-pack/inc/template/options.php:50
291
- msgid "Remove query strings"
292
- msgstr "Elimină versiunea fisierelor"
293
-
294
- #. Text in echo
295
- #: speed-booster-pack/inc/template/options.php:91
296
- msgid "Remove the WordPress Version"
297
- msgstr "Elimină versiunea WordPress"
298
-
299
- #. Text in echo
300
- #: speed-booster-pack/inc/template/options.php:60
301
- msgid "Removes extra Font Awesome styles"
302
- msgstr "Elimină extra Font Awesome CSS"
303
-
304
- #. Text in echo
305
- #: speed-booster-pack/inc/template/options.php:149
306
- #: speed-booster-pack/inc/template/options.php:206
307
- msgid "Script Handle"
308
- msgstr "Script Handle"
309
-
310
- #. Text in echo
311
- #: speed-booster-pack/inc/template/options.php:207
312
- msgid "Script Path"
313
- msgstr "Calea scriptului"
314
-
315
- #. Text in echo
316
- #: speed-booster-pack/inc/template/options.php:299
317
- msgid "Still need more speed?"
318
- msgstr "Încă ai nevoie de mai multă viteză?"
319
-
320
- #. Text in echo
321
- #: speed-booster-pack/inc/template/options.php:286
322
- msgid ""
323
- "The default image compression setting in WordPress is 90%. Compressing your "
324
- "images further than the default will make your file sizes even smaller and "
325
- "will boost your site performance."
326
- msgstr ""
327
- "Nivelul implicit de comprimare a imaginilor în WordPress este de 90%. "
328
- "Comprimarea imaginilor la un nivel mai mare decât nivelul implicit va "
329
- "micşora dimensiunile fişierelor şi va stimula performanta site-ului tău."
330
-
331
- #. Text in echo
332
- #: speed-booster-pack/inc/template/options.php:405
333
- msgid "Version Information"
334
- msgstr "Informaţii despre versiune"
335
-
336
- #. Text in echo
337
- #: speed-booster-pack/inc/template/options.php:389
338
- msgid "What do these settings mean?"
339
- msgstr "Ce reprezintă toate aceste opţiuni?"
340
-
341
- #. Text in echo
342
- #: speed-booster-pack/inc/template/options.php:195
343
- msgid "detailed instructions"
344
- msgstr "instrucţiuni detaliate"
345
-
346
- #. Text in echo
347
- #: speed-booster-pack/inc/template/options.php:195
348
- msgid "on this option on plugin documentation."
349
- msgstr "cu privire la această opţiune în documentaţia puginului."
350
-
351
- #. Text in echo
352
- #: speed-booster-pack/inc/template/options.php:126
353
- msgid "q"
354
- msgstr "q"
355
-
356
- #. Text in echo
357
- #: speed-booster-pack/inc/template/options.php:114
358
- msgid "s"
359
- msgstr "q"
360
-
361
- #. Text in echo
362
- #: speed-booster-pack/inc/template/options.php:368
363
- msgid ""
364
- "this option will eliminate render-blocking CSS warning in Google Page Speed "
365
- "test. If there is something broken after activation, you need to disable "
366
- "this option. Please note that before enabling this sensitive option, it is "
367
- "strongly recommended that you also enable the \"Move scripts to the footer\" "
368
- "option."
369
- msgstr ""
370
- "această opţiune va elimina mesajul render-blocking CSS din Google Page "
371
- "Speed. Dacă observi că ceva nu merge după activare, va trebui să dezactivezi "
372
- "această opţiune. Te rog să notezi că înainte de activarea acestei opţiuni "
373
- "sensibile, este neapărat necesar că şi opţiunea de mutare a scripturilor în "
374
- "footer trebuie să fie activă."
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
lang/sb-pack.mo DELETED
Binary file
lang/sb-pack.po DELETED
@@ -1,339 +0,0 @@
1
- msgid ""
2
- msgstr ""
3
- "Content-Type: text/plain; charset=UTF-8\n"
4
- "Content-Transfer-Encoding: 8bit\n"
5
- "Plural-Forms: nplurals=2; plural=(n != 1);\n"
6
- "Project-Id-Version: Speed Booster Pack\n"
7
- "POT-Creation-Date: \n"
8
- "PO-Revision-Date: \n"
9
- "Last-Translator: Liviu Costache <tiguan@tiguandesign.com>\n"
10
- "Language-Team: Tiguandesign.com <tiguan@tiguandesign.com>\n"
11
- "MIME-Version: 1.0\n"
12
- "Language: en\n"
13
- "X-Generator: Poedit 1.6.7\n"
14
- "X-Poedit-SourceCharset: UTF-8\n"
15
- "X-Poedit-KeywordsList: _e;__\n"
16
- "X-Poedit-Basepath: .\n"
17
- "X-Poedit-SearchPath-0: ..\n"
18
- "X-Poedit-SearchPath-1: ...\n"
19
-
20
- #. Text in echo
21
- #: speed-booster-pack/inc/template/options.php:399
22
- msgid " with guidelines to enhance your website performance."
23
- msgstr ""
24
-
25
- #. Text in echo
26
- #: speed-booster-pack/inc/template/options.php:360
27
- msgid "*The list may be incomplete in some circumstances."
28
- msgstr ""
29
-
30
- #. Text in echo
31
- #: speed-booster-pack/inc/template/options.php:132
32
- msgid "Active Plugins:"
33
- msgstr ""
34
-
35
- #. Text in echo
36
- #: speed-booster-pack/inc/template/options.php:367
37
- msgid "Additional information:"
38
- msgstr ""
39
-
40
- #. Text in echo
41
- #: speed-booster-pack/inc/template/options.php:342
42
- msgid ""
43
- "As a guidance, here is a list of css handles of each enqueued style detected "
44
- "by our plugin:"
45
- msgstr ""
46
-
47
- #. Text in echo
48
- #: speed-booster-pack/inc/template/options.php:200
49
- msgid ""
50
- "As a guidance, here is a list of script handles and script paths of each "
51
- "enqueued script detected by our plugin:"
52
- msgstr ""
53
-
54
- #. Text in echo
55
- #: speed-booster-pack/inc/template/options.php:19
56
- msgid "Boost Your Website Speed!"
57
- msgstr ""
58
-
59
- #. Text in echo
60
- #: speed-booster-pack/inc/template/options.php:348
61
- msgid "CSS Handle"
62
- msgstr ""
63
-
64
- #. Text in echo
65
- #: speed-booster-pack/inc/template/options.php:265
66
- msgid "Change the default image compression level"
67
- msgstr ""
68
-
69
- #. Text in echo
70
- #: speed-booster-pack/inc/template/options.php:277
71
- msgid "Compression level:"
72
- msgstr ""
73
-
74
- #. Text in echo
75
- #: speed-booster-pack/inc/template/options.php:172
76
- msgid "Copy the HTML code of the script from your page source and add it below"
77
- msgstr ""
78
-
79
- #. Text in echo
80
- #: speed-booster-pack/inc/template/options.php:45
81
- msgid "Defer parsing of javascript files"
82
- msgstr ""
83
-
84
- #. Text in echo
85
- #: speed-booster-pack/inc/template/options.php:325
86
- msgid "Disable all above CSS options on mobile devices"
87
- msgstr ""
88
-
89
- #. Text in echo
90
- #: speed-booster-pack/inc/template/options.php:333
91
- msgid ""
92
- "Enter one by line, the handles of css files or the final part of the style "
93
- "URL. For example: <code>font-awesome</code> or <code>font-awesome.min.css</"
94
- "code>"
95
- msgstr ""
96
-
97
- #. Text in echo
98
- #: speed-booster-pack/inc/template/options.php:257
99
- msgid ""
100
- "Enter one by text field, the final part of the js files that you want to be "
101
- "excluded from defer parsing option. For example: <code>jquery.min.js</code> "
102
- "If you want to exclude more than 4 scripts, your page score will be hit and "
103
- "therefore the use of \"Defer parsing of javascript files\" option will "
104
- "become useless so you can disable it"
105
- msgstr ""
106
-
107
- #. Text in echo
108
- #: speed-booster-pack/inc/template/options.php:195
109
- msgid ""
110
- "Enter one js handle per text field, in the left area and the corespondent "
111
- "html script in the right text fields."
112
- msgstr ""
113
-
114
- #. Text in echo
115
- #: speed-booster-pack/inc/template/options.php:233
116
- msgid "Exclude scripts from being deferred"
117
- msgstr ""
118
-
119
- #. Text in echo
120
- #: speed-booster-pack/inc/template/options.php:143
121
- msgid "Exclude scripts from being moved to the footer"
122
- msgstr ""
123
-
124
- #. Text in echo
125
- #: speed-booster-pack/inc/template/options.php:330
126
- msgid "Exclude styles from asynchronously option: "
127
- msgstr ""
128
-
129
- #. Text in echo
130
- #: speed-booster-pack/inc/template/options.php:23
131
- msgid "General options"
132
- msgstr ""
133
-
134
- #. Text in echo
135
- #: speed-booster-pack/inc/template/options.php:104
136
- msgid "Home Page Load Stats"
137
- msgstr ""
138
-
139
- #. Text in echo
140
- #: speed-booster-pack/inc/template/options.php:195
141
- msgid ""
142
- "If you want to exclude more than 4 scripts, your page score will be hit and "
143
- "therefore the use of \"Move scripts to footer\" option will become useless "
144
- "so you can disable it."
145
- msgstr ""
146
-
147
- #. Text in echo
148
- #: speed-booster-pack/inc/template/options.php:320
149
- msgid "Insert all CSS styles inline to the footer"
150
- msgstr ""
151
-
152
- #. Text in echo
153
- #: speed-booster-pack/inc/template/options.php:368
154
- msgid "Insert all CSS styles inline to the footer: "
155
- msgstr ""
156
-
157
- #. Text in echo
158
- #: speed-booster-pack/inc/template/options.php:416
159
- msgid "Installed Version:"
160
- msgstr ""
161
-
162
- #. Text in echo
163
- #: speed-booster-pack/inc/template/options.php:55
164
- msgid "Lazy load images to improve speed"
165
- msgstr ""
166
-
167
- #. Text in echo
168
- #: speed-booster-pack/inc/template/options.php:305
169
- msgid "Load CSS asynchronously"
170
- msgstr ""
171
-
172
- #. Text in echo
173
- #: speed-booster-pack/inc/template/options.php:40
174
- msgid "Load JS from Google Libraries"
175
- msgstr ""
176
-
177
- #. Text in echo
178
- #: speed-booster-pack/inc/template/options.php:31
179
- msgid "Main plugin options"
180
- msgstr ""
181
-
182
- #. Text in echo
183
- #: speed-booster-pack/inc/template/options.php:313
184
- msgid "Minify all CSS styles"
185
- msgstr ""
186
-
187
- #. Text in echo
188
- #: speed-booster-pack/inc/template/options.php:35
189
- msgid "Move scripts to the footer"
190
- msgstr ""
191
-
192
- #. Text in echo
193
- #: speed-booster-pack/inc/template/options.php:289
194
- msgid ""
195
- "Note that any changes you make will only affect new images uploaded to your "
196
- "site. If you want to update all of your images with the new sizes, install "
197
- "and run the Regenerate Thumbnails plugin. As a reference, a lower level of "
198
- "compression means more performance. We recommend you choose a compression "
199
- "level between 50 and 75."
200
- msgstr ""
201
-
202
- #. Text in echo
203
- #: speed-booster-pack/inc/template/options.php:118
204
- msgid "Number of executed queries:"
205
- msgstr ""
206
-
207
- #. Text in echo
208
- #: speed-booster-pack/inc/template/options.php:106
209
- msgid "Page loading time in seconds:"
210
- msgstr ""
211
-
212
- #. Text in echo
213
- #: speed-booster-pack/inc/template/options.php:131
214
- msgid "Peak Memory Used:"
215
- msgstr ""
216
-
217
- #. Text in echo
218
- #: speed-booster-pack/inc/template/options.php:195
219
- msgid "Read more"
220
- msgstr ""
221
-
222
- #. Text in echo
223
- #: speed-booster-pack/inc/template/options.php:399
224
- msgid "Read online plugin documentation"
225
- msgstr ""
226
-
227
- #. Text in echo
228
- #: speed-booster-pack/inc/template/options.php:423
229
- msgid "Released date:"
230
- msgstr ""
231
-
232
- #. Text in echo
233
- #: speed-booster-pack/inc/template/options.php:81
234
- msgid "Remove Adjacent Posts Links"
235
- msgstr ""
236
-
237
- #. Text in echo
238
- #: speed-booster-pack/inc/template/options.php:71
239
- msgid "Remove RSD Link"
240
- msgstr ""
241
-
242
- #. Text in echo
243
- #: speed-booster-pack/inc/template/options.php:86
244
- msgid "Remove Windows Manifest"
245
- msgstr ""
246
-
247
- #. Text in echo
248
- #: speed-booster-pack/inc/template/options.php:76
249
- msgid "Remove WordPress Shortlink"
250
- msgstr ""
251
-
252
- #. Text in echo
253
- #: speed-booster-pack/inc/template/options.php:96
254
- msgid "Remove all rss feed links"
255
- msgstr ""
256
-
257
- #. Text in echo
258
- #: speed-booster-pack/inc/template/options.php:67
259
- msgid "Remove junk header tags"
260
- msgstr ""
261
-
262
- #. Text in echo
263
- #: speed-booster-pack/inc/template/options.php:50
264
- msgid "Remove query strings"
265
- msgstr ""
266
-
267
- #. Text in echo
268
- #: speed-booster-pack/inc/template/options.php:91
269
- msgid "Remove the WordPress Version"
270
- msgstr ""
271
-
272
- #. Text in echo
273
- #: speed-booster-pack/inc/template/options.php:60
274
- msgid "Removes extra Font Awesome styles"
275
- msgstr ""
276
-
277
- #. Text in echo
278
- #: speed-booster-pack/inc/template/options.php:149
279
- #: speed-booster-pack/inc/template/options.php:206
280
- msgid "Script Handle"
281
- msgstr ""
282
-
283
- #. Text in echo
284
- #: speed-booster-pack/inc/template/options.php:207
285
- msgid "Script Path"
286
- msgstr ""
287
-
288
- #. Text in echo
289
- #: speed-booster-pack/inc/template/options.php:299
290
- msgid "Still need more speed?"
291
- msgstr ""
292
-
293
- #. Text in echo
294
- #: speed-booster-pack/inc/template/options.php:286
295
- msgid ""
296
- "The default image compression setting in WordPress is 90%. Compressing your "
297
- "images further than the default will make your file sizes even smaller and "
298
- "will boost your site performance."
299
- msgstr ""
300
-
301
- #. Text in echo
302
- #: speed-booster-pack/inc/template/options.php:405
303
- msgid "Version Information"
304
- msgstr ""
305
-
306
- #. Text in echo
307
- #: speed-booster-pack/inc/template/options.php:389
308
- msgid "What do these settings mean?"
309
- msgstr ""
310
-
311
- #. Text in echo
312
- #: speed-booster-pack/inc/template/options.php:195
313
- msgid "detailed instructions"
314
- msgstr ""
315
-
316
- #. Text in echo
317
- #: speed-booster-pack/inc/template/options.php:195
318
- msgid "on this option on plugin documentation."
319
- msgstr ""
320
-
321
- #. Text in echo
322
- #: speed-booster-pack/inc/template/options.php:126
323
- msgid "q"
324
- msgstr ""
325
-
326
- #. Text in echo
327
- #: speed-booster-pack/inc/template/options.php:114
328
- msgid "s"
329
- msgstr ""
330
-
331
- #. Text in echo
332
- #: speed-booster-pack/inc/template/options.php:368
333
- msgid ""
334
- "this option will eliminate render-blocking CSS warning in Google Page Speed "
335
- "test. If there is something broken after activation, you need to disable "
336
- "this option. Please note that before enabling this sensitive option, it is "
337
- "strongly recommended that you also enable the \"Move scripts to the footer\" "
338
- "option."
339
- msgstr ""
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
lang/sb-pack.pot DELETED
@@ -1,339 +0,0 @@
1
- msgid ""
2
- msgstr ""
3
- "Content-Type: text/plain; charset=UTF-8\n"
4
- "Content-Transfer-Encoding: 8bit\n"
5
- "Plural-Forms: nplurals=2; plural=(n != 1);\n"
6
- "Project-Id-Version: Speed Booster Pack\n"
7
- "POT-Creation-Date: \n"
8
- "PO-Revision-Date: \n"
9
- "Last-Translator: Liviu Costache <tiguan@tiguandesign.com>\n"
10
- "Language-Team: Tiguandesign.com <tiguan@tiguandesign.com>\n"
11
- "MIME-Version: 1.0\n"
12
- "Language: en\n"
13
- "X-Generator: Poedit 1.6.7\n"
14
- "X-Poedit-SourceCharset: UTF-8\n"
15
- "X-Poedit-KeywordsList: _e;__\n"
16
- "X-Poedit-Basepath: .\n"
17
- "X-Poedit-SearchPath-0: ..\n"
18
- "X-Poedit-SearchPath-1: ...\n"
19
-
20
- #. Text in echo
21
- #: speed-booster-pack/inc/template/options.php:399
22
- msgid " with guidelines to enhance your website performance."
23
- msgstr ""
24
-
25
- #. Text in echo
26
- #: speed-booster-pack/inc/template/options.php:360
27
- msgid "*The list may be incomplete in some circumstances."
28
- msgstr ""
29
-
30
- #. Text in echo
31
- #: speed-booster-pack/inc/template/options.php:132
32
- msgid "Active Plugins:"
33
- msgstr ""
34
-
35
- #. Text in echo
36
- #: speed-booster-pack/inc/template/options.php:367
37
- msgid "Additional information:"
38
- msgstr ""
39
-
40
- #. Text in echo
41
- #: speed-booster-pack/inc/template/options.php:342
42
- msgid ""
43
- "As a guidance, here is a list of css handles of each enqueued style detected "
44
- "by our plugin:"
45
- msgstr ""
46
-
47
- #. Text in echo
48
- #: speed-booster-pack/inc/template/options.php:200
49
- msgid ""
50
- "As a guidance, here is a list of script handles and script paths of each "
51
- "enqueued script detected by our plugin:"
52
- msgstr ""
53
-
54
- #. Text in echo
55
- #: speed-booster-pack/inc/template/options.php:19
56
- msgid "Boost Your Website Speed!"
57
- msgstr ""
58
-
59
- #. Text in echo
60
- #: speed-booster-pack/inc/template/options.php:348
61
- msgid "CSS Handle"
62
- msgstr ""
63
-
64
- #. Text in echo
65
- #: speed-booster-pack/inc/template/options.php:265
66
- msgid "Change the default image compression level"
67
- msgstr ""
68
-
69
- #. Text in echo
70
- #: speed-booster-pack/inc/template/options.php:277
71
- msgid "Compression level:"
72
- msgstr ""
73
-
74
- #. Text in echo
75
- #: speed-booster-pack/inc/template/options.php:172
76
- msgid "Copy the HTML code of the script from your page source and add it below"
77
- msgstr ""
78
-
79
- #. Text in echo
80
- #: speed-booster-pack/inc/template/options.php:45
81
- msgid "Defer parsing of javascript files"
82
- msgstr ""
83
-
84
- #. Text in echo
85
- #: speed-booster-pack/inc/template/options.php:325
86
- msgid "Disable all above CSS options on mobile devices"
87
- msgstr ""
88
-
89
- #. Text in echo
90
- #: speed-booster-pack/inc/template/options.php:333
91
- msgid ""
92
- "Enter one by line, the handles of css files or the final part of the style "
93
- "URL. For example: <code>font-awesome</code> or <code>font-awesome.min.css</"
94
- "code>"
95
- msgstr ""
96
-
97
- #. Text in echo
98
- #: speed-booster-pack/inc/template/options.php:257
99
- msgid ""
100
- "Enter one by text field, the final part of the js files that you want to be "
101
- "excluded from defer parsing option. For example: <code>jquery.min.js</code> "
102
- "If you want to exclude more than 4 scripts, your page score will be hit and "
103
- "therefore the use of \"Defer parsing of javascript files\" option will "
104
- "become useless so you can disable it"
105
- msgstr ""
106
-
107
- #. Text in echo
108
- #: speed-booster-pack/inc/template/options.php:195
109
- msgid ""
110
- "Enter one js handle per text field, in the left area and the corespondent "
111
- "html script in the right text fields."
112
- msgstr ""
113
-
114
- #. Text in echo
115
- #: speed-booster-pack/inc/template/options.php:233
116
- msgid "Exclude scripts from being deferred"
117
- msgstr ""
118
-
119
- #. Text in echo
120
- #: speed-booster-pack/inc/template/options.php:143
121
- msgid "Exclude scripts from being moved to the footer"
122
- msgstr ""
123
-
124
- #. Text in echo
125
- #: speed-booster-pack/inc/template/options.php:330
126
- msgid "Exclude styles from asynchronously option: "
127
- msgstr ""
128
-
129
- #. Text in echo
130
- #: speed-booster-pack/inc/template/options.php:23
131
- msgid "General options"
132
- msgstr ""
133
-
134
- #. Text in echo
135
- #: speed-booster-pack/inc/template/options.php:104
136
- msgid "Home Page Load Stats"
137
- msgstr ""
138
-
139
- #. Text in echo
140
- #: speed-booster-pack/inc/template/options.php:195
141
- msgid ""
142
- "If you want to exclude more than 4 scripts, your page score will be hit and "
143
- "therefore the use of \"Move scripts to footer\" option will become useless "
144
- "so you can disable it."
145
- msgstr ""
146
-
147
- #. Text in echo
148
- #: speed-booster-pack/inc/template/options.php:320
149
- msgid "Insert all CSS styles inline to the footer"
150
- msgstr ""
151
-
152
- #. Text in echo
153
- #: speed-booster-pack/inc/template/options.php:368
154
- msgid "Insert all CSS styles inline to the footer: "
155
- msgstr ""
156
-
157
- #. Text in echo
158
- #: speed-booster-pack/inc/template/options.php:416
159
- msgid "Installed Version:"
160
- msgstr ""
161
-
162
- #. Text in echo
163
- #: speed-booster-pack/inc/template/options.php:55
164
- msgid "Lazy load images to improve speed"
165
- msgstr ""
166
-
167
- #. Text in echo
168
- #: speed-booster-pack/inc/template/options.php:305
169
- msgid "Load CSS asynchronously"
170
- msgstr ""
171
-
172
- #. Text in echo
173
- #: speed-booster-pack/inc/template/options.php:40
174
- msgid "Load JS from Google Libraries"
175
- msgstr ""
176
-
177
- #. Text in echo
178
- #: speed-booster-pack/inc/template/options.php:31
179
- msgid "Main plugin options"
180
- msgstr ""
181
-
182
- #. Text in echo
183
- #: speed-booster-pack/inc/template/options.php:313
184
- msgid "Minify all CSS styles"
185
- msgstr ""
186
-
187
- #. Text in echo
188
- #: speed-booster-pack/inc/template/options.php:35
189
- msgid "Move scripts to the footer"
190
- msgstr ""
191
-
192
- #. Text in echo
193
- #: speed-booster-pack/inc/template/options.php:289
194
- msgid ""
195
- "Note that any changes you make will only affect new images uploaded to your "
196
- "site. If you want to update all of your images with the new sizes, install "
197
- "and run the Regenerate Thumbnails plugin. As a reference, a lower level of "
198
- "compression means more performance. We recommend you choose a compression "
199
- "level between 50 and 75."
200
- msgstr ""
201
-
202
- #. Text in echo
203
- #: speed-booster-pack/inc/template/options.php:118
204
- msgid "Number of executed queries:"
205
- msgstr ""
206
-
207
- #. Text in echo
208
- #: speed-booster-pack/inc/template/options.php:106
209
- msgid "Page loading time in seconds:"
210
- msgstr ""
211
-
212
- #. Text in echo
213
- #: speed-booster-pack/inc/template/options.php:131
214
- msgid "Peak Memory Used:"
215
- msgstr ""
216
-
217
- #. Text in echo
218
- #: speed-booster-pack/inc/template/options.php:195
219
- msgid "Read more"
220
- msgstr ""
221
-
222
- #. Text in echo
223
- #: speed-booster-pack/inc/template/options.php:399
224
- msgid "Read online plugin documentation"
225
- msgstr ""
226
-
227
- #. Text in echo
228
- #: speed-booster-pack/inc/template/options.php:423
229
- msgid "Released date:"
230
- msgstr ""
231
-
232
- #. Text in echo
233
- #: speed-booster-pack/inc/template/options.php:81
234
- msgid "Remove Adjacent Posts Links"
235
- msgstr ""
236
-
237
- #. Text in echo
238
- #: speed-booster-pack/inc/template/options.php:71
239
- msgid "Remove RSD Link"
240
- msgstr ""
241
-
242
- #. Text in echo
243
- #: speed-booster-pack/inc/template/options.php:86
244
- msgid "Remove Windows Manifest"
245
- msgstr ""
246
-
247
- #. Text in echo
248
- #: speed-booster-pack/inc/template/options.php:76
249
- msgid "Remove WordPress Shortlink"
250
- msgstr ""
251
-
252
- #. Text in echo
253
- #: speed-booster-pack/inc/template/options.php:96
254
- msgid "Remove all rss feed links"
255
- msgstr ""
256
-
257
- #. Text in echo
258
- #: speed-booster-pack/inc/template/options.php:67
259
- msgid "Remove junk header tags"
260
- msgstr ""
261
-
262
- #. Text in echo
263
- #: speed-booster-pack/inc/template/options.php:50
264
- msgid "Remove query strings"
265
- msgstr ""
266
-
267
- #. Text in echo
268
- #: speed-booster-pack/inc/template/options.php:91
269
- msgid "Remove the WordPress Version"
270
- msgstr ""
271
-
272
- #. Text in echo
273
- #: speed-booster-pack/inc/template/options.php:60
274
- msgid "Removes extra Font Awesome styles"
275
- msgstr ""
276
-
277
- #. Text in echo
278
- #: speed-booster-pack/inc/template/options.php:149
279
- #: speed-booster-pack/inc/template/options.php:206
280
- msgid "Script Handle"
281
- msgstr ""
282
-
283
- #. Text in echo
284
- #: speed-booster-pack/inc/template/options.php:207
285
- msgid "Script Path"
286
- msgstr ""
287
-
288
- #. Text in echo
289
- #: speed-booster-pack/inc/template/options.php:299
290
- msgid "Still need more speed?"
291
- msgstr ""
292
-
293
- #. Text in echo
294
- #: speed-booster-pack/inc/template/options.php:286
295
- msgid ""
296
- "The default image compression setting in WordPress is 90%. Compressing your "
297
- "images further than the default will make your file sizes even smaller and "
298
- "will boost your site performance."
299
- msgstr ""
300
-
301
- #. Text in echo
302
- #: speed-booster-pack/inc/template/options.php:405
303
- msgid "Version Information"
304
- msgstr ""
305
-
306
- #. Text in echo
307
- #: speed-booster-pack/inc/template/options.php:389
308
- msgid "What do these settings mean?"
309
- msgstr ""
310
-
311
- #. Text in echo
312
- #: speed-booster-pack/inc/template/options.php:195
313
- msgid "detailed instructions"
314
- msgstr ""
315
-
316
- #. Text in echo
317
- #: speed-booster-pack/inc/template/options.php:195
318
- msgid "on this option on plugin documentation."
319
- msgstr ""
320
-
321
- #. Text in echo
322
- #: speed-booster-pack/inc/template/options.php:126
323
- msgid "q"
324
- msgstr ""
325
-
326
- #. Text in echo
327
- #: speed-booster-pack/inc/template/options.php:114
328
- msgid "s"
329
- msgstr ""
330
-
331
- #. Text in echo
332
- #: speed-booster-pack/inc/template/options.php:368
333
- msgid ""
334
- "this option will eliminate render-blocking CSS warning in Google Page Speed "
335
- "test. If there is something broken after activation, you need to disable "
336
- "this option. Please note that before enabling this sensitive option, it is "
337
- "strongly recommended that you also enable the \"Move scripts to the footer\" "
338
- "option."
339
- msgstr ""
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
readme.txt CHANGED
@@ -1,17 +1,21 @@
1
  === Speed Booster Pack ===
2
- Contributors: machothemes
3
- Donate link:
4
  Tags: speed, optimization, performance, scripts to the footer, google libraries, font awesome cdn, defer parsing of javascript, remove query strings, lazy load images, gtmetrix, google pageSpeed, yslow, eliminate external render-blocking javascript and css, compression, async, render-blocking css
5
  Requires at least: 3.6
6
  Tested up to: 4.9
7
- Stable tag: 3.6.1
8
- License: GPLv2 or later
9
- License URI: http://www.gnu.org/licenses/gpl-2.0.html
 
10
 
11
  A light, frequently updated and easy to use plugin to make your site load faster and score higher on Google PSI.
12
 
13
  == Description ==
14
 
 
 
 
 
15
  **Speed Booster Pack is a lightweight, frequently updated, easy to use and well supported plugin which allows you to improve your website's loading speed.**
16
 
17
  Improving your site's speed will get you a better score on major speed testing services such as [Google PageSpeed](http://developers.google.com/speed/pagespeed/insights/), [GTmetrix](http://gtmetrix.com/), [YSlow](https://developer.yahoo.com/yslow/), [Pingdom](http://tools.pingdom.com/fpt/), [Webpagetest](http://www.webpagetest.org/) and will also improve your overall site's usability. This will persuade Google and other search engines to rank your site higher in search results thus sending more traffic.
@@ -28,7 +32,6 @@ Speed Booster Pack is a plugin that can help you speed up your website by tweaki
28
  * **Load CSS asynchronously** to render your page more quickly and get a higher score on the major speed testing services.
29
  * **Minify and inline all CSS styles and move them to the footer** to eliminate external render-blocking CSS and optimize CSS delivery.
30
  * ** Minify HTML and JavaScript to increase your page load speed.
31
- * **Lazy loads images** to improve page load times and save bandwidth.
32
  * **Change image compression level** to keep file sizes smaller; Change JPG quality.
33
  * **Load javascript files from Google Libraries** rather than serving them from your WordPress install directly, to reduce latency, increase parallelism and improve browser caching.
34
  * **Defer parsing of javascript files** to reduce the initial load time of your page.
@@ -46,9 +49,6 @@ Speed Booster Pack is a plugin that can help you speed up your website by tweaki
46
 
47
  * For complete usage instructions visit [Plugin Documentation](http://docs.machothemes.com/category/118-speed-booster)
48
 
49
- A short video about how Speed Booster pack can help actually increase a website's score in Google PageSpeed Insights:
50
-
51
- https://www.youtube.com/watch?v=u0G6pk2mX4M
52
 
53
  Future Development:
54
 
@@ -77,6 +77,43 @@ We are a young team of WordPress aficionados who love building WordPress plugins
77
  1. Plugin options page, simple view (v2.5)
78
 
79
  == Changelog ==
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
80
  = 3.6.1 =
81
  * Added a section for feedback in the plugin's dashboard
82
 
1
  === Speed Booster Pack ===
2
+ Contributors: machothemes, silkalns
 
3
  Tags: speed, optimization, performance, scripts to the footer, google libraries, font awesome cdn, defer parsing of javascript, remove query strings, lazy load images, gtmetrix, google pageSpeed, yslow, eliminate external render-blocking javascript and css, compression, async, render-blocking css
4
  Requires at least: 3.6
5
  Tested up to: 4.9
6
+ Requires PHP: 5.6
7
+ Stable tag: trunk
8
+ License: GPLv3 or later
9
+ License URI: http://www.gnu.org/licenses/gpl-3.0.html
10
 
11
  A light, frequently updated and easy to use plugin to make your site load faster and score higher on Google PSI.
12
 
13
  == Description ==
14
 
15
+ A short video about how Speed Booster pack can help actually increase a website's score in Google PageSpeed Insights:
16
+
17
+ https://www.youtube.com/watch?v=u0G6pk2mX4M
18
+
19
  **Speed Booster Pack is a lightweight, frequently updated, easy to use and well supported plugin which allows you to improve your website's loading speed.**
20
 
21
  Improving your site's speed will get you a better score on major speed testing services such as [Google PageSpeed](http://developers.google.com/speed/pagespeed/insights/), [GTmetrix](http://gtmetrix.com/), [YSlow](https://developer.yahoo.com/yslow/), [Pingdom](http://tools.pingdom.com/fpt/), [Webpagetest](http://www.webpagetest.org/) and will also improve your overall site's usability. This will persuade Google and other search engines to rank your site higher in search results thus sending more traffic.
32
  * **Load CSS asynchronously** to render your page more quickly and get a higher score on the major speed testing services.
33
  * **Minify and inline all CSS styles and move them to the footer** to eliminate external render-blocking CSS and optimize CSS delivery.
34
  * ** Minify HTML and JavaScript to increase your page load speed.
 
35
  * **Change image compression level** to keep file sizes smaller; Change JPG quality.
36
  * **Load javascript files from Google Libraries** rather than serving them from your WordPress install directly, to reduce latency, increase parallelism and improve browser caching.
37
  * **Defer parsing of javascript files** to reduce the initial load time of your page.
49
 
50
  * For complete usage instructions visit [Plugin Documentation](http://docs.machothemes.com/category/118-speed-booster)
51
 
 
 
 
52
 
53
  Future Development:
54
 
77
  1. Plugin options page, simple view (v2.5)
78
 
79
  == Changelog ==
80
+
81
+ = 3.7.2 =
82
+ * minor tweaks & version bump
83
+ * removed ShortPixel aff integration
84
+
85
+ = 3.7.1 =
86
+ * Temporarily remove lazyLoad as the bundled JS files, namely, CrazyLazy don't seem to be working properly with the latest jQuery version.
87
+
88
+ = 3.7 =
89
+
90
+ * Bumped FontAwesome bundled CSS version from 4.1 -> 4.7 and changed to using MaxCDN
91
+ * (Hopefully) fixed the issue affecting relative/absolute paths when using minify CSS
92
+ * Wrongfully used escape functions
93
+ * Should use wp_scripts-> done instead of wp_scripts->queue
94
+ * Update Use Google Libraries 3rd party dependency
95
+ * Can't be fully translated because of one wrong text-domain string
96
+ * Change UI to WordPress Core UI
97
+ * Added plugin uninstall feedback
98
+ * Added plugin (dedicated) support tab && moved plugin feedback section only to support tab
99
+ * Added tooltips to all fields
100
+ * Re-worked the page load / site stats bar & added a bit more info
101
+ * Removed the old way of handling the uninstall hook & deletion of the sbp_integer variable from SBP when you uninstall it. In case you change your mind & reactivate the plugin, your former image compression value's there waiting for you.
102
+ * Addressed a small issue with the "Exclude scripts from being moved to footer" display
103
+ * Made all of the plugin's link send to MachoTheme's docs instead of Tiguan
104
+ * Updated jQuery UI CSS to latest version & included the PNG sprites that come by default with jQuery UI, eliminating some back-end "asset not found" errors
105
+ * Removed unused files
106
+ * Added feature: "Remove Emoji scripts"
107
+ * Added feature: "Disable XML-RPC" pings
108
+ * Added default values. Now it's even easier to get speed boosts without actually having to toggle stuff
109
+ * Removed po/mo files from SBP since translations are now handled here: https://translate.wordpress.org/projects/wp-plugins/speed-booster-pack
110
+ * jQuery will always be enqueued in the header, as a security/fallback measure.
111
+ * Fixed the way "exclude scripts from footer" works. It's now usable and only requires the script handle. Added backwards compat as well
112
+ * Fixed the way script deferring works, it's now actually usable. Introduced a filter: sbp_exclude_defer_scripts so users can exclude more than 4 scripts from being deferred
113
+ * Rewrote the way the plugin was handling removal of query strings from assets
114
+ * Automatically exclude certain known CSS assets from being async/minifed and/or moved from header (ex: dashicons / admin-bar)
115
+ * Full list of changes for v3.7, here: https://github.com/MachoThemes/speed-booster-pack/milestone/1?closed=1
116
+
117
  = 3.6.1 =
118
  * Added a section for feedback in the plugin's dashboard
119
 
speed-booster-pack.php CHANGED
@@ -1,15 +1,17 @@
1
  <?php
2
  /**
3
- * Plugin Name: Speed Booster Pack
4
- * Plugin URI: http://wordpress.org/plugins/speed-booster-pack/
5
- * Description: Speed Booster Pack allows you to improve your page loading speed and get a higher score on the major speed testing services such as <a href="http://gtmetrix.com/">GTmetrix</a>, <a href="http://developers.google.com/speed/pagespeed/insights/">Google PageSpeed</a> or other speed testing tools.
6
- * Version: 3.6.1
7
- * Author: Macho Themes
8
- * Author URI: https://www.machothemes.com/
9
- * License: GPLv2
10
- */
11
-
12
- /* Copyright 2017 Macho Themes (email : support [at] machothemes [dot] com)
 
 
13
 
14
  THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
15
  IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
@@ -26,260 +28,246 @@
26
  FOUNDATION, INC., 51 FRANKLIN ST, FIFTH FLOOR, BOSTON, MA 02110-1301 USA
27
  */
28
 
 
 
 
 
 
 
 
29
  /*----------------------------------------------------------------------------------------------------------
30
  Global Variables
31
  -----------------------------------------------------------------------------------------------------------*/
32
 
33
- $sbp_options = get_option( 'sbp_settings' ); // retrieve the plugin settings from the options table
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
34
 
35
  /*----------------------------------------------------------------------------------------------------------
36
  Define some useful plugin constants
37
  -----------------------------------------------------------------------------------------------------------*/
38
 
39
- define( 'SPEED_BOOSTER_PACK_RELEASE_DATE', date_i18n( 'F j, Y', strtotime('2017-08-21')) ); // Defining plugin release date
40
- define( 'SPEED_BOOSTER_PACK_PATH', plugin_dir_path( __FILE__ ) ); // Defining plugin dir path
41
- define( 'SPEED_BOOSTER_PACK_VERSION', 'v3.6.1'); // Defining plugin version
42
- define( 'SPEED_BOOSTER_PACK_NAME', 'Speed Booster Pack Plugin'); // Defining plugin name
43
- define( 'SBP_FOOTER', 10 ); // Defining css position
44
- define( 'SBP_FOOTER_LAST', 99999 ); // Defining css last position
45
-
46
 
47
  /*----------------------------------------------------------------------------------------------------------
48
  Main Plugin Class
49
  -----------------------------------------------------------------------------------------------------------*/
50
 
51
- if ( !class_exists( 'Speed_Booster_Pack' ) ) {
52
-
53
- class Speed_Booster_Pack {
54
-
55
- /*----------------------------------------------------------------------------------------------------------
56
- Function Construct
57
- -----------------------------------------------------------------------------------------------------------*/
58
-
59
- public function __construct() {
60
- global $sbp_options;
61
-
62
- // Enqueue admin scripts
63
- add_action( 'admin_enqueue_scripts', array( $this, 'sbp_admin_enqueue_scripts' ) );
64
- add_action( 'admin_enqueue_scripts', array( $this, 'sbp_collapsible' ) );
65
-
66
- // load plugin textdomain
67
- add_action('plugins_loaded', array( $this, 'sbp_load_translation' ) );
68
 
69
- add_action('admin_notices', array( &$this, 'sbp_display_notices'));
70
- add_action('wp_ajax_sbp_dismiss_notices', array(&$this, 'sbp_dismiss_notices'));
71
 
72
- // Load plugin settings page
73
- require_once( SPEED_BOOSTER_PACK_PATH . 'inc/settings.php' );
74
- $Speed_Booster_Pack_Options = new Speed_Booster_Pack_Options();
75
 
76
- // Load main plugin functions
77
- require_once( SPEED_BOOSTER_PACK_PATH . 'inc/core.php' );
78
- $Speed_Booster_Pack_Core = new Speed_Booster_Pack_Core();
79
-
80
- // Enqueue admin style
81
- add_action( 'admin_enqueue_scripts', array( $this, 'sbp_enqueue_styles' ) );
82
-
83
- if ( isset( $sbp_options['lazy_load'] ) ) {
84
- add_action('wp_head', array( $this, 'sbp_fade_in_style' ), 100);
85
- }
86
 
87
- // Render debugging information
88
- add_action( 'wp_footer', array( $this, 'sbp_debugg' ), SBP_FOOTER_LAST );
89
 
90
- // Filters
91
- $this->path = plugin_basename( __FILE__ );
92
- add_filter( "plugin_action_links_$this->path", array( $this, 'sbp_settings_link' ) );
 
 
 
 
93
 
94
- } // END public function __construct
95
 
 
 
96
 
97
- /*----------------------------------------------------------------------------------------------------------
98
- Load plugin textdomain
99
- -----------------------------------------------------------------------------------------------------------*/
100
 
101
- function sbp_load_translation() {
102
- load_plugin_textdomain( 'sb-pack', false, SPEED_BOOSTER_PACK_PATH . '/lang/' );
103
- }
104
 
 
 
 
105
 
106
- /*----------------------------------------------------------------------------------------------------------
107
- Display/dismiss admin notices if needed
108
- -----------------------------------------------------------------------------------------------------------*/
109
 
110
- function sbp_display_notices() {
111
- if(!get_option( 'sbp_news')) {
112
- global $sbp_settings_page;
113
- $screen = get_current_screen();
114
- if ( $screen->id != $sbp_settings_page ) {
115
- require_once( SPEED_BOOSTER_PACK_PATH . 'inc/template/notice.php' );
116
- }
117
- }
118
- }
119
 
120
- function sbp_dismiss_notices() {
121
- update_option( 'sbp_news', true);
122
- return json_encode(array("Status" => 0));
123
- }
124
 
125
- /*----------------------------------------------------------------------------------------------------------
126
- Activate the plugin
127
- -----------------------------------------------------------------------------------------------------------*/
128
 
129
- public static function sbp_activate() {
130
 
131
- $sbp_options = get_option( 'sbp_settings', '' );
132
- $timer_stop = timer_stop( 0, 2 );
133
- $get_num_queries = get_num_queries();
134
 
135
- $url = get_site_url();
136
- $response = wp_remote_get( $url, array() );
137
 
138
- $get_enqueued_scripts_handle = get_option( 'all_theme_scripts_handle' );
139
- $get_enqueued_scripts_src = get_option( 'all_theme_scripts_src' );
140
- $get_enqueued_styles_handle = get_option( 'all_theme_styles_handle' );
141
 
142
- if ( get_option('sbp_page_time') == '' ) {
143
- update_option( 'sbp_page_time', $timer_stop );
144
  }
145
 
146
- if ( get_option( 'sbp_page_queries') == '' ) {
147
- update_option( 'sbp_page_queries', $get_num_queries );
148
- }
149
 
150
- if ( get_option( 'all_theme_scripts_handle') == '' ) {
151
- update_option( 'all_theme_scripts_handle', $get_enqueued_scripts_handle );
152
  }
153
 
154
- if ( get_option( 'all_theme_scripts_src') == '' ) {
155
- update_option( 'all_theme_scripts_src', $get_enqueued_scripts_src );
156
- }
157
 
158
- if ( get_option( 'all_theme_styles_handle') == '' ) {
159
- update_option( 'all_theme_styles_handle', $get_enqueued_styles_handle );
160
- }
161
 
162
-
163
- if ( get_option('sbp_css_async' ) === FALSE ) {
164
- update_option( 'sbp_css_async', 1 );
165
- update_option( 'sbp_css_minify', 1 );
166
- update_option( 'sbp_footer_css', 0 );
167
- update_option( 'sbp_is_mobile', 0 );
 
 
168
  }
169
 
170
- } // END public static function sb_activate
171
-
172
-
173
- /*----------------------------------------------------------------------------------------------------------
174
- Deactivate the plugin
175
- -----------------------------------------------------------------------------------------------------------*/
176
 
177
- public static function sbp_deactivate() {
178
- delete_option( 'sbp_integer' );
179
  }
180
 
 
 
 
181
 
182
- /*-----------------------------------------------------------------------------------------------------------------------------------------
183
- Add a small css to activate a fade-in effect on lazy load images & wll be also used to output some frontend css in future development
184
- --------------------------------------------------------------------------------------------------------------------------------------------*/
185
-
186
- public function sbp_fade_in_style() {
187
- echo "<style>img.crazy_lazy {opacity:0}</style>";
188
- }
189
 
 
 
 
190
 
191
- /*----------------------------------------------------------------------------------------------------------
192
- CSS style of the plugin options page
193
- -----------------------------------------------------------------------------------------------------------*/
194
-
195
- function sbp_enqueue_styles( $hook ) {
196
 
197
- // load stylesheet only on plugin options page
198
- global $sbp_settings_page;
199
- if ( $hook != $sbp_settings_page )
200
- return;
201
- wp_enqueue_style( 'sbp-styles', plugin_dir_url( __FILE__ ) . 'css/style.dev.css' ); // change to style.dev.css to debug the plugin style sbp_style.min
202
- wp_enqueue_style( 'jquery-ui', plugin_dir_url( __FILE__ ) . 'css/jquery-ui.min.css' );
203
 
204
- } // End function sbp_enqueue_styles
 
 
205
 
 
 
 
206
 
207
- /*----------------------------------------------------------------------------------------------------------
208
- Enqueue admin scripts to plugin options page
209
- -----------------------------------------------------------------------------------------------------------*/
210
 
211
- public function sbp_admin_enqueue_scripts( $hook_sbp ) {
212
- // load scripts only on plugin options page
213
- global $sbp_settings_page;
214
- if ( $hook_sbp != $sbp_settings_page )
215
- return;
216
- wp_enqueue_script( 'jquery-ui-slider' );
217
- wp_enqueue_script( 'sbp-slide', plugins_url('inc/js/sbp-slide.js', __FILE__ ), array( 'jquery', 'jquery-ui-slider' ), SPEED_BOOSTER_PACK_VERSION, true );
218
- wp_enqueue_script( 'sbp-hide', plugins_url('inc/js/sbp-hide.js', __FILE__ ), array( 'jquery' ), SPEED_BOOSTER_PACK_VERSION, true );
219
 
220
- }
 
 
221
 
 
222
 
223
- /*----------------------------------------------------------------------------------------------------------
224
- Enqueue script to plugin options page for collapsible options
225
- -----------------------------------------------------------------------------------------------------------*/
226
 
227
- function sbp_collapsible( $sbp_suffix ) {
228
- global $sbp_settings_page;
229
- if ( $sbp_suffix != $sbp_settings_page )
230
- return;
231
- wp_enqueue_script( 'postbox' );
232
- wp_enqueue_script( 'postbox-edit', plugins_url('inc/js/post-tabs-edit.js', __FILE__ ), array( 'jquery', 'postbox' ) );
233
- }
234
 
 
 
235
 
236
- /*----------------------------------------------------------------------------------------------------------
237
- Add settings link on plugins page
238
- -----------------------------------------------------------------------------------------------------------*/
239
 
240
- function sbp_settings_link( $links ) {
 
 
241
 
242
- $settings_link = '<a href="options-general.php?page=sbp-options">Settings</a>';
243
- array_unshift( $links, $settings_link );
244
- return $links;
245
 
246
- } // End function sbp_settings_link
 
 
 
 
 
 
247
 
 
248
 
249
- /*----------------------------------------------------------------------------------------------------------
250
- Render the plugin name, its version and active options in page source, useful for debugging
251
- -----------------------------------------------------------------------------------------------------------*/
252
 
253
- function sbp_debugg() {
 
 
254
 
255
- global $sbp_options;
 
 
 
 
 
 
 
256
 
257
- echo '<!-- We need this for debugging themes using ' . SPEED_BOOSTER_PACK_NAME . ' ' . SPEED_BOOSTER_PACK_VERSION . ' -->' . "\n";
 
 
 
 
258
 
259
- if ( isset( $sbp_options['jquery_to_footer'] ) ) {
260
- echo '<!-- Scripts to footer: enabled -->' . "\n";
261
- }
 
262
 
263
- if ( isset( $sbp_options['sbp_footer_css'] ) ) {
264
- echo '<!-- CSS to footer: enabled -->' . "\n";
265
- }
266
 
267
- if ( isset( $sbp_options['defer_parsing'] ) ) {
268
- echo '<!-- Defer parsing of js: enabled -->' . "\n";
269
- }
270
 
271
- if ( isset( $sbp_options['sbp_css_async'] ) ) {
272
- echo '<!-- CSS Async: enabled -->' . "\n";
273
- }
274
 
 
275
 
276
- } // End function sbp_debugg
 
277
 
278
- } // End class Speed_Booster_Pack
279
 
280
- } // End if (!class_exists("Speed_Booster_Pack")) (1)
 
 
281
 
282
- if( class_exists( 'Speed_Booster_Pack' ) ) {
283
 
284
  // Installation and uninstallation hooks
285
  register_activation_hook( __FILE__, array( 'Speed_Booster_Pack', 'sbp_activate' ) );
@@ -288,4 +276,6 @@ if( class_exists( 'Speed_Booster_Pack' ) ) {
288
  // instantiate the plugin class
289
  $speed_booster_pack = new Speed_Booster_Pack();
290
 
291
- } // End if (!class_exists("Speed_Booster_Pack")) (2)
 
 
1
  <?php
2
  /**
3
+ * Plugin Name: Speed Booster Pack
4
+ * Plugin URI: http://wordpress.org/plugins/speed-booster-pack/
5
+ * Description: Speed Booster Pack allows you to improve your page loading speed and get a higher score on the major
6
+ * speed testing services such as <a href="http://gtmetrix.com/">GTmetrix</a>, <a
7
+ * href="http://developers.google.com/speed/pagespeed/insights/">Google PageSpeed</a> or other speed testing tools.
8
+ * Version: 3.7.2
9
+ * Author: Macho Themes
10
+ * Author URI: https://www.machothemes.com/
11
+ * License: GPLv3
12
+ */
13
+
14
+ /* Copyright 2018 Macho Themes (email : support [at] machothemes [dot] com)
15
 
16
  THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
17
  IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
28
  FOUNDATION, INC., 51 FRANKLIN ST, FIFTH FLOOR, BOSTON, MA 02110-1301 USA
29
  */
30
 
31
+
32
+ //@todo: rework the CSS Async functionality
33
+ //@todo: fix lazyLoad with WooCommerce <- it actually works flawlessly, it doesn't seem to work with AO and/or Cloudflare hosted CSS
34
+ //@todo: add system info menu page
35
+ //@todo: automatically collapse accordeons on "advanced" tab
36
+
37
+
38
  /*----------------------------------------------------------------------------------------------------------
39
  Global Variables
40
  -----------------------------------------------------------------------------------------------------------*/
41
 
42
+ /**
43
+ * Default plugin values
44
+ *
45
+ * @since 3.7
46
+ */
47
+ $sbp_defaults = array(
48
+ 'remove_emojis' => 1, // remove emoji scripts
49
+ 'remove_wsl' => 1, // remove WSL link in header
50
+ 'remove_adjacent' => 1, // remove post adjacent links
51
+ 'wml_link' => 1, // remove Windows Manifest Live link
52
+ 'rsd_link' => 1, // remove really simple discovery
53
+ 'wp_generator' => 1, // remove WP version
54
+ 'remove_all_feeds' => 1, // remove all WP feeds
55
+ 'disable_xmlrpc' => 1, // disable XML-RPC pingbacks
56
+ 'font_awesome' => 1, // remove extra font awesome styles
57
+ 'query_strings' => 1, // remove query strings
58
+ 'use_google_libs' => 1, // serve JS assets (when possible) from Google CDN
59
+ );
60
+
61
+ $sbp_options = get_option( 'sbp_settings', (array) $sbp_defaults ); // retrieve the plugin settings from the options table
62
 
63
  /*----------------------------------------------------------------------------------------------------------
64
  Define some useful plugin constants
65
  -----------------------------------------------------------------------------------------------------------*/
66
 
67
+ define( 'SPEED_BOOSTER_PACK_PATH', plugin_dir_path( __FILE__ ) ); // Defining plugin dir path
68
+ define( 'SPEED_BOOSTER_PACK_VERSION', '3.7.2' ); // Defining plugin version
69
+ define( 'SBP_FOOTER', 10 ); // Defining css position
70
+ define( 'SBP_FOOTER_LAST', 99999 ); // Defining css last position
 
 
 
71
 
72
  /*----------------------------------------------------------------------------------------------------------
73
  Main Plugin Class
74
  -----------------------------------------------------------------------------------------------------------*/
75
 
76
+ if ( ! class_exists( 'Speed_Booster_Pack' ) ) {
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
77
 
78
+ class Speed_Booster_Pack {
 
79
 
80
+ /*----------------------------------------------------------------------------------------------------------
81
+ Function Construct
82
+ -----------------------------------------------------------------------------------------------------------*/
83
 
84
+ public function __construct() {
85
+ global $sbp_options;
 
 
 
 
 
 
 
 
86
 
87
+ // Enqueue admin scripts
88
+ add_action( 'admin_enqueue_scripts', array( $this, 'sbp_admin_enqueue_scripts' ) );
89
 
90
+ /**
91
+ * Should remain disabled until we release wpspeedbooster.com
92
+ *
93
+ * @since: 3.7
94
+ *
95
+ */
96
+ //add_action( 'wp_dashboard_setup', [ $this, 'sbp_load_dashboard_widget' ] );
97
 
 
98
 
99
+ // load plugin textdomain
100
+ add_action( 'plugins_loaded', array( $this, 'sbp_load_translation' ) );
101
 
102
+ add_action( 'admin_notices', array( &$this, 'sbp_display_notices' ) );
103
+ add_action( 'wp_ajax_sbp_dismiss_notices', array( &$this, 'sbp_dismiss_notices' ) );
 
104
 
105
+ // Load plugin settings page
106
+ require_once( SPEED_BOOSTER_PACK_PATH . 'inc/settings.php' );
107
+ $Speed_Booster_Pack_Options = new Speed_Booster_Pack_Options();
108
 
109
+ // Load main plugin functions
110
+ require_once( SPEED_BOOSTER_PACK_PATH . 'inc/core.php' );
111
+ $Speed_Booster_Pack_Core = new Speed_Booster_Pack_Core();
112
 
113
+ // Enqueue admin style
114
+ add_action( 'admin_enqueue_scripts', array( $this, 'sbp_enqueue_styles' ) );
 
115
 
 
 
 
 
 
 
 
 
 
116
 
117
+ // Filters
118
+ $this->path = plugin_basename( __FILE__ );
119
+ add_filter( "plugin_action_links_$this->path", array( $this, 'sbp_settings_link' ) );
 
120
 
121
+ // load the uninstall feedback class
122
+ require_once 'feedback/class-epsilon-feedback.php';
123
+ new Epsilon_Feedback( __FILE__ );
124
 
125
+ } // END public function __construct
126
 
 
 
 
127
 
128
+ function sbp_load_dashboard_widget() {
 
129
 
130
+ require_once plugin_dir_path( __FILE__ ) . 'widgets/dashboard-widget.php';
 
 
131
 
 
 
132
  }
133
 
134
+ /*----------------------------------------------------------------------------------------------------------
135
+ Load plugin textdomain
136
+ -----------------------------------------------------------------------------------------------------------*/
137
 
138
+ function sbp_load_translation() {
139
+ load_plugin_textdomain( 'sb-pack', false, SPEED_BOOSTER_PACK_PATH . '/lang/' );
140
  }
141
 
 
 
 
142
 
143
+ /*----------------------------------------------------------------------------------------------------------
144
+ Display/dismiss admin notices if needed
145
+ -----------------------------------------------------------------------------------------------------------*/
146
 
147
+ function sbp_display_notices() {
148
+ if ( ! get_option( 'sbp_news' ) ) {
149
+ global $sbp_settings_page;
150
+ $screen = get_current_screen();
151
+ if ( $screen->id != $sbp_settings_page ) {
152
+ require_once( SPEED_BOOSTER_PACK_PATH . 'inc/template/notice.php' );
153
+ }
154
+ }
155
  }
156
 
157
+ function sbp_dismiss_notices() {
158
+ update_option( 'sbp_news', true );
 
 
 
 
159
 
160
+ return json_encode( array( "Status" => 0 ) );
 
161
  }
162
 
163
+ /*----------------------------------------------------------------------------------------------------------
164
+ Activate the plugin
165
+ -----------------------------------------------------------------------------------------------------------*/
166
 
167
+ public static function sbp_activate() {
 
 
 
 
 
 
168
 
169
+ $sbp_options = get_option( 'sbp_settings', '' );
170
+ $timer_stop = timer_stop( 0, 2 );
171
+ $get_num_queries = get_num_queries();
172
 
173
+ $url = get_site_url();
174
+ $response = wp_remote_get( $url, array() );
 
 
 
175
 
176
+ $get_enqueued_scripts_handle = get_option( 'all_theme_scripts_handle' );
177
+ $get_enqueued_scripts_src = get_option( 'all_theme_scripts_src' );
178
+ $get_enqueued_styles_handle = get_option( 'all_theme_styles_handle' );
 
 
 
179
 
180
+ if ( get_option( 'sbp_page_time' ) == '' ) {
181
+ update_option( 'sbp_page_time', $timer_stop );
182
+ }
183
 
184
+ if ( get_option( 'sbp_page_queries' ) == '' ) {
185
+ update_option( 'sbp_page_queries', $get_num_queries );
186
+ }
187
 
188
+ if ( get_option( 'all_theme_scripts_handle' ) == '' ) {
189
+ update_option( 'all_theme_scripts_handle', $get_enqueued_scripts_handle );
190
+ }
191
 
192
+ if ( get_option( 'all_theme_scripts_src' ) == '' ) {
193
+ update_option( 'all_theme_scripts_src', $get_enqueued_scripts_src );
194
+ }
 
 
 
 
 
195
 
196
+ if ( get_option( 'all_theme_styles_handle' ) == '' ) {
197
+ update_option( 'all_theme_styles_handle', $get_enqueued_styles_handle );
198
+ }
199
 
200
+ } // END public static function sb_activate
201
 
 
 
 
202
 
203
+ /*----------------------------------------------------------------------------------------------------------
204
+ Deactivate the plugin
205
+ -----------------------------------------------------------------------------------------------------------*/
 
 
 
 
206
 
207
+ public static function sbp_deactivate() {
208
+ }
209
 
 
 
 
210
 
211
+ /*----------------------------------------------------------------------------------------------------------
212
+ CSS style of the plugin options page
213
+ -----------------------------------------------------------------------------------------------------------*/
214
 
215
+ function sbp_enqueue_styles( $hook ) {
 
 
216
 
217
+ // load stylesheet only on plugin options page
218
+ global $sbp_settings_page;
219
+ if ( $hook != $sbp_settings_page ) {
220
+ return;
221
+ }
222
+ wp_enqueue_style( 'sbp-styles', plugin_dir_url( __FILE__ ) . 'css/style.css' );
223
+ wp_enqueue_style( 'jquery-ui', plugin_dir_url( __FILE__ ) . 'css/vendors/jquery-ui/jquery-ui.min.css' );
224
 
225
+ } // End function sbp_enqueue_styles
226
 
 
 
 
227
 
228
+ /*----------------------------------------------------------------------------------------------------------
229
+ Enqueue admin scripts to plugin options page
230
+ -----------------------------------------------------------------------------------------------------------*/
231
 
232
+ public function sbp_admin_enqueue_scripts( $hook_sbp ) {
233
+ // load scripts only on plugin options page
234
+ global $sbp_settings_page;
235
+ if ( $hook_sbp != $sbp_settings_page ) {
236
+ return;
237
+ }
238
+ wp_enqueue_script( 'jquery-ui-slider' );
239
+ wp_enqueue_script( 'postbox' );
240
 
241
+ wp_enqueue_script( 'sbp-admin-scripts', plugins_url( 'inc/js/admin-scripts.js', __FILE__ ), array(
242
+ 'jquery',
243
+ 'postbox',
244
+ 'jquery-ui-slider',
245
+ ), SPEED_BOOSTER_PACK_VERSION, true );
246
 
247
+ wp_enqueue_script( 'sbp-plugin-install', plugins_url( 'inc/js/plugin-install.js', __FILE__ ), array(
248
+ 'jquery',
249
+ 'updates',
250
+ ), SPEED_BOOSTER_PACK_VERSION, true );
251
 
252
+ }
 
 
253
 
 
 
 
254
 
255
+ /*----------------------------------------------------------------------------------------------------------
256
+ Add settings link on plugins page
257
+ -----------------------------------------------------------------------------------------------------------*/
258
 
259
+ function sbp_settings_link( $links ) {
260
 
261
+ $settings_link = ' <a href="admin.php?page=sbp-options">Settings</a > ';
262
+ array_unshift( $links, $settings_link );
263
 
264
+ return $links;
265
 
266
+ } // End function sbp_settings_link
267
+ }// End class Speed_Booster_Pack
268
+ } // End if (!class_exists("Speed_Booster_Pack")) (1)
269
 
270
+ if ( class_exists( 'Speed_Booster_Pack' ) ) {
271
 
272
  // Installation and uninstallation hooks
273
  register_activation_hook( __FILE__, array( 'Speed_Booster_Pack', 'sbp_activate' ) );
276
  // instantiate the plugin class
277
  $speed_booster_pack = new Speed_Booster_Pack();
278
 
279
+ } // End if (!class_exists("Speed_Booster_Pack")) (2)
280
+
281
+ // make sure to update the path to where you cloned the projects to!
widgets/dashboard-widget.php ADDED
@@ -0,0 +1,70 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?Php
2
+
3
+ // WordPress Events and News
4
+ wp_add_dashboard_widget( 'sbp_dashboard_primary', __( 'Speed Booster Pack Overview' ), 'sbp_dashboard_events_news' );
5
+
6
+
7
+ /**
8
+ * Renders the Events and News dashboard widget.
9
+ *
10
+ * @since 3.7
11
+ */
12
+ function sbp_dashboard_events_news() {
13
+
14
+ ?>
15
+
16
+ <div class="wordpress-news hide-if-no-js">
17
+ <?php sbp_dashboard_widget(); ?>
18
+ </div>
19
+
20
+
21
+ <!--
22
+ <p class="community-events-footer">
23
+ see this:
24
+ - https://github.com/WordPress/WordPress/blob/921e131eae45801b8fdb1ecfceb5d7839fdfd509/wp-admin/includes/dashboard.php#L1124-L1159
25
+ - https://codex.wordpress.org/Dashboard_Widgets_API#Advanced:_Forcing_your_widget_to_the_top
26
+
27
+ </p>
28
+ -->
29
+
30
+ <?php
31
+ }
32
+
33
+
34
+ /**
35
+ * 'WordPress Events and News' dashboard widget.
36
+ *
37
+ * @since 3.7
38
+ */
39
+ function sbp_dashboard_widget() {
40
+ $feeds = array(
41
+ 'news' => array(
42
+ 'link' => apply_filters( 'sbp_dashboard_primary_link', __( 'https://www.machothemes.com/' ) ),
43
+ 'url' => apply_filters( 'sbp_dashboard_primary_feed', __( 'https://www.machothemes.com/blog/feed/' ) ),
44
+ 'title' => apply_filters( 'sbp_dashboard_primary_title', __( 'Speed Booster Pack Overview' ) ),
45
+ 'items' => 3,
46
+ 'show_summary' => 1,
47
+ 'show_author' => 0,
48
+ 'show_date' => 0,
49
+ ),
50
+ );
51
+
52
+ sbp_dashboard_primary_output( 'sbp_dashboard_primary', $feeds );
53
+ }
54
+
55
+ /**
56
+ * Display the WordPress events and news feeds.
57
+ *
58
+ * @since 3.7
59
+ *
60
+ * @param string $widget_id Widget ID.
61
+ * @param array $feeds Array of RSS feeds.
62
+ */
63
+ function sbp_dashboard_primary_output( $widget_id, $feeds ) {
64
+ foreach ( $feeds as $type => $args ) {
65
+ $args['type'] = $type;
66
+ echo '<div class="rss-widget">';
67
+ wp_widget_rss_output( $args['url'], $args );
68
+ echo '</div>';
69
+ }
70
+ }