Version Description
- minor backend tweaks - notice
- added language files
Download this release
Release Info
Developer | machothemes |
Plugin | Speed Booster Pack |
Version | 3.7.4 |
Comparing to | |
See all releases |
Code changes from version 3.7.2 to 3.7.4
- css/style.css +59 -1
- feedback/class-epsilon-feedback.php +270 -270
- feedback/class-epsilon-plugin-request.php +224 -224
- inc/crazy-lazy.class.php +172 -0
- inc/crazy-lazy.php +37 -0
- inc/images/logo.png +0 -0
- inc/images/sp.png +0 -0
- inc/js/jquery.unveil.js +72 -0
- inc/js/jquery.unveil.min.js +12 -0
- inc/js/lazyload.js +91 -0
- inc/js/lazyload.min.js +8 -0
- inc/template/notice.php +32 -14
- inc/template/options.php +25 -81
- lang/sb-pack.pot +582 -0
- readme.txt +12 -5
- speed-booster-pack.php +4 -2
css/style.css
CHANGED
@@ -865,4 +865,62 @@ p.description-link {
|
|
865 |
font-size: .8em;
|
866 |
color: #555;
|
867 |
height: 18px;
|
868 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
865 |
font-size: .8em;
|
866 |
color: #555;
|
867 |
height: 18px;
|
868 |
+
}
|
869 |
+
|
870 |
+
/* Box */
|
871 |
+
.sbp-box {
|
872 |
+
height: 330px;
|
873 |
+
margin-top: 15px;
|
874 |
+
text-align: center;
|
875 |
+
background: #FFF;
|
876 |
+
position: relative;
|
877 |
+
border: 1px solid rgba(0, 0, 0, .1);
|
878 |
+
float: left;
|
879 |
+
}
|
880 |
+
|
881 |
+
.sbp-box img {
|
882 |
+
width: 125px;
|
883 |
+
height: 125px;
|
884 |
+
margin: 0 auto;
|
885 |
+
margin-bottom: 15px;
|
886 |
+
display: block;
|
887 |
+
border: none;
|
888 |
+
}
|
889 |
+
|
890 |
+
.sbp-box__name {
|
891 |
+
margin-bottom: 10px;
|
892 |
+
padding: 0 26px;
|
893 |
+
font-weight: 600;
|
894 |
+
}
|
895 |
+
|
896 |
+
.sbp-box__description {
|
897 |
+
font-size: 0.9em;
|
898 |
+
}
|
899 |
+
|
900 |
+
.sbp-box__action-bar {
|
901 |
+
position: absolute;
|
902 |
+
bottom: 0;
|
903 |
+
left: 0;
|
904 |
+
right: 0;
|
905 |
+
font-size: 15px;
|
906 |
+
margin: 0;
|
907 |
+
padding: 15px;
|
908 |
+
-webkit-box-shadow: inset 0 1px 0 rgba(0, 0, 0, .1);
|
909 |
+
box-shadow: inset 0 1px 0 rgba(0, 0, 0, .1);
|
910 |
+
white-space: nowrap;
|
911 |
+
text-overflow: ellipsis;
|
912 |
+
background: rgba(255, 255, 255, .65);
|
913 |
+
text-align: left;
|
914 |
+
}
|
915 |
+
|
916 |
+
.sbp-box__action-button {
|
917 |
+
position: absolute;
|
918 |
+
bottom: 0px;
|
919 |
+
right: 0px;
|
920 |
+
padding: 9px 10px 10px;
|
921 |
+
background: #f6f6f6;
|
922 |
+
border-top: 1px solid rgba(0, 0, 0, .1);
|
923 |
+
text-align: center;
|
924 |
+
width: 100%;
|
925 |
+
}
|
926 |
+
|
feedback/class-epsilon-feedback.php
CHANGED
@@ -1,271 +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 |
}
|
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
CHANGED
@@ -1,225 +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 |
}
|
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/crazy-lazy.class.php
ADDED
@@ -0,0 +1,172 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
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
ADDED
@@ -0,0 +1,37 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
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/images/logo.png
ADDED
Binary file
|
inc/images/sp.png
DELETED
Binary file
|
inc/js/jquery.unveil.js
ADDED
@@ -0,0 +1,72 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
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
ADDED
@@ -0,0 +1,12 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
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
ADDED
@@ -0,0 +1,91 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
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
ADDED
@@ -0,0 +1,8 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
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/template/notice.php
CHANGED
@@ -1,17 +1,35 @@
|
|
1 |
-
<div class=
|
2 |
-
|
3 |
-
|
4 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
5 |
</div>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
6 |
<script>
|
7 |
-
|
8 |
-
|
9 |
-
|
10 |
-
|
11 |
-
|
12 |
-
|
13 |
-
|
14 |
-
|
15 |
-
|
16 |
-
|
17 |
</script>
|
1 |
+
<div class="notice sbp-notice" id="sbp-notice">
|
2 |
+
<img src="<?php echo esc_url( plugins_url( 'images/logo.png', dirname( __FILE__ ) ) ); ?>" width="80">
|
3 |
+
|
4 |
+
<h1><?php esc_html_e( 'Welcome to Speed Booster Pack', 'sb-pack' ); ?></h1>
|
5 |
+
|
6 |
+
<p><?php printf( esc_html__( 'Welcome! Thank you for installing Speed Booster Pack! Check out the %sPlugin settings%s for new features that can make your site load faster.', 'sb-pack' ), '<a href="admin.php?page=sbp-options">', '</a>' ); ?></p>
|
7 |
+
|
8 |
+
<p><a href="admin.php?page=sbp-options" class="button button-primary button-hero"><?php esc_html_e( 'Get started with Speed Booster Pack', 'sb-pack' ); ?></a></p>
|
9 |
+
|
10 |
+
<button type="button" onclick="sbp_dismissNotice();" class="notice-dismiss"><span class="screen-reader-text"><?php esc_html_e( 'Dismiss this notice.', 'sb-pack' ); ?></span></button>
|
11 |
</div>
|
12 |
+
|
13 |
+
<style>
|
14 |
+
.sbp-notice {
|
15 |
+
background: #e9eff3;
|
16 |
+
border: 10px solid #fff;
|
17 |
+
color: #608299;
|
18 |
+
padding: 30px;
|
19 |
+
text-align: center;
|
20 |
+
position: relative;
|
21 |
+
}
|
22 |
+
</style>
|
23 |
+
|
24 |
<script>
|
25 |
+
function sbp_dismissNotice() {
|
26 |
+
jQuery("#sbp-notice").hide();
|
27 |
+
var data = { action : 'sbp_dismiss_notices'};
|
28 |
+
jQuery.get('<?php echo esc_url( admin_url( 'admin-ajax.php' ) ); ?>', data, function(response) {
|
29 |
+
data = JSON.parse(response);
|
30 |
+
if(data["Status"] == 0) {
|
31 |
+
console.log("dismissed");
|
32 |
+
}
|
33 |
+
});
|
34 |
+
}
|
35 |
</script>
|
inc/template/options.php
CHANGED
@@ -25,7 +25,7 @@ if ( is_array( $option_arr ) && in_array( 'defer-from-footer', $option_arr ) ) {
|
|
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>
|
@@ -83,10 +83,11 @@ if ( is_array( $option_arr ) && in_array( 'defer-from-footer', $option_arr ) ) {
|
|
83 |
</div>
|
84 |
|
85 |
<h2 class="nav-tab-wrapper wp-clearfix">
|
86 |
-
<a class="nav-tab" href="#general-options"><?php
|
87 |
-
<a class="nav-tab" href="#advanced-options"><?php
|
88 |
-
<a class="nav-tab" href="#image-options"><?php
|
89 |
-
<a class="nav-tab" href="#support"><?php
|
|
|
90 |
</h2>
|
91 |
|
92 |
<form method="post" action="options.php">
|
@@ -440,82 +441,6 @@ if ( is_array( $option_arr ) && in_array( 'defer-from-footer', $option_arr ) ) {
|
|
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'>
|
@@ -623,6 +548,25 @@ if ( is_array( $option_arr ) && in_array( 'defer-from-footer', $option_arr ) ) {
|
|
623 |
</div>
|
624 |
</div><!--#support-->
|
625 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
626 |
<div class="textright">
|
627 |
<hr />
|
628 |
<?php submit_button( '', 'button button-primary button-hero' ); ?>
|
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>
|
83 |
</div>
|
84 |
|
85 |
<h2 class="nav-tab-wrapper wp-clearfix">
|
86 |
+
<a class="nav-tab" href="#general-options"><?php esc_html_e( 'General', 'sb-pack' ); ?></a>
|
87 |
+
<a class="nav-tab" href="#advanced-options"><?php esc_html_e( 'Advanced', 'sb-pack' ); ?></a>
|
88 |
+
<a class="nav-tab" href="#image-options"><?php esc_html_e( 'Image Optimization', 'sb-pack' ); ?></a>
|
89 |
+
<a class="nav-tab" href="#support"><?php esc_html_e( 'Support', 'sb-pack' ); ?></a>
|
90 |
+
<a class="nav-tab" href="#optimize-more"><?php esc_html_e( 'Optimize More', 'sb-pack' ); ?></a>
|
91 |
</h2>
|
92 |
|
93 |
<form method="post" action="options.php">
|
441 |
</div>
|
442 |
|
443 |
<div id="image-options" class="sb-pack-tab">
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
444 |
<h3><?php _e( 'Change the default image compression level', 'sb-pack' ); ?></h3>
|
445 |
|
446 |
<script type='text/javascript'>
|
548 |
</div>
|
549 |
</div><!--#support-->
|
550 |
|
551 |
+
<div id="optimize-more" class="sb-pack-tab three-col">
|
552 |
+
|
553 |
+
<div class="col sbp-box">
|
554 |
+
<img src="https://ps.w.org/shortpixel-image-optimiser/assets/icon-128x128.png?rev=1038819">
|
555 |
+
<div class="sbp-box__name"><?php esc_html_e( 'ShortPixel Image Optimizer', 'sb-pack' ); ?></div>
|
556 |
+
|
557 |
+
<div class="sbp-box__description">
|
558 |
+
<?php esc_html_e( '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' ); ?>
|
559 |
+
</div>
|
560 |
+
|
561 |
+
<div class="sbp-box__action-bar">
|
562 |
+
<span class="sbp-box__action-button">
|
563 |
+
<a class="button" href="<?php echo esc_url( 'https://shortpixel.com/h/af/IVAKFSX31472' ); ?>" target="_blank"><?php esc_html_e( 'Test your site for free', 'sb-pack' ); ?></a>
|
564 |
+
</span>
|
565 |
+
</div>
|
566 |
+
</div>
|
567 |
+
|
568 |
+
</div><!--#optimize-more-->
|
569 |
+
|
570 |
<div class="textright">
|
571 |
<hr />
|
572 |
<?php submit_button( '', 'button button-primary button-hero' ); ?>
|
lang/sb-pack.pot
ADDED
@@ -0,0 +1,582 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
#, fuzzy
|
2 |
+
msgid ""
|
3 |
+
msgstr ""
|
4 |
+
"Plural-Forms: nplurals=INTEGER; plural=EXPRESSION;\n"
|
5 |
+
"Project-Id-Version: Speed Booster Pack\n"
|
6 |
+
"POT-Creation-Date: 2018-12-03 17:01+0200\n"
|
7 |
+
"PO-Revision-Date: 2018-12-03 17:01+0200\n"
|
8 |
+
"Last-Translator: \n"
|
9 |
+
"Language-Team: \n"
|
10 |
+
"MIME-Version: 1.0\n"
|
11 |
+
"Content-Type: text/plain; charset=UTF-8\n"
|
12 |
+
"Content-Transfer-Encoding: 8bit\n"
|
13 |
+
"X-Generator: Poedit 2.0.2\n"
|
14 |
+
"X-Poedit-Basepath: ..\n"
|
15 |
+
"X-Poedit-Flags-xgettext: --add-comments=translators:\n"
|
16 |
+
"X-Poedit-WPHeader: speed-booster-pack.php\n"
|
17 |
+
"X-Poedit-SourceCharset: UTF-8\n"
|
18 |
+
"X-Poedit-KeywordsList: __;_e;_n:1,2;_x:1,2c;_ex:1,2c;_nx:4c,1,2;esc_attr__;"
|
19 |
+
"esc_attr_e;esc_attr_x:1,2c;esc_html__;esc_html_e;esc_html_x:1,2c;_n_noop:1,2;"
|
20 |
+
"_nx_noop:3c,1,2;__ngettext_noop:1,2\n"
|
21 |
+
"X-Poedit-SearchPath-0: .\n"
|
22 |
+
"X-Poedit-SearchPathExcluded-0: *.js\n"
|
23 |
+
|
24 |
+
#: feedback/class-epsilon-feedback.php:63
|
25 |
+
msgid "Allow us to get more information in order to improve our plugin"
|
26 |
+
msgstr ""
|
27 |
+
|
28 |
+
#: feedback/class-epsilon-feedback.php:67
|
29 |
+
msgid "Submitting form"
|
30 |
+
msgstr ""
|
31 |
+
|
32 |
+
#: feedback/class-epsilon-feedback.php:68
|
33 |
+
msgid "Just Deactivate"
|
34 |
+
msgstr ""
|
35 |
+
|
36 |
+
#: feedback/class-epsilon-feedback.php:68
|
37 |
+
msgid "Submit and Deactivate"
|
38 |
+
msgstr ""
|
39 |
+
|
40 |
+
#: feedback/class-epsilon-feedback.php:158
|
41 |
+
msgid "What was the dificult part ?"
|
42 |
+
msgstr ""
|
43 |
+
|
44 |
+
#: feedback/class-epsilon-feedback.php:159
|
45 |
+
msgid "What can we describe more ?"
|
46 |
+
msgstr ""
|
47 |
+
|
48 |
+
#: feedback/class-epsilon-feedback.php:160
|
49 |
+
#: feedback/class-epsilon-feedback.php:235
|
50 |
+
msgid "How could we improve ?"
|
51 |
+
msgstr ""
|
52 |
+
|
53 |
+
#: feedback/class-epsilon-feedback.php:161
|
54 |
+
msgid "Can you mention it ?"
|
55 |
+
msgstr ""
|
56 |
+
|
57 |
+
#: feedback/class-epsilon-feedback.php:162
|
58 |
+
msgid "With what plugin or theme is incompatible ?"
|
59 |
+
msgstr ""
|
60 |
+
|
61 |
+
#: feedback/class-epsilon-feedback.php:226
|
62 |
+
msgid "Sorry to see you go"
|
63 |
+
msgstr ""
|
64 |
+
|
65 |
+
#: feedback/class-epsilon-feedback.php:227
|
66 |
+
msgid ""
|
67 |
+
"Before you deactivate the plugin, would you quickly give us your reason for "
|
68 |
+
"doing so?"
|
69 |
+
msgstr ""
|
70 |
+
|
71 |
+
#: feedback/class-epsilon-feedback.php:229
|
72 |
+
msgid "Set up is too difficult"
|
73 |
+
msgstr ""
|
74 |
+
|
75 |
+
#: feedback/class-epsilon-feedback.php:230
|
76 |
+
msgid "Lack of documentation"
|
77 |
+
msgstr ""
|
78 |
+
|
79 |
+
#: feedback/class-epsilon-feedback.php:231
|
80 |
+
msgid "Not the features I wanted"
|
81 |
+
msgstr ""
|
82 |
+
|
83 |
+
#: feedback/class-epsilon-feedback.php:232
|
84 |
+
msgid "Found a better plugin"
|
85 |
+
msgstr ""
|
86 |
+
|
87 |
+
#: feedback/class-epsilon-feedback.php:233
|
88 |
+
msgid "Incompatible with theme or plugin"
|
89 |
+
msgstr ""
|
90 |
+
|
91 |
+
#: inc/settings.php:179
|
92 |
+
msgid "Speed Booster Options"
|
93 |
+
msgstr ""
|
94 |
+
|
95 |
+
#: inc/settings.php:179
|
96 |
+
msgid "Speed Booster"
|
97 |
+
msgstr ""
|
98 |
+
|
99 |
+
#: inc/settings.php:190
|
100 |
+
msgid "You do not have sufficient permissions to access this page."
|
101 |
+
msgstr ""
|
102 |
+
|
103 |
+
#: inc/template/notice.php:4
|
104 |
+
msgid "Welcome to Speed Booster Pack"
|
105 |
+
msgstr ""
|
106 |
+
|
107 |
+
#: inc/template/notice.php:6
|
108 |
+
#, php-format
|
109 |
+
msgid ""
|
110 |
+
"Welcome! Thank you for installing Speed Booster Pack! Check out the %sPlugin "
|
111 |
+
"settings%s for new features that can make your site load faster."
|
112 |
+
msgstr ""
|
113 |
+
|
114 |
+
#: inc/template/notice.php:8
|
115 |
+
msgid "Get started with Speed Booster Pack"
|
116 |
+
msgstr ""
|
117 |
+
|
118 |
+
#: inc/template/notice.php:10
|
119 |
+
msgid "Dismiss this notice."
|
120 |
+
msgstr ""
|
121 |
+
|
122 |
+
#: inc/template/options.php:28
|
123 |
+
msgid ""
|
124 |
+
"Speed Booster Pack is a lightweight, frequently updated, easy to use and "
|
125 |
+
"well supported plugin which allows you to improve your website’s loading "
|
126 |
+
"speed. Visitors usually close a website if it doesn’t load in a few seconds "
|
127 |
+
"and the slower a site loads the greater the chances are that the visitors "
|
128 |
+
"will leave. And you don’t want that to happen, do you?\n"
|
129 |
+
msgstr ""
|
130 |
+
|
131 |
+
#: inc/template/options.php:35
|
132 |
+
msgid "Page load: "
|
133 |
+
msgstr ""
|
134 |
+
|
135 |
+
#: inc/template/options.php:36
|
136 |
+
msgid " sec"
|
137 |
+
msgstr ""
|
138 |
+
|
139 |
+
#: inc/template/options.php:62
|
140 |
+
msgid "DB Queries"
|
141 |
+
msgstr ""
|
142 |
+
|
143 |
+
#: inc/template/options.php:67
|
144 |
+
msgid "Memory: "
|
145 |
+
msgstr ""
|
146 |
+
|
147 |
+
#: inc/template/options.php:74
|
148 |
+
msgid "Plugins: "
|
149 |
+
msgstr ""
|
150 |
+
|
151 |
+
#: inc/template/options.php:80
|
152 |
+
msgid "Analyse"
|
153 |
+
msgstr ""
|
154 |
+
|
155 |
+
#: inc/template/options.php:86 inc/template/options.php:101
|
156 |
+
msgid "General"
|
157 |
+
msgstr ""
|
158 |
+
|
159 |
+
#: inc/template/options.php:87
|
160 |
+
msgid "Advanced"
|
161 |
+
msgstr ""
|
162 |
+
|
163 |
+
#: inc/template/options.php:88
|
164 |
+
msgid "Image Optimization"
|
165 |
+
msgstr ""
|
166 |
+
|
167 |
+
#: inc/template/options.php:89
|
168 |
+
msgid "Support"
|
169 |
+
msgstr ""
|
170 |
+
|
171 |
+
#: inc/template/options.php:90
|
172 |
+
msgid "Optimize More"
|
173 |
+
msgstr ""
|
174 |
+
|
175 |
+
#: inc/template/options.php:105
|
176 |
+
msgid "Move scripts to the footer"
|
177 |
+
msgstr ""
|
178 |
+
|
179 |
+
#: inc/template/options.php:107
|
180 |
+
msgid ""
|
181 |
+
"This option move all scripts to the footer while keeping stylesheets in the "
|
182 |
+
"header to improve page loading speed and get a higher score on the major "
|
183 |
+
"speed testing sites such as GTmetrix or other website speed testing tools."
|
184 |
+
msgstr ""
|
185 |
+
|
186 |
+
#: inc/template/options.php:115
|
187 |
+
msgid "Load JS from Google Libraries"
|
188 |
+
msgstr ""
|
189 |
+
|
190 |
+
#: inc/template/options.php:117
|
191 |
+
msgid ""
|
192 |
+
"Loading WordPress javascript files from Google’s Libraries rather than "
|
193 |
+
"serving it from your WordPress install directly, will reduce latency, "
|
194 |
+
"increase parallelism and improve caching."
|
195 |
+
msgstr ""
|
196 |
+
|
197 |
+
#: inc/template/options.php:124
|
198 |
+
msgid "Minify HTML"
|
199 |
+
msgstr ""
|
200 |
+
|
201 |
+
#: inc/template/options.php:126
|
202 |
+
msgid ""
|
203 |
+
"Activate this option only if you don’t want to use other minify plugins or "
|
204 |
+
"other speed optimization plugin that has minify option included. If "
|
205 |
+
"something goes wrong, simply uncheck this option and save the settings."
|
206 |
+
msgstr ""
|
207 |
+
|
208 |
+
#: inc/template/options.php:133
|
209 |
+
msgid "Defer parsing of javascript files"
|
210 |
+
msgstr ""
|
211 |
+
|
212 |
+
#: inc/template/options.php:135
|
213 |
+
msgid ""
|
214 |
+
"!!!Note: This will be disabled IF Move Scripts to Footer is enabled. By "
|
215 |
+
"deferring parsing of unneeded JavaScript until it needs to be executed, you "
|
216 |
+
"can reduce the initial load time of your page. Please note that this option "
|
217 |
+
"will not defer the main WordPress jQuery script if Load JS from Google "
|
218 |
+
"Libraries option is not checked."
|
219 |
+
msgstr ""
|
220 |
+
|
221 |
+
#: inc/template/options.php:142
|
222 |
+
msgid "Remove query strings"
|
223 |
+
msgstr ""
|
224 |
+
|
225 |
+
#: inc/template/options.php:144
|
226 |
+
msgid ""
|
227 |
+
"Since most proxies do not cache resources with a ? in their URL, this option "
|
228 |
+
"allows you to remove any query strings (version numbers) from static "
|
229 |
+
"resources like CSS & JS files, thus improving your speed scores in services "
|
230 |
+
"like GTmetrix, PageSpeed, YSlow and Pingdoom."
|
231 |
+
msgstr ""
|
232 |
+
|
233 |
+
#: inc/template/options.php:151
|
234 |
+
msgid "Removes extra Font Awesome styles"
|
235 |
+
msgstr ""
|
236 |
+
|
237 |
+
#: inc/template/options.php:153
|
238 |
+
msgid ""
|
239 |
+
"Use this option only if your theme uses Font Awesome, to prevent other "
|
240 |
+
"plugins that uses Font Awesome, to add their stylesheets to your theme. In "
|
241 |
+
"other words, this option removes extra Font Awesome stylesheets added to "
|
242 |
+
"your theme by certain plugins."
|
243 |
+
msgstr ""
|
244 |
+
|
245 |
+
#: inc/template/options.php:158
|
246 |
+
msgid "More settings"
|
247 |
+
msgstr ""
|
248 |
+
|
249 |
+
#: inc/template/options.php:162
|
250 |
+
msgid "Remove WordPress Emoji scripts"
|
251 |
+
msgstr ""
|
252 |
+
|
253 |
+
#: inc/template/options.php:164
|
254 |
+
msgid ""
|
255 |
+
"Emojis are fun and all, but if you are aren’t using them they actually load "
|
256 |
+
"a JavaScript file (wp-emoji-release.min.js) on every page of your website. "
|
257 |
+
"For a lot of businesses, this is not needed and simply adds load time to "
|
258 |
+
"your site. So we recommend disabling this."
|
259 |
+
msgstr ""
|
260 |
+
|
261 |
+
#: inc/template/options.php:171
|
262 |
+
msgid "Remove WordPress Shortlink"
|
263 |
+
msgstr ""
|
264 |
+
|
265 |
+
#: inc/template/options.php:173
|
266 |
+
msgid ""
|
267 |
+
"WordPress URL shortening is sometimes useful, but it automatically adds an "
|
268 |
+
"ugly code in your header, so you can remove it."
|
269 |
+
msgstr ""
|
270 |
+
|
271 |
+
#: inc/template/options.php:180
|
272 |
+
msgid "Remove Adjacent Posts Links"
|
273 |
+
msgstr ""
|
274 |
+
|
275 |
+
#: inc/template/options.php:182
|
276 |
+
msgid ""
|
277 |
+
"WordPress incorrectly implements this feature that supposedly should fix a "
|
278 |
+
"pagination issues but it messes up, so there is no reason to keep these "
|
279 |
+
"around. However, some browsers may use Adjacent Posts Links to navigate your "
|
280 |
+
"site, although you can remove it if you run a well designed theme."
|
281 |
+
msgstr ""
|
282 |
+
|
283 |
+
#: inc/template/options.php:189
|
284 |
+
msgid "Remove Windows Manifest"
|
285 |
+
msgstr ""
|
286 |
+
|
287 |
+
#: inc/template/options.php:191
|
288 |
+
msgid ""
|
289 |
+
"Windows Live Writer (WLW) is a Microsoft application for composing and "
|
290 |
+
"managing blog posts offline and publish them later. If you are not using "
|
291 |
+
"Windows Live Writer application, you can remove it from the WP head."
|
292 |
+
msgstr ""
|
293 |
+
|
294 |
+
#: inc/template/options.php:198
|
295 |
+
msgid "Remove RSD(Really Simple Discovery) Link"
|
296 |
+
msgstr ""
|
297 |
+
|
298 |
+
#: inc/template/options.php:200
|
299 |
+
msgid ""
|
300 |
+
"This type of link is used by blog clients. If you edit your site from your "
|
301 |
+
"browser then you don’t need this. It is also used by some 3rd party "
|
302 |
+
"applications that utilize XML-RPC requests. In most cases, this is just "
|
303 |
+
"unnecessary code."
|
304 |
+
msgstr ""
|
305 |
+
|
306 |
+
#: inc/template/options.php:207
|
307 |
+
msgid "Remove the WordPress Version"
|
308 |
+
msgstr ""
|
309 |
+
|
310 |
+
#: inc/template/options.php:209
|
311 |
+
msgid "This option is added for security reasons and cleaning the header."
|
312 |
+
msgstr ""
|
313 |
+
|
314 |
+
#: inc/template/options.php:216
|
315 |
+
msgid "Remove all rss feed links"
|
316 |
+
msgstr ""
|
317 |
+
|
318 |
+
#: inc/template/options.php:218
|
319 |
+
msgid ""
|
320 |
+
"This option wil remove all rss feed links to cleanup your WordPress header. "
|
321 |
+
"It is also useful on Unicorn – The W3C Markup Validation Service to get rid "
|
322 |
+
"out the “feed does not validate” error."
|
323 |
+
msgstr ""
|
324 |
+
|
325 |
+
#: inc/template/options.php:225
|
326 |
+
msgid "Disable XML-RPC"
|
327 |
+
msgstr ""
|
328 |
+
|
329 |
+
#: inc/template/options.php:227
|
330 |
+
msgid ""
|
331 |
+
"XML-RPC was added in WordPress 3.5 and allows for remote connections, and "
|
332 |
+
"unless you are using your mobile device to post to WordPress it does more "
|
333 |
+
"bad than good. In fact, it can open your site up to a bunch of security "
|
334 |
+
"risks. There are a few plugins that utilize this such as JetPack, but we "
|
335 |
+
"don’t recommend using JetPack for performance reasons."
|
336 |
+
msgstr ""
|
337 |
+
|
338 |
+
#: inc/template/options.php:232
|
339 |
+
msgid "Need even more speed?"
|
340 |
+
msgstr ""
|
341 |
+
|
342 |
+
#: inc/template/options.php:236
|
343 |
+
msgid "Inline all CSS styles"
|
344 |
+
msgstr ""
|
345 |
+
|
346 |
+
#: inc/template/options.php:238
|
347 |
+
msgid ""
|
348 |
+
"Checking this option will inline the contents of all your stylesheets. This "
|
349 |
+
"helps with the annoying render blocking error Google Page Speed Insights "
|
350 |
+
"displays."
|
351 |
+
msgstr ""
|
352 |
+
|
353 |
+
#: inc/template/options.php:245
|
354 |
+
msgid "Minify all (previously) inlined CSS styles"
|
355 |
+
msgstr ""
|
356 |
+
|
357 |
+
#: inc/template/options.php:247
|
358 |
+
msgid ""
|
359 |
+
"Minifying all inlined CSS styles will optimize the CSS delivery and will "
|
360 |
+
"eliminate the annoying message on Google Page Speed regarding to render-"
|
361 |
+
"blocking css."
|
362 |
+
msgstr ""
|
363 |
+
|
364 |
+
#: inc/template/options.php:254
|
365 |
+
msgid "Move all inlined CSS into the footer"
|
366 |
+
msgstr ""
|
367 |
+
|
368 |
+
#: inc/template/options.php:256
|
369 |
+
msgid ""
|
370 |
+
"Inserting all CSS styles inline to the footer is a sensitive option that "
|
371 |
+
"will eliminate render-blocking CSS warning in Google Page Speed test. If "
|
372 |
+
"there is something broken after activation, you need to disable this option. "
|
373 |
+
"Please note that before enabling this sensitive option, it is strongly "
|
374 |
+
"recommended that you also enable the “ Move scripts to the footer” option."
|
375 |
+
msgstr ""
|
376 |
+
|
377 |
+
#: inc/template/options.php:263
|
378 |
+
msgid "Disable all above CSS options on mobile devices"
|
379 |
+
msgstr ""
|
380 |
+
|
381 |
+
#: inc/template/options.php:265
|
382 |
+
msgid ""
|
383 |
+
"Disable all above CSS options on mobile devices: this option was added to "
|
384 |
+
"avoid some appearance issues on mobile devices."
|
385 |
+
msgstr ""
|
386 |
+
|
387 |
+
#: inc/template/options.php:272
|
388 |
+
msgid "Exclude styles from being inlined and/or minified option: "
|
389 |
+
msgstr ""
|
390 |
+
|
391 |
+
#: inc/template/options.php:277
|
392 |
+
msgid ""
|
393 |
+
"Enter one by line, the handles of css files or the final part of the style "
|
394 |
+
"URL. For example: <code>font-awesome</code> or <code>font-awesome.min.css</"
|
395 |
+
"code>"
|
396 |
+
msgstr ""
|
397 |
+
|
398 |
+
#: inc/template/options.php:283
|
399 |
+
msgid ""
|
400 |
+
"As a guidance, here is a list of css handles of each enqueued style detected "
|
401 |
+
"by our plugin:"
|
402 |
+
msgstr ""
|
403 |
+
|
404 |
+
#: inc/template/options.php:289
|
405 |
+
msgid "CSS Handle"
|
406 |
+
msgstr ""
|
407 |
+
|
408 |
+
#: inc/template/options.php:311 inc/template/options.php:315
|
409 |
+
msgid "Exclude scripts from being moved to the footer"
|
410 |
+
msgstr ""
|
411 |
+
|
412 |
+
#: inc/template/options.php:320 inc/template/options.php:352
|
413 |
+
msgid "Script Handle"
|
414 |
+
msgstr ""
|
415 |
+
|
416 |
+
#: inc/template/options.php:322
|
417 |
+
msgid "Enter one js handle per text field."
|
418 |
+
msgstr ""
|
419 |
+
|
420 |
+
#: inc/template/options.php:322 inc/template/options.php:503
|
421 |
+
#: inc/template/options.php:515 inc/template/options.php:527
|
422 |
+
msgid "Read more"
|
423 |
+
msgstr ""
|
424 |
+
|
425 |
+
#: inc/template/options.php:323
|
426 |
+
msgid "detailed instructions"
|
427 |
+
msgstr ""
|
428 |
+
|
429 |
+
#: inc/template/options.php:323
|
430 |
+
msgid "on this option on plugin documentation."
|
431 |
+
msgstr ""
|
432 |
+
|
433 |
+
#: inc/template/options.php:346
|
434 |
+
msgid ""
|
435 |
+
"As a guidance, here is a list of script handles and script paths of each "
|
436 |
+
"enqueued script detected by our plugin:"
|
437 |
+
msgstr ""
|
438 |
+
|
439 |
+
#: inc/template/options.php:353
|
440 |
+
msgid "Script Path"
|
441 |
+
msgstr ""
|
442 |
+
|
443 |
+
#: inc/template/options.php:408 inc/template/options.php:412
|
444 |
+
msgid "Exclude scripts from being deferred"
|
445 |
+
msgstr ""
|
446 |
+
|
447 |
+
#: inc/template/options.php:434
|
448 |
+
msgid ""
|
449 |
+
"Enter one by text field, the handle part of the js files that you want to be "
|
450 |
+
"excluded from defer parsing option. For example: <code>jquery-core</code> If "
|
451 |
+
"you want to exclude more than 4 scripts, you can use the following filter: "
|
452 |
+
"<code>sbp_exclude_defer_scripts</code> which takes an array of script "
|
453 |
+
"handles as params. If you don't know how to handle this, feel free to post "
|
454 |
+
"on our support forums."
|
455 |
+
msgstr ""
|
456 |
+
|
457 |
+
#: inc/template/options.php:444
|
458 |
+
msgid "Change the default image compression level"
|
459 |
+
msgstr ""
|
460 |
+
|
461 |
+
#: inc/template/options.php:451
|
462 |
+
msgid "Compression level:"
|
463 |
+
msgstr ""
|
464 |
+
|
465 |
+
#: inc/template/options.php:461
|
466 |
+
msgid ""
|
467 |
+
"The default image compression setting in WordPress is 90%. Compressing your "
|
468 |
+
"images further than the default will make your file sizes even smaller and "
|
469 |
+
"will boost your site performance. As a reference, a lower level of "
|
470 |
+
"compression means more performance but might induce quality loss. We "
|
471 |
+
"recommend you choose a compression level between 50 and 75."
|
472 |
+
msgstr ""
|
473 |
+
|
474 |
+
#: inc/template/options.php:465
|
475 |
+
msgid ""
|
476 |
+
"Note that any changes you make will only affect new images uploaded to your "
|
477 |
+
"site. A specialized plugin can optimize all your present images and will "
|
478 |
+
"also optimize new ones as they are added. "
|
479 |
+
msgstr ""
|
480 |
+
|
481 |
+
#: inc/template/options.php:481
|
482 |
+
msgid "Contact Support"
|
483 |
+
msgstr ""
|
484 |
+
|
485 |
+
#: inc/template/options.php:484
|
486 |
+
msgid "We offer support through WordPress.org's support forums."
|
487 |
+
msgstr ""
|
488 |
+
|
489 |
+
#: inc/template/options.php:487
|
490 |
+
msgid "Post on our support forums"
|
491 |
+
msgstr ""
|
492 |
+
|
493 |
+
#: inc/template/options.php:497
|
494 |
+
msgid "Our Bluehost Hosting Review"
|
495 |
+
msgstr ""
|
496 |
+
|
497 |
+
#: inc/template/options.php:500
|
498 |
+
msgid ""
|
499 |
+
"Despite its popularity, though, Bluehost often carries a negative perception "
|
500 |
+
"among WordPress professionals. So as we dig into this Bluehost review, we'll "
|
501 |
+
"be looking to figure out whether Bluehost's performance and features "
|
502 |
+
"actually justify that reputation."
|
503 |
+
msgstr ""
|
504 |
+
|
505 |
+
#: inc/template/options.php:509
|
506 |
+
msgid "Our InMotion Hosting Review"
|
507 |
+
msgstr ""
|
508 |
+
|
509 |
+
#: inc/template/options.php:512
|
510 |
+
msgid ""
|
511 |
+
"InMotion Hosting is a popular independent web host that serves over 300,000 "
|
512 |
+
"customers. They're notably not a part of the EIG behemoth (the parent "
|
513 |
+
"company behind Bluehost, HostGator, and more), which is a plus in my book."
|
514 |
+
msgstr ""
|
515 |
+
|
516 |
+
#: inc/template/options.php:521
|
517 |
+
msgid "Our A2 Hosting Review"
|
518 |
+
msgstr ""
|
519 |
+
|
520 |
+
#: inc/template/options.php:524
|
521 |
+
msgid ""
|
522 |
+
"When it comes to affordable WordPress hosting, A2 Hosting is a name that "
|
523 |
+
"often comes up in various WordPress groups for offering quick-loading "
|
524 |
+
"performance that belies its low price tag."
|
525 |
+
msgstr ""
|
526 |
+
|
527 |
+
#: inc/template/options.php:535
|
528 |
+
msgid "Lend a hand & share your thoughts"
|
529 |
+
msgstr ""
|
530 |
+
|
531 |
+
#: inc/template/options.php:541
|
532 |
+
#, php-format
|
533 |
+
msgid ""
|
534 |
+
"We've been working hard on making %1$s the best one out there. We're "
|
535 |
+
"interested in hearing your thoughts about %1$s and what we could do to "
|
536 |
+
"<u>make it even better</u>.<br/> <br/> %2$sHave your say%3$s"
|
537 |
+
msgstr ""
|
538 |
+
|
539 |
+
#: inc/template/options.php:555
|
540 |
+
msgid "ShortPixel Image Optimizer"
|
541 |
+
msgstr ""
|
542 |
+
|
543 |
+
#: inc/template/options.php:558
|
544 |
+
msgid ""
|
545 |
+
"Increase your website’s SEO ranking, number of visitors and ultimately your "
|
546 |
+
"sales by optimizing any image or PDF document on your website. "
|
547 |
+
msgstr ""
|
548 |
+
|
549 |
+
#: inc/template/options.php:563
|
550 |
+
msgid "Test your site for free"
|
551 |
+
msgstr ""
|
552 |
+
|
553 |
+
#: widgets/dashboard-widget.php:4 widgets/dashboard-widget.php:44
|
554 |
+
msgid "Speed Booster Pack Overview"
|
555 |
+
msgstr ""
|
556 |
+
|
557 |
+
#. Author URI of the plugin/theme
|
558 |
+
#: widgets/dashboard-widget.php:42
|
559 |
+
msgid "https://www.machothemes.com/"
|
560 |
+
msgstr ""
|
561 |
+
|
562 |
+
#: widgets/dashboard-widget.php:43
|
563 |
+
msgid "https://www.machothemes.com/blog/feed/"
|
564 |
+
msgstr ""
|
565 |
+
|
566 |
+
#. Plugin Name of the plugin/theme
|
567 |
+
msgid "Speed Booster Pack"
|
568 |
+
msgstr ""
|
569 |
+
|
570 |
+
#. Plugin URI of the plugin/theme
|
571 |
+
msgid "http://wordpress.org/plugins/speed-booster-pack/"
|
572 |
+
msgstr ""
|
573 |
+
|
574 |
+
#. Description of the plugin/theme
|
575 |
+
msgid ""
|
576 |
+
"Speed Booster Pack allows you to improve your page loading speed and get a "
|
577 |
+
"higher score on the major"
|
578 |
+
msgstr ""
|
579 |
+
|
580 |
+
#. Author of the plugin/theme
|
581 |
+
msgid "Macho Themes"
|
582 |
+
msgstr ""
|
readme.txt
CHANGED
@@ -1,10 +1,10 @@
|
|
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,
|
4 |
Requires at least: 3.6
|
5 |
Tested up to: 4.9
|
6 |
Requires PHP: 5.6
|
7 |
-
Stable tag:
|
8 |
License: GPLv3 or later
|
9 |
License URI: http://www.gnu.org/licenses/gpl-3.0.html
|
10 |
|
@@ -62,7 +62,7 @@ Future Development:
|
|
62 |
* [Simple Author Box](http://wordpress.org/plugins/simple-author-box/) - A simple but cool author box with social icons.
|
63 |
|
64 |
**About us:**
|
65 |
-
We are a young team of WordPress aficionados who love building WordPress plugins & <a href="https://www.machothemes.com/" target="_blank" title="Premium WordPress themes">Premium WordPress themes</a> over on our theme shop. We’re also blogging and wish to help our users find the <a href="https://www.machothemes.com/blog/best-cheap-wordpress-hosting/" target="_blank" title="Best Cheap WordPress Hosting">Best Cheap WordPress Hosting</a> available on the market. Check out our blog.
|
66 |
|
67 |
|
68 |
== Installation ==
|
@@ -78,11 +78,18 @@ We are a young team of WordPress aficionados who love building WordPress plugins
|
|
78 |
|
79 |
== Changelog ==
|
80 |
|
81 |
-
= 3.7.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
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 =
|
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, gtmetrix, google pageSpeed, yslow, compression, render-blocking css
|
4 |
Requires at least: 3.6
|
5 |
Tested up to: 4.9
|
6 |
Requires PHP: 5.6
|
7 |
+
Stable tag: 3.7.4
|
8 |
License: GPLv3 or later
|
9 |
License URI: http://www.gnu.org/licenses/gpl-3.0.html
|
10 |
|
62 |
* [Simple Author Box](http://wordpress.org/plugins/simple-author-box/) - A simple but cool author box with social icons.
|
63 |
|
64 |
**About us:**
|
65 |
+
We are a young team of WordPress aficionados who love building WordPress plugins & <a href="https://www.machothemes.com/" target="_blank" title="Premium WordPress themes">Premium WordPress themes</a> over on our theme shop. We’re also blogging and wish to help our users find the <a href="https://www.machothemes.com/blog/best-cheap-wordpress-hosting/" target="_blank" title="Best Cheap WordPress Hosting">Best Cheap WordPress Hosting</a> available on the market. Check out our blog.
|
66 |
|
67 |
|
68 |
== Installation ==
|
78 |
|
79 |
== Changelog ==
|
80 |
|
81 |
+
= 3.7.4 =
|
82 |
+
* minor backend tweaks - notice
|
83 |
+
* added language files
|
84 |
+
|
85 |
+
= 3.7.3 =
|
86 |
+
* minor backend tweaks
|
87 |
+
|
88 |
+
= 3.7.2 =
|
89 |
* minor tweaks & version bump
|
90 |
* removed ShortPixel aff integration
|
91 |
|
92 |
+
= 3.7.1 =
|
93 |
* Temporarily remove lazyLoad as the bundled JS files, namely, CrazyLazy don't seem to be working properly with the latest jQuery version.
|
94 |
|
95 |
= 3.7 =
|
speed-booster-pack.php
CHANGED
@@ -5,10 +5,12 @@
|
|
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.
|
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)
|
@@ -65,7 +67,7 @@ $sbp_options = get_option( 'sbp_settings', (array) $sbp_defaults ); // retrie
|
|
65 |
-----------------------------------------------------------------------------------------------------------*/
|
66 |
|
67 |
define( 'SPEED_BOOSTER_PACK_PATH', plugin_dir_path( __FILE__ ) ); // Defining plugin dir path
|
68 |
-
define( 'SPEED_BOOSTER_PACK_VERSION', '3.7.
|
69 |
define( 'SBP_FOOTER', 10 ); // Defining css position
|
70 |
define( 'SBP_FOOTER_LAST', 99999 ); // Defining css last position
|
71 |
|
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.4
|
9 |
* Author: Macho Themes
|
10 |
* Author URI: https://www.machothemes.com/
|
11 |
* License: GPLv3
|
12 |
+
* Text Domain : sb-pack
|
13 |
+
* Domain Path: /lang
|
14 |
*/
|
15 |
|
16 |
/* Copyright 2018 Macho Themes (email : support [at] machothemes [dot] com)
|
67 |
-----------------------------------------------------------------------------------------------------------*/
|
68 |
|
69 |
define( 'SPEED_BOOSTER_PACK_PATH', plugin_dir_path( __FILE__ ) ); // Defining plugin dir path
|
70 |
+
define( 'SPEED_BOOSTER_PACK_VERSION', '3.7.4' ); // Defining plugin version
|
71 |
define( 'SBP_FOOTER', 10 ); // Defining css position
|
72 |
define( 'SBP_FOOTER_LAST', 99999 ); // Defining css last position
|
73 |
|