Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
32 changes: 32 additions & 0 deletions assets/js/recommendations/litespeed-cache-browser-cache.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
/* global prplInteractiveTaskFormListener, progressPlanner */

/*
* LiteSpeed Cache: enable browser cache.
*
* Dependencies: progress-planner/recommendations/interactive-task
*/

prplInteractiveTaskFormListener.customSubmit( {
taskId: 'litespeed-cache-browser-cache',
popoverId: 'prpl-popover-litespeed-cache-browser-cache',
callback: () => {
return new Promise( ( resolve, reject ) => {
fetch( progressPlanner.ajaxUrl, {
method: 'POST',
headers: {
'Content-Type': 'application/x-www-form-urlencoded',
},
body: new URLSearchParams( {
action: 'prpl_interactive_task_submit_litespeed-cache-browser-cache',
nonce: progressPlanner.nonce,
} ),
} )
.then( ( response ) => {
resolve( { response, success: true } );
} )
.catch( ( error ) => {
reject( { success: false, error } );
} );
} );
},
} );
32 changes: 32 additions & 0 deletions assets/js/recommendations/litespeed-cache-css-minification.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
/* global prplInteractiveTaskFormListener, progressPlanner */

/*
* LiteSpeed Cache: enable CSS minification.
*
* Dependencies: progress-planner/recommendations/interactive-task
*/

prplInteractiveTaskFormListener.customSubmit( {
taskId: 'litespeed-cache-css-minification',
popoverId: 'prpl-popover-litespeed-cache-css-minification',
callback: () => {
return new Promise( ( resolve, reject ) => {
fetch( progressPlanner.ajaxUrl, {
method: 'POST',
headers: {
'Content-Type': 'application/x-www-form-urlencoded',
},
body: new URLSearchParams( {
action: 'prpl_interactive_task_submit_litespeed-cache-css-minification',
nonce: progressPlanner.nonce,
} ),
} )
.then( ( response ) => {
resolve( { response, success: true } );
} )
.catch( ( error ) => {
reject( { success: false, error } );
} );
} );
},
} );
32 changes: 32 additions & 0 deletions assets/js/recommendations/litespeed-cache-guest-mode.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
/* global prplInteractiveTaskFormListener, progressPlanner */

/*
* LiteSpeed Cache: enable guest mode.
*
* Dependencies: progress-planner/recommendations/interactive-task
*/

prplInteractiveTaskFormListener.customSubmit( {
taskId: 'litespeed-cache-guest-mode',
popoverId: 'prpl-popover-litespeed-cache-guest-mode',
callback: () => {
return new Promise( ( resolve, reject ) => {
fetch( progressPlanner.ajaxUrl, {
method: 'POST',
headers: {
'Content-Type': 'application/x-www-form-urlencoded',
},
body: new URLSearchParams( {
action: 'prpl_interactive_task_submit_litespeed-cache-guest-mode',
nonce: progressPlanner.nonce,
} ),
} )
.then( ( response ) => {
resolve( { response, success: true } );
} )
.catch( ( error ) => {
reject( { success: false, error } );
} );
} );
},
} );
32 changes: 32 additions & 0 deletions assets/js/recommendations/litespeed-cache-image-lazy-load.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
/* global prplInteractiveTaskFormListener, progressPlanner */

/*
* LiteSpeed Cache: enable image lazy loading.
*
* Dependencies: progress-planner/recommendations/interactive-task
*/

prplInteractiveTaskFormListener.customSubmit( {
taskId: 'litespeed-cache-image-lazy-load',
popoverId: 'prpl-popover-litespeed-cache-image-lazy-load',
callback: () => {
return new Promise( ( resolve, reject ) => {
fetch( progressPlanner.ajaxUrl, {
method: 'POST',
headers: {
'Content-Type': 'application/x-www-form-urlencoded',
},
body: new URLSearchParams( {
action: 'prpl_interactive_task_submit_litespeed-cache-image-lazy-load',
nonce: progressPlanner.nonce,
} ),
} )
.then( ( response ) => {
resolve( { response, success: true } );
} )
.catch( ( error ) => {
reject( { success: false, error } );
} );
} );
},
} );
32 changes: 32 additions & 0 deletions assets/js/recommendations/litespeed-cache-js-minification.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
/* global prplInteractiveTaskFormListener, progressPlanner */

/*
* LiteSpeed Cache: enable JS minification.
*
* Dependencies: progress-planner/recommendations/interactive-task
*/

prplInteractiveTaskFormListener.customSubmit( {
taskId: 'litespeed-cache-js-minification',
popoverId: 'prpl-popover-litespeed-cache-js-minification',
callback: () => {
return new Promise( ( resolve, reject ) => {
fetch( progressPlanner.ajaxUrl, {
method: 'POST',
headers: {
'Content-Type': 'application/x-www-form-urlencoded',
},
body: new URLSearchParams( {
action: 'prpl_interactive_task_submit_litespeed-cache-js-minification',
nonce: progressPlanner.nonce,
} ),
} )
.then( ( response ) => {
resolve( { response, success: true } );
} )
.catch( ( error ) => {
reject( { success: false, error } );
} );
} );
},
} );
32 changes: 32 additions & 0 deletions assets/js/recommendations/litespeed-cache-page-cache.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
/* global prplInteractiveTaskFormListener, progressPlanner */

/*
* LiteSpeed Cache: enable page cache.
*
* Dependencies: progress-planner/recommendations/interactive-task
*/

prplInteractiveTaskFormListener.customSubmit( {
taskId: 'litespeed-cache-page-cache',
popoverId: 'prpl-popover-litespeed-cache-page-cache',
callback: () => {
return new Promise( ( resolve, reject ) => {
fetch( progressPlanner.ajaxUrl, {
method: 'POST',
headers: {
'Content-Type': 'application/x-www-form-urlencoded',
},
body: new URLSearchParams( {
action: 'prpl_interactive_task_submit_litespeed-cache-page-cache',
nonce: progressPlanner.nonce,
} ),
} )
.then( ( response ) => {
resolve( { response, success: true } );
} )
.catch( ( error ) => {
reject( { success: false, error } );
} );
} );
},
} );
4 changes: 4 additions & 0 deletions classes/suggested-tasks/class-tasks-manager.php
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@
use Progress_Planner\Suggested_Tasks\Tasks_Interface;
use Progress_Planner\Suggested_Tasks\Providers\Integrations\Yoast\Add_Yoast_Providers;
use Progress_Planner\Suggested_Tasks\Providers\Integrations\AIOSEO\Add_AIOSEO_Providers;
use Progress_Planner\Suggested_Tasks\Providers\Integrations\Litespeed_Cache\Add_Litespeed_Cache_Providers;
use Progress_Planner\Suggested_Tasks\Providers\User as User_Tasks;
use Progress_Planner\Suggested_Tasks\Providers\Email_Sending;
use Progress_Planner\Suggested_Tasks\Providers\Set_Valuable_Post_Types;
Expand Down Expand Up @@ -119,6 +120,9 @@ public function add_plugin_integration() {

// All in One SEO integration.
new Add_AIOSEO_Providers();

// LiteSpeed Cache integration.
new Add_Litespeed_Cache_Providers();
}

/**
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
<?php
/**
* Class to add the LiteSpeed Cache providers.
*
* @package Progress_Planner
*/

namespace Progress_Planner\Suggested_Tasks\Providers\Integrations\Litespeed_Cache;

/**
* Add tasks for LiteSpeed Cache configuration.
*/
class Add_Litespeed_Cache_Providers {

/**
* Providers.
*
* @var \Progress_Planner\Suggested_Tasks\Providers\Integrations\Litespeed_Cache\Litespeed_Cache_Interactive_Provider[]
*/
protected $providers = [];

/**
* Constructor.
*/
public function __construct() {
if ( \defined( 'LSCWP_V' ) ) {
\add_filter( 'progress_planner_suggested_tasks_providers', [ $this, 'add_providers' ], 11, 1 );
}
}

/**
* Add the providers.
*
* @param array $providers The providers.
* @return array
*/
public function add_providers( $providers ) {
$this->providers = [
new Page_Cache(),
new Browser_Cache(),
new Css_Minification(),
new Js_Minification(),
new Image_Lazy_Load(),
new Guest_Mode(),
];

return \array_merge(
$providers,
$this->providers
);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,126 @@
<?php
/**
* Add task for LiteSpeed Cache: enable browser cache.
*
* @package Progress_Planner
*/

namespace Progress_Planner\Suggested_Tasks\Providers\Integrations\Litespeed_Cache;

use Progress_Planner\Suggested_Tasks\Providers\Traits\Task_Action_Builder;
use Progress_Planner\Suggested_Tasks\Providers\Traits\Ajax_Security_Litespeed_Cache;

/**
* Add task for LiteSpeed Cache: enable browser cache.
*/
class Browser_Cache extends Litespeed_Cache_Interactive_Provider {

use Task_Action_Builder;
use Ajax_Security_Litespeed_Cache;

/**
* The provider ID.
*
* @var string
*/
protected const PROVIDER_ID = 'litespeed-cache-browser-cache';

/**
* The popover ID.
*
* @var string
*/
const POPOVER_ID = 'litespeed-cache-browser-cache';

/**
* The external link URL.
*
* @var string
*/
protected const EXTERNAL_LINK_URL = 'https://prpl.fyi/litespeed-cache-browser-cache';

/**
* Initialize the task.
*
* @return void
*/
public function init() {
\add_action( 'wp_ajax_prpl_interactive_task_submit_litespeed-cache-browser-cache', [ $this, 'handle_interactive_task_specific_submit' ] );
}

/**
* Get the task URL.
*
* @return string
*/
protected function get_url() {
return \admin_url( 'admin.php?page=litespeed-cache' );
}

/**
* Get the title.
*
* @return string
*/
protected function get_title() {
return \esc_html__( 'LiteSpeed Cache: enable browser cache', 'progress-planner' );
}

/**
* Determine if the task should be added.
*
* @return bool
*/
public function should_add_task() {
if ( ! \defined( 'LSCWP_V' ) ) {
return false;
}

return ! (bool) $this->get_litespeed_option( 'cache-browser' );
}

/**
* Get the popover instructions.
*
* @return void
*/
public function print_popover_instructions() {
echo '<p>';
\esc_html_e( 'Browser caching tells visitors\' browsers to store static files (images, CSS, JavaScript) locally. When they return to your site, these files load from their device instead of being downloaded again, making repeat visits significantly faster.', 'progress-planner' );
echo '</p>';
}

/**
* Print the popover input field for the form.
*
* @return void
*/
public function print_popover_form_contents() {
$this->print_submit_button( \__( 'Enable browser cache', 'progress-planner' ) );
}

/**
* Handle the interactive task submit.
*
* @return void
*/
public function handle_interactive_task_specific_submit() {
$this->verify_litespeed_cache_ajax_security();

$this->update_litespeed_option( 'cache-browser', 1 );

\wp_send_json_success( [ 'message' => \esc_html__( 'Setting updated.', 'progress-planner' ) ] );
}

/**
* Add task actions specific to this task.
*
* @param array $data The task data.
* @param array $actions The existing actions.
*
* @return array
*/
public function add_task_actions( $data = [], $actions = [] ) {
return $this->add_popover_action( $actions, \__( 'Enable', 'progress-planner' ) );
}
}
Loading
Loading