Super Progressive Web Apps - Version 2.2.6

Version Description

  • Date: 06.July.2022
  • BugFixed : Stop servicework for caching the videos. #279
  • BugFixed : Apple Touch Icons & Splash Screen not fetching Welcome screen image #284
  • Enhancement : Added New Addon Pull To Refresh #285
Download this release

Release Info

Developer superpwa
Plugin Icon 128x128 Super Progressive Web Apps
Version 2.2.6
Comparing to
See all releases

Code changes from version 2.2.5 to 2.2.6

addons/apple-touch-icons.php CHANGED
@@ -181,11 +181,11 @@ function superpwa_apple_icons_splash_screen_cb() {
181
  $a = 'style="display:none"';$src = '';
182
  if(isset($iosScreenSetting['ios_splash_icon']) && !empty($iosScreenSetting['ios_splash_icon'])){
183
  $a = '';
184
- $src = end($iosScreenSetting['ios_splash_icon']);
185
  }
186
  ?>
187
  <p id="aft_img_gen"> </p>
188
- <img src="<?php echo $src; ?>" id="thumbnail" title="<?php echo esc_attr__('Currently selected splash screen', 'super-progressive-web-apps'); ?>" width="100">
189
 
190
  <script id="iosScreen-data" type="application/json"><?php echo json_encode($splashIconsScreens);?></script>
191
  <br/>
181
  $a = 'style="display:none"';$src = '';
182
  if(isset($iosScreenSetting['ios_splash_icon']) && !empty($iosScreenSetting['ios_splash_icon'])){
183
  $a = '';
184
+ $src = end($iosScreenSetting['ios_splash_icon']).'?nocache='.uniqid();
185
  }
186
  ?>
187
  <p id="aft_img_gen"> </p>
188
+ <img src="<?php echo esc_url_raw($src); ?>" id="thumbnail" title="<?php echo esc_attr__('Currently selected splash screen', 'super-progressive-web-apps'); ?>" width="100">
189
 
190
  <script id="iosScreen-data" type="application/json"><?php echo json_encode($splashIconsScreens);?></script>
191
  <br/>
addons/pull-to-refresh.php ADDED
@@ -0,0 +1,388 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ /**
4
+ * Pull To Refresh
5
+ *
6
+ * @since 1.7
7
+ *
8
+ * @function superpwa_pull_to_refresh_sub_menu() Add sub-menu page for Pull To Refresh
9
+ * @function superpwa_pull_to_refresh_get_settings() Get Pull To Refresh settings
10
+ * @function superpwa_pull_to_refresh_for_start_url() Add Pull To Refresh to the start_url
11
+ * @function superpwa_pull_to_refresh_save_settings_todo() Todo list after saving Pull To Refresh settings
12
+ * @function superpwa_pull_to_refresh_deactivate_todo() Deactivation Todo
13
+ * @function superpwa_pull_to_refresh_register_settings() Register Pull To Refresh settings
14
+ * @function superpwa_pull_to_refresh_validater_sanitizer() Validate and sanitize user input
15
+ * @function superpwa_pull_to_refresh_section_cb() Callback function for Pull To Refresh section
16
+ * @function superpwa_pull_to_refresh_start_url_cb() Current Start URL
17
+ * @function superpwa_pull_to_refresh_enable_cb() Campaign Source
18
+ * @function superpwa_pull_to_refresh_pull_message_text_cb() Pull message
19
+ * @function superpwa_pull_to_refresh_pull_release_text_cb() Release message
20
+ * @function superpwa_pull_to_refresh_refreshing_text_cb() Refreshing message
21
+ * @function superpwa_pull_to_refresh_font_size_cb() Font size
22
+ * @function superpwa_pull_to_refresh_interface_render() Pull To Refresh UI renderer
23
+ */
24
+
25
+ // Exit if accessed directly
26
+ if (!defined('ABSPATH')) exit;
27
+
28
+ /**
29
+ * Get Pull To Refresh settings
30
+ *
31
+ * @since 1.7
32
+ */
33
+ function superpwa_pull_to_refresh_get_settings()
34
+ {
35
+
36
+ $defaults = array(
37
+ 'superpwa_pull_to_refresh_switch' => '1',
38
+ 'superpwa_ptr_text' => 'Pull down to refresh',
39
+ 'superpwa_ptr_release_text' => 'Release to refresh',
40
+ 'superpwa_ptr_refreshing_text' => 'Refreshing',
41
+ 'superpwa_ptr_font_size' => '0.85em',
42
+ 'superpwa_ptr_font_color' => 'rgba(0, 0, 0, 0.3)',
43
+ );
44
+
45
+ return get_option('superpwa_pull_to_refresh_settings', $defaults);
46
+ }
47
+
48
+
49
+ /**
50
+ * Todo list after saving Pull To Refresh settings
51
+ *
52
+ * Regenerate manifest when settings are saved.
53
+ * Also used when add-on is activated and deactivated.
54
+ *
55
+ * @since 1.7
56
+ */
57
+ function superpwa_pull_to_refresh_save_settings_todo()
58
+ {
59
+
60
+ // Regenerate manifest
61
+ superpwa_generate_manifest();
62
+ }
63
+ add_action('add_option_superpwa_pull_to_refresh_settings', 'superpwa_pull_to_refresh_save_settings_todo');
64
+ add_action('update_option_superpwa_pull_to_refresh_settings', 'superpwa_pull_to_refresh_save_settings_todo');
65
+ add_action('superpwa_addon_activated_pull_to_refresh', 'superpwa_pull_to_refresh_save_settings_todo');
66
+
67
+ /**
68
+ * Deactivation Todo
69
+ *
70
+ * Unhook the filter and regenerate manifest
71
+ *
72
+ * @since 1.7
73
+ */
74
+ /* function superpwa_pull_to_refresh_deactivate_todo()
75
+ {
76
+
77
+ // Unhook the Pull To Refresh params filter
78
+ remove_filter('superpwa_manifest_start_url', 'superpwa_pull_to_refresh_for_start_url');
79
+
80
+ // Regenerate manifest
81
+ superpwa_generate_manifest();
82
+ }
83
+ */ // add_action('superpwa_addon_deactivated_pull_to_refresh', 'superpwa_pull_to_refresh_deactivate_todo');
84
+
85
+ /**
86
+ * Register Pull To Refresh settings
87
+ *
88
+ * @since 1.7
89
+ */
90
+ function superpwa_pull_to_refresh_register_settings()
91
+ {
92
+
93
+ // Register Setting
94
+ register_setting(
95
+ 'superpwa_pull_to_refresh_settings_group', // Group name
96
+ 'superpwa_pull_to_refresh_settings', // Setting name = html form <input> name on settings form
97
+ 'superpwa_pull_to_refresh_validater_sanitizer' // Input validator and sanitizer
98
+ );
99
+
100
+ // Pull To Refresh
101
+ add_settings_section(
102
+ 'superpwa_pull_to_refresh_section', // ID
103
+ __return_false(), // Title
104
+ '', // Callback Function
105
+ 'superpwa_pull_to_refresh_section' // Page slug
106
+ );
107
+
108
+
109
+ // Pull To Refresh
110
+ add_settings_field(
111
+ 'superpwa_pull_to_refresh_source', // ID
112
+ __('Pull To Refresh ', 'super-progressive-web-apps'), // Title
113
+ 'superpwa_pull_to_refresh_enable_cb', // CB
114
+ 'superpwa_pull_to_refresh_section', // Page slug
115
+ 'superpwa_pull_to_refresh_section' // Settings Section ID
116
+ );
117
+
118
+ // Pull message
119
+ add_settings_field(
120
+ 'superpwa_pull_to_refresh_pull_message', // ID
121
+ __('Pull message', 'super-progressive-web-apps'), // Title
122
+ 'superpwa_pull_to_refresh_pull_message_text_cb', // CB
123
+ 'superpwa_pull_to_refresh_section', // Page slug
124
+ 'superpwa_pull_to_refresh_section' // Settings Section ID
125
+ );
126
+
127
+ // Release message
128
+ add_settings_field(
129
+ 'superpwa_pull_to_refresh_release_message', // ID
130
+ __('Release message', 'super-progressive-web-apps'), // Title
131
+ 'superpwa_pull_to_refresh_pull_release_text_cb', // CB
132
+ 'superpwa_pull_to_refresh_section', // Page slug
133
+ 'superpwa_pull_to_refresh_section' // Settings Section ID
134
+ );
135
+
136
+ // Refreshing message
137
+ add_settings_field(
138
+ 'superpwa_pull_to_refresh_refreshing', // ID
139
+ __('Refreshing message', 'super-progressive-web-apps'), // Title
140
+ 'superpwa_pull_to_refresh_refreshing_text_cb', // CB
141
+ 'superpwa_pull_to_refresh_section', // Page slug
142
+ 'superpwa_pull_to_refresh_section' // Settings Section ID
143
+ );
144
+
145
+ // Font size
146
+ add_settings_field(
147
+ 'superpwa_pull_to_refresh_font_size', // ID
148
+ __('Font size', 'super-progressive-web-apps'), // Title
149
+ 'superpwa_pull_to_refresh_font_size_cb', // CB
150
+ 'superpwa_pull_to_refresh_section', // Page slug
151
+ 'superpwa_pull_to_refresh_section' // Settings Section ID
152
+ );
153
+
154
+ // Font Color
155
+ add_settings_field(
156
+ 'superpwa_pull_to_refresh_font_color', // ID
157
+ __('Font Color', 'super-progressive-web-apps'), // Title
158
+ 'superpwa_pull_to_refresh_font_color_cb', // CB
159
+ 'superpwa_pull_to_refresh_section', // Page slug
160
+ 'superpwa_pull_to_refresh_section' // Settings Section ID
161
+ );
162
+ }
163
+ add_action('admin_init', 'superpwa_pull_to_refresh_register_settings');
164
+
165
+ /**
166
+ * Validate and sanitize user input
167
+ *
168
+ * @since 1.7
169
+ */
170
+ function superpwa_pull_to_refresh_validater_sanitizer($settings)
171
+ {
172
+
173
+ // Sanitize and validate campaign source. Campaign source cannot be empty.
174
+ $settings['superpwa_pull_to_refresh_switch'] = sanitize_text_field($settings['superpwa_pull_to_refresh_switch']) == '' ? 'Pull down to refresh' : sanitize_text_field($settings['superpwa_pull_to_refresh_switch']);
175
+
176
+ // Sanitize Pull message
177
+ $settings['superpwa_ptr_text'] = sanitize_text_field($settings['superpwa_ptr_text']) == '' ? '' : sanitize_text_field($settings['superpwa_ptr_text']);
178
+
179
+ // Sanitize Release message
180
+ $settings['superpwa_ptr_release_text'] = sanitize_text_field($settings['superpwa_ptr_release_text']) == '' ? '' : sanitize_text_field($settings['superpwa_ptr_release_text']);
181
+
182
+ // Sanitize Refreshing message
183
+ $settings['superpwa_ptr_refreshing_text'] = sanitize_text_field($settings['superpwa_ptr_refreshing_text']);
184
+
185
+ // Sanitize Font Size
186
+ $settings['superpwa_ptr_font_size'] = sanitize_text_field($settings['superpwa_ptr_font_size']);
187
+
188
+ // Sanitize Font Color
189
+ $settings['superpwa_ptr_font_color'] = sanitize_text_field($settings['superpwa_ptr_font_color']);
190
+
191
+ return $settings;
192
+ }
193
+
194
+ // /**
195
+ // * Callback function for Pull To Refresh section
196
+ // *
197
+ // * @since 1.7
198
+ // */
199
+ // function superpwa_pull_to_refresh_section_cb() {
200
+
201
+ // // Get add-on info
202
+ // $addon_pull_to_refresh = superpwa_get_addons( 'pull_to_refresh' );
203
+
204
+ // // printf( '<p>' . __( 'This add-on automatically adds UTM campaign parameters to the <code>Start Page</code> URL in your <a href="%s" target="_blank">manifest</a>. This will help you identify visitors coming specifically from your app. <a href="%s" target="_blank">Read more</a> about Pull To Refresh.', 'super-progressive-web-apps' ) . '</p>', superpwa_manifest( 'src' ), $addon_pull_to_refresh['link'] . '?utm_source=superpwa-plugin&utm_medium=utm-tracking-settings' );
205
+ // }
206
+
207
+
208
+ /**
209
+ * Campaign Source
210
+ *
211
+ * @since 1.7
212
+ */
213
+ function superpwa_pull_to_refresh_enable_cb()
214
+ {
215
+ // Get Settings
216
+ $settings = superpwa_pull_to_refresh_get_settings(); ?>
217
+ <fieldset>
218
+ <input type="checkbox" name="superpwa_pull_to_refresh_settings[superpwa_pull_to_refresh_switch]" class="regular-text" value="1" <?php if (isset($settings['superpwa_pull_to_refresh_switch'])) { checked('1', $settings['superpwa_pull_to_refresh_switch']); } ?> />
219
+ </fieldset>
220
+ <?php
221
+ }
222
+
223
+ /**
224
+ * Pull message
225
+ *
226
+ * @since 1.7
227
+ */
228
+ function superpwa_pull_to_refresh_pull_message_text_cb()
229
+ {
230
+ // Get Settings
231
+ $settings = superpwa_pull_to_refresh_get_settings(); ?>
232
+ <fieldset>
233
+ <input type="text" name="superpwa_pull_to_refresh_settings[superpwa_ptr_text]" class="regular-text" value="<?php if (isset($settings['superpwa_ptr_text']) && (!empty($settings['superpwa_ptr_text']))) echo esc_attr($settings['superpwa_ptr_text']); ?>" />
234
+ </fieldset>
235
+ <?php
236
+ }
237
+
238
+ /**
239
+ * Release message
240
+ *
241
+ * @since 1.7
242
+ */
243
+ function superpwa_pull_to_refresh_pull_release_text_cb()
244
+ {
245
+ // Get Settings
246
+ $settings = superpwa_pull_to_refresh_get_settings(); ?>
247
+ <fieldset>
248
+ <input type="text" name="superpwa_pull_to_refresh_settings[superpwa_ptr_release_text]" class="regular-text" value="<?php if (isset($settings['superpwa_ptr_release_text']) && (!empty($settings['superpwa_ptr_release_text']))) echo esc_attr($settings['superpwa_ptr_release_text']); ?>" />
249
+ </fieldset>
250
+ <?php
251
+ }
252
+
253
+ /**
254
+ * Refreshing message
255
+ *
256
+ * @since 1.7
257
+ */
258
+ function superpwa_pull_to_refresh_refreshing_text_cb()
259
+ {
260
+ // Get Settings
261
+ $settings = superpwa_pull_to_refresh_get_settings(); ?>
262
+ <fieldset>
263
+ <input type="text" name="superpwa_pull_to_refresh_settings[superpwa_ptr_refreshing_text]" class="regular-text" value="<?php if (isset($settings['superpwa_ptr_refreshing_text']) && (!empty($settings['superpwa_ptr_refreshing_text']))) echo esc_attr($settings['superpwa_ptr_refreshing_text']); ?>" />
264
+ </fieldset>
265
+ <?php
266
+ }
267
+
268
+ /**
269
+ * Font size
270
+ *
271
+ * @since 1.7
272
+ */
273
+ function superpwa_pull_to_refresh_font_size_cb()
274
+ {
275
+ // Get Settings
276
+ $settings = superpwa_pull_to_refresh_get_settings(); ?>
277
+ <fieldset>
278
+ <input type="text" name="superpwa_pull_to_refresh_settings[superpwa_ptr_font_size]" class="regular-text" value="<?php if (isset($settings['superpwa_ptr_font_size']) && (!empty($settings['superpwa_ptr_font_size']))) echo esc_attr($settings['superpwa_ptr_font_size']); ?>" />
279
+ </fieldset>
280
+ <?php
281
+ }
282
+
283
+ /**
284
+ * Font color
285
+ *
286
+ * @since 1.7
287
+ */
288
+
289
+ function superpwa_pull_to_refresh_font_color_cb()
290
+ {
291
+ $settings = superpwa_pull_to_refresh_get_settings();
292
+ ?>
293
+ <fieldset>
294
+ <input type="text" name="superpwa_pull_to_refresh_settings[superpwa_ptr_font_color]" class="superpwa-colorpicker" value="<?php if (isset($settings['superpwa_ptr_font_color']) && (!empty($settings['superpwa_ptr_font_color']))) echo esc_attr($settings['superpwa_ptr_font_color']); ?>" />
295
+ </fieldset>
296
+ <?php
297
+ }
298
+
299
+
300
+ /**
301
+ * Pull To Refresh UI renderer
302
+ *
303
+ * @since 1.7
304
+ */
305
+ function superpwa_pull_to_refresh_interface_render()
306
+ {
307
+ // Authentication
308
+ if (!current_user_can('manage_options')) {
309
+ return;
310
+ }
311
+
312
+ // Handing save settings
313
+ if (isset($_GET['settings-updated'])) {
314
+ // Add settings saved message with the class of "updated"
315
+ add_settings_error('superpwa_settings_group', 'superpwa_pull_to_refresh_settings_saved_message', __('Settings saved.', 'super-progressive-web-apps'), 'updated');
316
+
317
+ // Show Settings Saved Message
318
+ settings_errors('superpwa_settings_group');
319
+ }
320
+ // Get add-on info
321
+ $addon_pull_to_refresh = superpwa_get_addons('pull_to_refresh');
322
+ superpwa_setting_tabs_styles();
323
+ ?>
324
+
325
+ <div class="wrap">
326
+ <h1><?php _e('Pull To Refresh', 'super-progressive-web-apps'); ?>
327
+ <!-- <small>(<a href="<?php //echo esc_url($addon_pull_to_refresh['link']) . '?utm_source=superpwa-plugin&utm_medium=utm-tracking-settings'
328
+ ?>"><?php //echo esc_html__( 'Docs', 'super-progressive-web-apps' );
329
+ ?></a>)</small> -->
330
+ </h1>
331
+
332
+ <?php superpwa_setting_tabs_html(); ?>
333
+
334
+ <form action="options.php" method="post" enctype="multipart/form-data">
335
+ <?php
336
+ // Output nonce, action, and option_page fields for a settings page.
337
+ settings_fields('superpwa_pull_to_refresh_settings_group');
338
+
339
+ // Status
340
+ do_settings_sections('superpwa_pull_to_refresh_section'); // Page slug
341
+
342
+ // Output save settings button
343
+ submit_button(__('Save Settings', 'super-progressive-web-apps'));
344
+ ?>
345
+ </form>
346
+ </div>
347
+ <?php //superpwa_newsletter_form();
348
+ ?>
349
+ <?php
350
+ }
351
+
352
+
353
+ /* add_action("admin_enqueue_scripts", 'superpwa_pull_to_refresh_script_enqueue');
354
+
355
+ function superpwa_pull_to_refresh_script_enqueue($hook){
356
+ if($hook== 'toplevel_page_pwaforwp'){
357
+ //wp_enqueue_script('pwaforwp-ptr-switches',PWAFORWP_PTRFP_PLUGIN_URL . '/assets/admin-pull-to-refresh.js',array( 'jquery', 'pwaforwp-main-js' ),PWAFORWP_PTRFP_VERSION,true);
358
+ // wp_enqueue_script( 'superpwa-make-better-js', SUPERPWA_PATH_SRC . 'admin/make-better-admin.js', array( 'jquery' ), SUPERPWA_VERSION);
359
+
360
+ }
361
+ }
362
+
363
+ */
364
+
365
+ if(!function_exists('superpwa_pull_to_refresh_ptrfp_scripts_load')){
366
+ function superpwa_pull_to_refresh_ptrfp_scripts_load(){
367
+ if(function_exists('superpwa_pull_to_refresh_get_settings')){
368
+ $settings = superpwa_pull_to_refresh_get_settings();
369
+ }else{ $settings = array(); }
370
+ if( isset($settings['superpwa_pull_to_refresh_switch']) && $settings['superpwa_pull_to_refresh_switch'] ==1 ){
371
+ wp_enqueue_script( "superpwa_ptrfp_lib_script", SUPERPWA_PATH_SRC."admin/js/superpwa-ptr-lib.min.js", array('jquery'), SUPERPWA_VERSION, true );
372
+ $ptrArray = array(
373
+ 'instrPullToRefresh'=> ( isset( $settings['superpwa_ptr_text'] )? $settings['superpwa_ptr_text'] : esc_html__("Pull down to refresh", 'pull-to-refresh-for-pwa') ),
374
+ 'instrReleaseToRefresh'=> (isset( $settings['superpwa_ptr_release_text'] )? $settings['superpwa_ptr_release_text'] : esc_html__("Release to refresh", 'pull-to-refresh-for-pwa') ),
375
+ 'instrRefreshing'=>( isset( $settings['superpwa_ptr_refreshing_text'] )? $settings['superpwa_ptr_refreshing_text'] : esc_html__("Refreshing", 'pull-to-refresh-for-pwa') ),
376
+ 'instrptr_font_size'=>( isset( $settings['superpwa_ptr_font_size'] ) && !empty($settings['superpwa_ptr_font_size'])? $settings['superpwa_ptr_font_size'] : "0.85em" ),
377
+ 'instrptr_font_color'=>( isset( $settings['superpwa_ptr_font_color'] ) && !empty($settings['superpwa_ptr_font_color'])? $settings['superpwa_ptr_font_color'] : "rgba(0, 0, 0, 0.3)" ),
378
+ );
379
+ wp_localize_script("superpwa_ptrfp_lib_script", 'superpwa_ptr_obj', $ptrArray);
380
+ /*wp_add_inline_script( "pwaforwp_ptrfp_lib_script", '
381
+ PullToRefresh.init({
382
+ onRefresh: function() { location.reload(true); },
383
+ });', 'after' );*/
384
+
385
+ }
386
+ }
387
+ add_action("wp_enqueue_scripts", 'superpwa_pull_to_refresh_ptrfp_scripts_load');
388
+ }
admin/admin-ui-render-addons.php CHANGED
@@ -45,6 +45,17 @@ function superpwa_get_addons( $slug = false ) {
45
 
46
  // Add-Ons array
47
  $addons = array(
 
 
 
 
 
 
 
 
 
 
 
48
  'utm_tracking' => array(
49
  'name' => __( 'UTM Tracking', 'super-progressive-web-apps' ),
50
  'description' => __( 'Track visits from your app by adding UTM tracking parameters to the Start Page URL.', 'super-progressive-web-apps' ),
45
 
46
  // Add-Ons array
47
  $addons = array(
48
+ 'pull_to_refresh' => array(
49
+ 'name' => __( 'Pull To Refresh', 'super-progressive-web-apps' ),
50
+ 'description' => __( 'Pull To Refresh to refresh your page', 'super-progressive-web-apps' ),
51
+ 'type' => 'bundled',
52
+ 'icon' => 'pull-to-refresh.png',
53
+ 'link' => 'https://superpwa.com/docs/',
54
+ 'admin_link' => admin_url( 'admin.php?page=superpwa-pull-to-refresh' ),
55
+ 'admin_link_text' => __( 'Customize Settings &rarr;', 'super-progressive-web-apps' ),
56
+ 'admin_link_target' => 'admin',
57
+ 'superpwa_min_version' => '1.0',
58
+ ),
59
  'utm_tracking' => array(
60
  'name' => __( 'UTM Tracking', 'super-progressive-web-apps' ),
61
  'description' => __( 'Track visits from your app by adding UTM tracking parameters to the Start Page URL.', 'super-progressive-web-apps' ),
admin/admin-ui-setup.php CHANGED
@@ -43,6 +43,11 @@ function superpwa_add_menu_links() {
43
  add_submenu_page( 'superpwa', __( 'Super Progressive Web Apps', 'super-progressive-web-apps' ), __( 'Apple icons', 'super-progressive-web-apps' ), 'manage_options', 'superpwa-apple-icons', 'superpwa_apple_icons_interface_render', 74 );
44
  }
45
 
 
 
 
 
 
46
  // Caching Strategies sub-menu
47
  if ( superpwa_addons_status( 'caching_strategies' ) == 'active' ){
48
  add_submenu_page( 'superpwa', __( 'Super Progressive Web Apps', 'super-progressive-web-apps' ), __( 'Caching Strategies', 'super-progressive-web-apps' ), 'manage_options', 'superpwa-caching-strategies', 'superpwa_caching_strategies_interface_render', 74 );
43
  add_submenu_page( 'superpwa', __( 'Super Progressive Web Apps', 'super-progressive-web-apps' ), __( 'Apple icons', 'super-progressive-web-apps' ), 'manage_options', 'superpwa-apple-icons', 'superpwa_apple_icons_interface_render', 74 );
44
  }
45
 
46
+ // pull to refresh sub-menu
47
+ if ( superpwa_addons_status( 'pull_to_refresh' ) == 'active' ){
48
+ add_submenu_page( 'superpwa', __( 'Pull To Refresh', 'super-progressive-web-apps' ), __( 'Pull To Refresh', 'super-progressive-web-apps' ), 'manage_options', 'superpwa-pull-to-refresh', 'superpwa_pull_to_refresh_interface_render', 74 );
49
+ }
50
+
51
  // Caching Strategies sub-menu
52
  if ( superpwa_addons_status( 'caching_strategies' ) == 'active' ){
53
  add_submenu_page( 'superpwa', __( 'Super Progressive Web Apps', 'super-progressive-web-apps' ), __( 'Caching Strategies', 'super-progressive-web-apps' ), 'manage_options', 'superpwa-caching-strategies', 'superpwa_caching_strategies_interface_render', 74 );
admin/basic-setup.php CHANGED
@@ -364,13 +364,28 @@ add_action( 'plugins_loaded', 'superpwa_load_plugin_textdomain' );
364
  */
365
  function superpwa_settings_link( $links ) {
366
 
367
- return array_merge(
368
- array(
369
- 'settings' => '<a href="' . admin_url( 'admin.php?page=superpwa' ) . '">' . __( 'Settings', 'super-progressive-web-apps' ) . '</a>',
370
- 'upgrade' => '<a href="' . admin_url( 'admin.php?page=superpwa-upgrade' ) . '">' . __( 'Upgrade to Pro', 'super-progressive-web-apps' ) . '</a>'
371
- ),
372
- $links
373
- );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
374
  }
375
  add_filter( 'plugin_action_links_' . plugin_basename( SUPERPWA_PLUGIN_FILE ), 'superpwa_settings_link' );
376
 
364
  */
365
  function superpwa_settings_link( $links ) {
366
 
367
+ $pro_plugin = 'super-progressive-web-apps-pro/super-progressive-web-apps-pro.php';
368
+ // True means, add-on is installed and active
369
+ if ( is_plugin_active( $pro_plugin ) ) {
370
+ // True means, add-on is installed and active
371
+ return array_merge(
372
+ array(
373
+ 'settings' => '<a href="' . admin_url( 'admin.php?page=superpwa' ) . '">' . __( 'Settings', 'super-progressive-web-apps' ) . '</a>',
374
+ // 'upgrade' => '<a href="' . admin_url( 'admin.php?page=superpwa-upgrade' ) . '">' . __( 'Upgrade to Pro', 'super-progressive-web-apps' ) . '</a>'
375
+ ),
376
+ $links
377
+ );
378
+ }else{
379
+ return array_merge(
380
+ array(
381
+ 'settings' => '<a href="' . admin_url( 'admin.php?page=superpwa' ) . '">' . __( 'Settings', 'super-progressive-web-apps' ) . '</a>',
382
+ 'upgrade' => '<a href="' . admin_url( 'admin.php?page=superpwa-upgrade' ) . '">' . __( 'Upgrade to Pro', 'super-progressive-web-apps' ) . '</a>'
383
+ ),
384
+ $links
385
+ );
386
+
387
+ }
388
+
389
  }
390
  add_filter( 'plugin_action_links_' . plugin_basename( SUPERPWA_PLUGIN_FILE ), 'superpwa_settings_link' );
391
 
admin/img/pull-to-refresh.png ADDED
Binary file
admin/js/superpwa-ptr-lib.min.js ADDED
@@ -0,0 +1,8 @@
 
 
 
 
 
 
 
 
1
+ /*!
2
+ * superpwa_pulltorefreshjs v0.1.19
3
+ */
4
+ !function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):(e=e||self).PullToRefresh=t()}(this,function(){"use strict";var e={pullStartY:null,pullMoveY:null,handlers:[],styleEl:null,events:null,dist:0,state:"pending",timeout:null,distResisted:0,supportsPassive:!1,supportsPointerEvents:!!window.PointerEvent};try{window.addEventListener("test",null,{get passive(){e.supportsPassive=!0}})}catch(e){}var t,n={setupDOM:function(t){if(!t.ptrElement){var n=document.createElement("div");t.mainElement!==document.body?t.mainElement.parentNode.insertBefore(n,t.mainElement):document.body.insertBefore(n,document.body.firstChild),n.classList.add(t.classPrefix+"ptr"),n.innerHTML=t.getMarkup().replace(/__PREFIX__/g,t.classPrefix),t.ptrElement=n,"function"==typeof t.onInit&&t.onInit(t),e.styleEl||(e.styleEl=document.createElement("style"),e.styleEl.setAttribute("id","pull-to-refresh-js-style"),document.head.appendChild(e.styleEl)),e.styleEl.textContent=t.getStyles().replace(/__PREFIX__/g,t.classPrefix).replace(/\s+/g," ")}return t},onReset:function(t){t.ptrElement.classList.remove(t.classPrefix+"refresh"),t.ptrElement.style[t.cssProp]="0px",setTimeout(function(){t.ptrElement&&t.ptrElement.parentNode&&(t.ptrElement.parentNode.removeChild(t.ptrElement),t.ptrElement=null),e.state="pending"},t.refreshTimeout)},update:function(t){var n=t.ptrElement.querySelector("."+t.classPrefix+"icon"),s=t.ptrElement.querySelector("."+t.classPrefix+"text");n&&("refreshing"===e.state?n.innerHTML=t.iconRefreshing:n.innerHTML=t.iconArrow),s&&("releasing"===e.state&&(s.innerHTML=t.instructionsReleaseToRefresh),"pulling"!==e.state&&"pending"!==e.state||(s.innerHTML=t.instructionsPullToRefresh),"refreshing"===e.state&&(s.innerHTML=t.instructionsRefreshing))}},s=function(t){return e.pointerEventsEnabled&&e.supportsPointerEvents?t.screenY:t.touches[0].screenY},r=function(){var r;function i(t){var i=e.handlers.filter(function(e){return e.contains(t.target)})[0];e.enable=!!i,i&&"pending"===e.state&&(r=n.setupDOM(i),i.shouldPullToRefresh()&&(e.pullStartY=s(t)),clearTimeout(e.timeout),n.update(i))}function o(t){r&&r.ptrElement&&e.enable&&(e.pullStartY?e.pullMoveY=s(t):r.shouldPullToRefresh()&&(e.pullStartY=s(t)),"refreshing"!==e.state?("pending"===e.state&&(r.ptrElement.classList.add(r.classPrefix+"pull"),e.state="pulling",n.update(r)),e.pullStartY&&e.pullMoveY&&(e.dist=e.pullMoveY-e.pullStartY),e.distExtra=e.dist-r.distIgnore,e.distExtra>0&&(t.cancelable&&t.preventDefault(),r.ptrElement.style[r.cssProp]=e.distResisted+"px",e.distResisted=r.resistanceFunction(e.distExtra/r.distThreshold)*Math.min(r.distMax,e.distExtra),"pulling"===e.state&&e.distResisted>r.distThreshold&&(r.ptrElement.classList.add(r.classPrefix+"release"),e.state="releasing",n.update(r)),"releasing"===e.state&&e.distResisted<r.distThreshold&&(r.ptrElement.classList.remove(r.classPrefix+"release"),e.state="pulling",n.update(r)))):t.cancelable&&r.shouldPullToRefresh()&&e.pullStartY<e.pullMoveY&&t.preventDefault())}function l(){if(r&&r.ptrElement&&e.enable){if(clearTimeout(t),t=setTimeout(function(){r&&r.ptrElement&&"pending"===e.state&&n.onReset(r)},500),"releasing"===e.state&&e.distResisted>r.distThreshold)e.state="refreshing",r.ptrElement.style[r.cssProp]=r.distReload+"px",r.ptrElement.classList.add(r.classPrefix+"refresh"),e.timeout=setTimeout(function(){var e=r.onRefresh(function(){return n.onReset(r)});e&&"function"==typeof e.then&&e.then(function(){return n.onReset(r)}),e||r.onRefresh.length||n.onReset(r)},r.refreshTimeout);else{if("refreshing"===e.state)return;r.ptrElement.style[r.cssProp]="0px",e.state="pending"}n.update(r),r.ptrElement.classList.remove(r.classPrefix+"release"),r.ptrElement.classList.remove(r.classPrefix+"pull"),e.pullStartY=e.pullMoveY=null,e.dist=e.distResisted=0}}function a(){r&&r.mainElement.classList.toggle(r.classPrefix+"top",r.shouldPullToRefresh())}var d=e.supportsPassive?{passive:e.passive||!1}:void 0;return e.pointerEventsEnabled&&e.supportsPointerEvents?(window.addEventListener("pointerup",l),window.addEventListener("pointerdown",i),window.addEventListener("pointermove",o,d)):(window.addEventListener("touchend",l),window.addEventListener("touchstart",i),window.addEventListener("touchmove",o,d)),window.addEventListener("scroll",a),{onTouchEnd:l,onTouchStart:i,onTouchMove:o,onScroll:a,destroy:function(){e.pointerEventsEnabled&&e.supportsPointerEvents?(window.removeEventListener("pointerdown",i),window.removeEventListener("pointerup",l),window.removeEventListener("pointermove",o,d)):(window.removeEventListener("touchstart",i),window.removeEventListener("touchend",l),window.removeEventListener("touchmove",o,d)),window.removeEventListener("scroll",a)}}},i={distThreshold:60,distMax:80,distReload:50,distIgnore:0,mainElement:"body",triggerElement:"body",ptrElement:".ptr",classPrefix:"ptr--",cssProp:"min-height",iconArrow:"&#8675;",iconRefreshing:"&hellip;",instructionsPullToRefresh:superpwa_ptr_obj.instrPullToRefresh,instructionsReleaseToRefresh:superpwa_ptr_obj.instrReleaseToRefresh,instructionsRefreshing:superpwa_ptr_obj.instrRefreshing,refreshTimeout:500,getMarkup:function(){return'\n<div class="__PREFIX__box">\n <div class="__PREFIX__content">\n <div class="__PREFIX__icon"></div>\n <div class="__PREFIX__text"></div>\n </div>\n</div>\n'},getStyles:function(){return"\n.__PREFIX__ptr {\n box-shadow: inset 0 -3px 5px rgba(0, 0, 0, 0.12);\n pointer-events: none;\n font-size: "+superpwa_ptr_obj.instrptr_font_size+";\n font-weight: bold;\n top: 0;\n height: 0;\n transition: height 0.3s, min-height 0.3s;\n text-align: center;\n width: 100%;\n overflow: hidden;\n display: flex;\n align-items: flex-end;\n align-content: stretch;\n}\n\n.__PREFIX__box {\n padding: 10px;\n flex-basis: 100%;\n}\n\n.__PREFIX__pull {\n transition: none;\n}\n\n.__PREFIX__text {\n margin-top: .33em;\n color: "+superpwa_ptr_obj.instrptr_font_color+";\n}\n\n.__PREFIX__icon {\n color: "+superpwa_ptr_obj.instrptr_font_color+";\n transition: transform .3s;\n}\n\n/*\nWhen at the top of the page, disable vertical overscroll so passive touch\nlisteners can take over.\n*/\n.__PREFIX__top {\n touch-action: pan-x pan-down pinch-zoom;\n}\n\n.__PREFIX__release .__PREFIX__icon {\n transform: rotate(180deg);\n}\n"},onInit:function(){},onRefresh:function(){return location.reload()},resistanceFunction:function(e){return Math.min(1,e/2.5)},shouldPullToRefresh:function(){return!window.scrollY}},o=["mainElement","ptrElement","triggerElement"],l=function(t){var n={};return Object.keys(i).forEach(function(e){n[e]=t[e]||i[e]}),n.refreshTimeout="number"==typeof t.refreshTimeout?t.refreshTimeout:i.refreshTimeout,o.forEach(function(e){"string"==typeof n[e]&&(n[e]=document.querySelector(n[e]))}),e.events||(e.events=r()),n.contains=function(e){return n.triggerElement.contains(e)},n.destroy=function(){clearTimeout(e.timeout);var t=e.handlers.indexOf(n);e.handlers.splice(t,1)},n};return{setPassiveMode:function(t){e.passive=t},setPointerEventsMode:function(t){e.pointerEventsEnabled=t},destroyAll:function(){e.events&&(e.events.destroy(),e.events=null),e.handlers.forEach(function(e){e.destroy()})},init:function(t){void 0===t&&(t={});var n=l(t);return e.handlers.push(n),n},_:{setupHandler:l,setupEvents:r,setupDOM:n.setupDOM,onReset:n.onReset,update:n.update}}});
5
+ //# sourceMappingURL=index.umd.min.js.map
6
+ PullToRefresh.init({
7
+ onRefresh: function() { location.reload(true); },
8
+ });
admin/mb-helper-function.php CHANGED
@@ -87,7 +87,7 @@ function superpwa_send_feedback() {
87
 
88
  }
89
 
90
- $success = wp_mail( 'makebetter@magazine3.in', $subject, $text, $headers );
91
 
92
  die();
93
  }
87
 
88
  }
89
 
90
+ $success = wp_mail( 'team@magazine3.in', $subject, $text, $headers );
91
 
92
  die();
93
  }
loader.php CHANGED
@@ -35,4 +35,5 @@ require_once( SUPERPWA_PATH_ABS . 'public/amphtml.php' );
35
  // Load bundled add-ons
36
  if ( superpwa_addons_status( 'utm_tracking' ) == 'active' ) require_once( SUPERPWA_PATH_ABS . 'addons/utm-tracking.php' );
37
  if ( superpwa_addons_status( 'apple_touch_icons' ) == 'active' ) require_once( SUPERPWA_PATH_ABS . 'addons/apple-touch-icons.php' );
38
- if ( superpwa_addons_status( 'caching_strategies' ) == 'active' ) require_once( SUPERPWA_PATH_ABS . 'addons/caching-strategies.php' );
 
35
  // Load bundled add-ons
36
  if ( superpwa_addons_status( 'utm_tracking' ) == 'active' ) require_once( SUPERPWA_PATH_ABS . 'addons/utm-tracking.php' );
37
  if ( superpwa_addons_status( 'apple_touch_icons' ) == 'active' ) require_once( SUPERPWA_PATH_ABS . 'addons/apple-touch-icons.php' );
38
+ if ( superpwa_addons_status( 'caching_strategies' ) == 'active' ) require_once( SUPERPWA_PATH_ABS . 'addons/caching-strategies.php' );
39
+ if ( superpwa_addons_status( 'pull_to_refresh' ) == 'active' ) require_once( SUPERPWA_PATH_ABS . 'addons/pull-to-refresh.php' );
public/sw.php CHANGED
@@ -259,9 +259,6 @@ self.addEventListener('fetch', function(e) {
259
  return;
260
  <?php } ?>
261
  // For Range Headers
262
- if (e.request.headers.get('range')) {
263
- fetchRangeData(e);
264
- } else {
265
  // For POST requests, do not use the cache. Serve offline page if offline.
266
  if ( e.request.method !== 'GET' ) {
267
  e.respondWith(
@@ -297,7 +294,7 @@ self.addEventListener('fetch', function(e) {
297
  return caches.match(offlinePage);
298
  })
299
  );
300
- }
301
  });
302
 
303
  // Check if current url is in the neverCacheUrls list
259
  return;
260
  <?php } ?>
261
  // For Range Headers
 
 
 
262
  // For POST requests, do not use the cache. Serve offline page if offline.
263
  if ( e.request.method !== 'GET' ) {
264
  e.respondWith(
294
  return caches.match(offlinePage);
295
  })
296
  );
297
+
298
  });
299
 
300
  // Check if current url is in the neverCacheUrls list
readme.txt CHANGED
@@ -186,6 +186,12 @@ Feel free to get in touch if you have any questions.
186
 
187
  == Changelog ==
188
 
 
 
 
 
 
 
189
  = 2.2.5 =
190
  * Date: [21.April.2022](https://superpwa.com/superpwa-2-2-5-release-note/?utm_source=wordpress.org&utm_medium=changelog)
191
  * BugFixed : Add to home screen was not working when theme manifest is active #271
186
 
187
  == Changelog ==
188
 
189
+ = 2.2.6 =
190
+ * Date: [06.July.2022](https://superpwa.com/superpwa-2-2-6-release-note/?utm_source=wordpress.org&utm_medium=changelog)
191
+ * BugFixed : Stop servicework for caching the videos. #279
192
+ * BugFixed : Apple Touch Icons & Splash Screen not fetching Welcome screen image #284
193
+ * Enhancement : Added New Addon Pull To Refresh #285
194
+
195
  = 2.2.5 =
196
  * Date: [21.April.2022](https://superpwa.com/superpwa-2-2-5-release-note/?utm_source=wordpress.org&utm_medium=changelog)
197
  * BugFixed : Add to home screen was not working when theme manifest is active #271
superpwa.php CHANGED
@@ -6,7 +6,7 @@
6
  * Author: SuperPWA
7
  * Author URI: https://profiles.wordpress.org/superpwa/
8
  * Contributors: SuperPWA
9
- * Version: 2.2.5
10
  * Text Domain: super-progressive-web-apps
11
  * Domain Path: /languages
12
  * License: GPL v2 - http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
@@ -43,7 +43,7 @@ if ( ! defined('ABSPATH') ) exit;
43
  * @since 1.0
44
  */
45
  if ( ! defined( 'SUPERPWA_VERSION' ) ) {
46
- define( 'SUPERPWA_VERSION' , '2.2.5' );
47
  }
48
 
49
  /**
6
  * Author: SuperPWA
7
  * Author URI: https://profiles.wordpress.org/superpwa/
8
  * Contributors: SuperPWA
9
+ * Version: 2.2.6
10
  * Text Domain: super-progressive-web-apps
11
  * Domain Path: /languages
12
  * License: GPL v2 - http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
43
  * @since 1.0
44
  */
45
  if ( ! defined( 'SUPERPWA_VERSION' ) ) {
46
+ define( 'SUPERPWA_VERSION' , '2.2.6' );
47
  }
48
 
49
  /**