Add Social category and filter button after Setup
This commit is contained in:
@ -40,87 +40,57 @@ function wp_allstars_get_recommended_plugins() {
|
|||||||
'antispam-bee',
|
'antispam-bee',
|
||||||
'compressx',
|
'compressx',
|
||||||
'fluent-smtp',
|
'fluent-smtp',
|
||||||
'plugin-toggle',
|
'kadence-blocks',
|
||||||
'simple-cloudflare-turnstile'
|
'simple-cloudflare-turnstile'
|
||||||
),
|
),
|
||||||
'advanced' => array(
|
'admin' => array(
|
||||||
'acf-better-search',
|
|
||||||
'admin-bar-dashboard-control',
|
'admin-bar-dashboard-control',
|
||||||
'advanced-custom-fields',
|
|
||||||
'admin-menu-editor',
|
'admin-menu-editor',
|
||||||
'ai-engine',
|
'hide-admin-notices',
|
||||||
|
'mainwp-child',
|
||||||
|
'mainwp-child-reports',
|
||||||
|
'magic-login',
|
||||||
|
'manage-notification-emails',
|
||||||
|
'plugin-toggle'
|
||||||
|
),
|
||||||
|
'cms' => array(
|
||||||
'auto-post-scheduler',
|
'auto-post-scheduler',
|
||||||
'avatar-privacy',
|
'block-options',
|
||||||
'bookmark-card',
|
'bookmark-card',
|
||||||
'browser-shots',
|
'browser-shots',
|
||||||
'bulk-actions-select-all',
|
'bulk-actions-select-all',
|
||||||
'bulk-edit-categories-tags',
|
'bulk-edit-categories-tags',
|
||||||
'bulk-edit-user-profiles-in-spreadsheet',
|
'bulk-edit-user-profiles-in-spreadsheet',
|
||||||
'burst-statistics',
|
|
||||||
'carbon-copy',
|
'carbon-copy',
|
||||||
'code-snippets',
|
'iframe-block',
|
||||||
|
'ics-calendar',
|
||||||
|
'mammoth-docx-converter',
|
||||||
|
'nav-menu-roles',
|
||||||
|
'ninja-tables',
|
||||||
|
'post-draft-preview',
|
||||||
|
'post-type-switcher',
|
||||||
|
'simple-custom-post-order',
|
||||||
|
'simple-icons',
|
||||||
|
'sticky-posts-switch',
|
||||||
|
'term-management-tools',
|
||||||
|
'the-paste',
|
||||||
|
'ultimate-addons-for-gutenberg',
|
||||||
|
'wikipedia-preview',
|
||||||
|
'wp-sheet-editor-bulk-spreadsheet-editor-for-posts-and-pages'
|
||||||
|
),
|
||||||
|
'compliance' => array(
|
||||||
|
'avatar-privacy',
|
||||||
'complianz-gdpr',
|
'complianz-gdpr',
|
||||||
'complianz-terms-conditions',
|
'complianz-terms-conditions',
|
||||||
'disable-wordpress-updates',
|
'really-simple-ssl'
|
||||||
'easy-video-reviews',
|
),
|
||||||
'easy-watermark',
|
'crm' => array(
|
||||||
'block-options',
|
|
||||||
'enable-media-replace',
|
|
||||||
'favorites',
|
|
||||||
'fluent-boards',
|
'fluent-boards',
|
||||||
'fluent-booking',
|
'fluent-booking',
|
||||||
'fluent-crm',
|
'fluent-crm',
|
||||||
'fluentform',
|
'fluentform',
|
||||||
'fluentforms-pdf',
|
'fluentforms-pdf',
|
||||||
'fluent-support',
|
'fluent-support'
|
||||||
'flying-analytics',
|
|
||||||
'flying-pages',
|
|
||||||
'flying-scripts',
|
|
||||||
'freesoul-deactivate-plugins',
|
|
||||||
'hide-admin-notices',
|
|
||||||
'hreflang-manager-lite',
|
|
||||||
'ics-calendar',
|
|
||||||
'iframe-block',
|
|
||||||
'image-copytrack',
|
|
||||||
'imsanity',
|
|
||||||
'index-wp-mysql-for-speed',
|
|
||||||
'kadence-blocks',
|
|
||||||
'litespeed-cache',
|
|
||||||
'magic-login',
|
|
||||||
'mainwp-child',
|
|
||||||
'mainwp-child-reports',
|
|
||||||
'mammoth-docx-converter',
|
|
||||||
'manage-notification-emails',
|
|
||||||
'media-file-renamer',
|
|
||||||
'nav-menu-roles',
|
|
||||||
'ninja-tables',
|
|
||||||
'performant-translations',
|
|
||||||
'simple-icons',
|
|
||||||
'post-draft-preview',
|
|
||||||
'post-type-switcher',
|
|
||||||
'pretty-link',
|
|
||||||
'seo-by-rank-math',
|
|
||||||
'really-simple-ssl',
|
|
||||||
'remove-cpt-base',
|
|
||||||
'safe-svg',
|
|
||||||
'simple-custom-post-order',
|
|
||||||
'remove-old-slugspermalinks',
|
|
||||||
'social-engine',
|
|
||||||
'kadence-starter-templates',
|
|
||||||
'ultimate-addons-for-gutenberg',
|
|
||||||
'sticky-posts-switch',
|
|
||||||
'syndication-links',
|
|
||||||
'term-management-tools',
|
|
||||||
'the-paste',
|
|
||||||
'ultimate-410',
|
|
||||||
'webmention',
|
|
||||||
'wp-widget-disable',
|
|
||||||
'wikipedia-preview',
|
|
||||||
'wordpress-importer',
|
|
||||||
'wp-social-reviews',
|
|
||||||
'wp-optimize',
|
|
||||||
'wp-sheet-editor-bulk-spreadsheet-editor-for-posts-and-pages',
|
|
||||||
'yellow-pencil-visual-theme-customizer'
|
|
||||||
),
|
),
|
||||||
'ecommerce' => array(
|
'ecommerce' => array(
|
||||||
'woocommerce',
|
'woocommerce',
|
||||||
@ -134,6 +104,57 @@ function wp_allstars_get_recommended_plugins() {
|
|||||||
'lms' => array(
|
'lms' => array(
|
||||||
'tutor'
|
'tutor'
|
||||||
),
|
),
|
||||||
|
'media' => array(
|
||||||
|
'easy-watermark',
|
||||||
|
'enable-media-replace',
|
||||||
|
'image-copytrack',
|
||||||
|
'imsanity',
|
||||||
|
'media-file-renamer',
|
||||||
|
'safe-svg'
|
||||||
|
),
|
||||||
|
'seo' => array(
|
||||||
|
'burst-statistics',
|
||||||
|
'pretty-link',
|
||||||
|
'seo-by-rank-math',
|
||||||
|
'syndication-links',
|
||||||
|
'ultimate-410',
|
||||||
|
'webmention'
|
||||||
|
),
|
||||||
|
'setup' => array(
|
||||||
|
'kadence-starter-templates',
|
||||||
|
'wordpress-importer'
|
||||||
|
),
|
||||||
|
'social' => array(),
|
||||||
|
'speed' => array(
|
||||||
|
'disable-wordpress-updates',
|
||||||
|
'flying-analytics',
|
||||||
|
'flying-pages',
|
||||||
|
'flying-scripts',
|
||||||
|
'freesoul-deactivate-plugins',
|
||||||
|
'index-wp-mysql-for-speed',
|
||||||
|
'litespeed-cache',
|
||||||
|
'performant-translations',
|
||||||
|
'wp-optimize',
|
||||||
|
'wp-widget-disable'
|
||||||
|
),
|
||||||
|
'translation' => array(
|
||||||
|
'hreflang-manager-lite',
|
||||||
|
'performant-translations',
|
||||||
|
'translatepress-multilingual'
|
||||||
|
),
|
||||||
|
'advanced' => array(
|
||||||
|
'acf-better-search',
|
||||||
|
'advanced-custom-fields',
|
||||||
|
'ai-engine',
|
||||||
|
'code-snippets',
|
||||||
|
'easy-video-reviews',
|
||||||
|
'favorites',
|
||||||
|
'remove-cpt-base',
|
||||||
|
'remove-old-slugspermalinks',
|
||||||
|
'social-engine',
|
||||||
|
'wp-social-reviews',
|
||||||
|
'yellow-pencil-visual-theme-customizer'
|
||||||
|
),
|
||||||
'debug' => array(
|
'debug' => array(
|
||||||
'debug-log-manager',
|
'debug-log-manager',
|
||||||
'gotmls',
|
'gotmls',
|
||||||
@ -172,8 +193,6 @@ function wp_allstars_ajax_get_plugins() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
$category = isset($_GET['category']) ? sanitize_key($_GET['category']) : 'minimal';
|
$category = isset($_GET['category']) ? sanitize_key($_GET['category']) : 'minimal';
|
||||||
$batch_size = isset($_GET['batch_size']) ? intval($_GET['batch_size']) : 5;
|
|
||||||
$offset = isset($_GET['offset']) ? intval($_GET['offset']) : 0;
|
|
||||||
|
|
||||||
require_once ABSPATH . 'wp-admin/includes/plugin-install.php';
|
require_once ABSPATH . 'wp-admin/includes/plugin-install.php';
|
||||||
|
|
||||||
@ -183,17 +202,46 @@ function wp_allstars_ajax_get_plugins() {
|
|||||||
wp_send_json_error('Invalid category: ' . $category);
|
wp_send_json_error('Invalid category: ' . $category);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Get the total number of plugins for this category
|
// Try to get cached data first
|
||||||
$total_plugins = count($recommended_plugins[$category]);
|
$cached_data = wp_allstars_get_cached_plugins($category);
|
||||||
|
if ($cached_data !== false) {
|
||||||
|
error_log('Using cached data for category: ' . $category);
|
||||||
|
// Setup the list table with cached data
|
||||||
|
$GLOBALS['tab'] = 'plugin-install';
|
||||||
|
$_REQUEST['tab'] = 'plugin-install';
|
||||||
|
$_REQUEST['type'] = 'plugin-install';
|
||||||
|
set_current_screen('plugin-install');
|
||||||
|
|
||||||
// Get the current batch of plugins
|
$wp_list_table = _get_list_table('WP_Plugin_Install_List_Table', array(
|
||||||
$current_batch = array_slice($recommended_plugins[$category], $offset, $batch_size);
|
'screen' => 'plugin-install'
|
||||||
|
));
|
||||||
|
|
||||||
|
// Override the items with our cached data
|
||||||
|
$wp_list_table->items = $cached_data->plugins;
|
||||||
|
$wp_list_table->set_pagination_args(array(
|
||||||
|
'total_items' => count($cached_data->plugins),
|
||||||
|
'per_page' => count($cached_data->plugins),
|
||||||
|
));
|
||||||
|
|
||||||
|
ob_start();
|
||||||
|
$wp_list_table->display();
|
||||||
|
$html = ob_get_clean();
|
||||||
|
|
||||||
|
wp_send_json_success($html);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
error_log('Fetching fresh data for category: ' . $category);
|
||||||
|
error_log('Plugins to fetch: ' . implode(', ', $recommended_plugins[$category]));
|
||||||
|
|
||||||
|
// If no cache, get fresh data
|
||||||
try {
|
try {
|
||||||
$plugins = array();
|
$plugins = array();
|
||||||
|
|
||||||
foreach ($current_batch as $slug) {
|
// Only fetch plugins that are in our recommended list for this category
|
||||||
|
foreach ($recommended_plugins[$category] as $slug) {
|
||||||
try {
|
try {
|
||||||
|
error_log('Fetching plugin data for: ' . $slug);
|
||||||
$plugin_data = plugins_api('plugin_information', array(
|
$plugin_data = plugins_api('plugin_information', array(
|
||||||
'slug' => $slug,
|
'slug' => $slug,
|
||||||
'fields' => array(
|
'fields' => array(
|
||||||
@ -223,6 +271,7 @@ function wp_allstars_ajax_get_plugins() {
|
|||||||
error_log('Error fetching plugin data for ' . $slug . ': ' . $plugin_data->get_error_message());
|
error_log('Error fetching plugin data for ' . $slug . ': ' . $plugin_data->get_error_message());
|
||||||
} else {
|
} else {
|
||||||
$plugins[] = $plugin_data;
|
$plugins[] = $plugin_data;
|
||||||
|
error_log('Successfully fetched data for: ' . $slug);
|
||||||
}
|
}
|
||||||
} catch (Exception $e) {
|
} catch (Exception $e) {
|
||||||
error_log('Exception fetching plugin data for ' . $slug . ': ' . $e->getMessage());
|
error_log('Exception fetching plugin data for ' . $slug . ': ' . $e->getMessage());
|
||||||
@ -230,6 +279,21 @@ function wp_allstars_ajax_get_plugins() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
error_log('Total plugins fetched: ' . count($plugins));
|
||||||
|
|
||||||
|
// Create response object
|
||||||
|
$res = (object) array(
|
||||||
|
'info' => array(
|
||||||
|
'page' => 1,
|
||||||
|
'pages' => 1,
|
||||||
|
'results' => count($plugins),
|
||||||
|
),
|
||||||
|
'plugins' => $plugins
|
||||||
|
);
|
||||||
|
|
||||||
|
// Cache the results
|
||||||
|
wp_allstars_set_cached_plugins($category, $res);
|
||||||
|
|
||||||
// Setup the list table
|
// Setup the list table
|
||||||
$GLOBALS['tab'] = 'plugin-install';
|
$GLOBALS['tab'] = 'plugin-install';
|
||||||
$_REQUEST['tab'] = 'plugin-install';
|
$_REQUEST['tab'] = 'plugin-install';
|
||||||
@ -251,12 +315,7 @@ function wp_allstars_ajax_get_plugins() {
|
|||||||
$wp_list_table->display();
|
$wp_list_table->display();
|
||||||
$html = ob_get_clean();
|
$html = ob_get_clean();
|
||||||
|
|
||||||
wp_send_json_success(array(
|
wp_send_json_success($html);
|
||||||
'html' => $html,
|
|
||||||
'total' => $total_plugins,
|
|
||||||
'remaining' => $total_plugins - ($offset + count($plugins)),
|
|
||||||
'offset' => $offset + count($plugins)
|
|
||||||
));
|
|
||||||
|
|
||||||
} catch (Exception $e) {
|
} catch (Exception $e) {
|
||||||
error_log('Failed to fetch plugin data: ' . $e->getMessage());
|
error_log('Failed to fetch plugin data: ' . $e->getMessage());
|
||||||
@ -801,9 +860,21 @@ function wp_allstars_settings_page() {
|
|||||||
class="button <?php echo $active_category == 'minimal' ? 'button-primary' : ''; ?>">
|
class="button <?php echo $active_category == 'minimal' ? 'button-primary' : ''; ?>">
|
||||||
<?php esc_html_e('Minimal', 'wp-allstars'); ?>
|
<?php esc_html_e('Minimal', 'wp-allstars'); ?>
|
||||||
</a>
|
</a>
|
||||||
<a href="?page=wp-allstars&tab=recommended&category=advanced"
|
<a href="?page=wp-allstars&tab=recommended&category=admin"
|
||||||
class="button <?php echo $active_category == 'advanced' ? 'button-primary' : ''; ?>">
|
class="button <?php echo $active_category == 'admin' ? 'button-primary' : ''; ?>">
|
||||||
<?php esc_html_e('Advanced', 'wp-allstars'); ?>
|
<?php esc_html_e('Admin', 'wp-allstars'); ?>
|
||||||
|
</a>
|
||||||
|
<a href="?page=wp-allstars&tab=recommended&category=cms"
|
||||||
|
class="button <?php echo $active_category == 'cms' ? 'button-primary' : ''; ?>">
|
||||||
|
<?php esc_html_e('CMS', 'wp-allstars'); ?>
|
||||||
|
</a>
|
||||||
|
<a href="?page=wp-allstars&tab=recommended&category=compliance"
|
||||||
|
class="button <?php echo $active_category == 'compliance' ? 'button-primary' : ''; ?>">
|
||||||
|
<?php esc_html_e('Compliance', 'wp-allstars'); ?>
|
||||||
|
</a>
|
||||||
|
<a href="?page=wp-allstars&tab=recommended&category=crm"
|
||||||
|
class="button <?php echo $active_category == 'crm' ? 'button-primary' : ''; ?>">
|
||||||
|
<?php esc_html_e('CRM', 'wp-allstars'); ?>
|
||||||
</a>
|
</a>
|
||||||
<a href="?page=wp-allstars&tab=recommended&category=ecommerce"
|
<a href="?page=wp-allstars&tab=recommended&category=ecommerce"
|
||||||
class="button <?php echo $active_category == 'ecommerce' ? 'button-primary' : ''; ?>">
|
class="button <?php echo $active_category == 'ecommerce' ? 'button-primary' : ''; ?>">
|
||||||
@ -813,6 +884,34 @@ function wp_allstars_settings_page() {
|
|||||||
class="button <?php echo $active_category == 'lms' ? 'button-primary' : ''; ?>">
|
class="button <?php echo $active_category == 'lms' ? 'button-primary' : ''; ?>">
|
||||||
<?php esc_html_e('LMS', 'wp-allstars'); ?>
|
<?php esc_html_e('LMS', 'wp-allstars'); ?>
|
||||||
</a>
|
</a>
|
||||||
|
<a href="?page=wp-allstars&tab=recommended&category=media"
|
||||||
|
class="button <?php echo $active_category == 'media' ? 'button-primary' : ''; ?>">
|
||||||
|
<?php esc_html_e('Media', 'wp-allstars'); ?>
|
||||||
|
</a>
|
||||||
|
<a href="?page=wp-allstars&tab=recommended&category=seo"
|
||||||
|
class="button <?php echo $active_category == 'seo' ? 'button-primary' : ''; ?>">
|
||||||
|
<?php esc_html_e('SEO', 'wp-allstars'); ?>
|
||||||
|
</a>
|
||||||
|
<a href="?page=wp-allstars&tab=recommended&category=setup"
|
||||||
|
class="button <?php echo $active_category == 'setup' ? 'button-primary' : ''; ?>">
|
||||||
|
<?php esc_html_e('Setup', 'wp-allstars'); ?>
|
||||||
|
</a>
|
||||||
|
<a href="?page=wp-allstars&tab=recommended&category=social"
|
||||||
|
class="button <?php echo $active_category == 'social' ? 'button-primary' : ''; ?>">
|
||||||
|
<?php esc_html_e('Social', 'wp-allstars'); ?>
|
||||||
|
</a>
|
||||||
|
<a href="?page=wp-allstars&tab=recommended&category=speed"
|
||||||
|
class="button <?php echo $active_category == 'speed' ? 'button-primary' : ''; ?>">
|
||||||
|
<?php esc_html_e('Speed', 'wp-allstars'); ?>
|
||||||
|
</a>
|
||||||
|
<a href="?page=wp-allstars&tab=recommended&category=translation"
|
||||||
|
class="button <?php echo $active_category == 'translation' ? 'button-primary' : ''; ?>">
|
||||||
|
<?php esc_html_e('Translation', 'wp-allstars'); ?>
|
||||||
|
</a>
|
||||||
|
<a href="?page=wp-allstars&tab=recommended&category=advanced"
|
||||||
|
class="button <?php echo $active_category == 'advanced' ? 'button-primary' : ''; ?>">
|
||||||
|
<?php esc_html_e('Advanced', 'wp-allstars'); ?>
|
||||||
|
</a>
|
||||||
<a href="?page=wp-allstars&tab=recommended&category=debug"
|
<a href="?page=wp-allstars&tab=recommended&category=debug"
|
||||||
class="button <?php echo $active_category == 'debug' ? 'button-primary' : ''; ?>">
|
class="button <?php echo $active_category == 'debug' ? 'button-primary' : ''; ?>">
|
||||||
<?php esc_html_e('Debug', 'wp-allstars'); ?>
|
<?php esc_html_e('Debug', 'wp-allstars'); ?>
|
||||||
@ -826,52 +925,15 @@ function wp_allstars_settings_page() {
|
|||||||
<div id="wpa-plugin-list"></div>
|
<div id="wpa-plugin-list"></div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<style>
|
|
||||||
.plugin-card {
|
|
||||||
opacity: 0;
|
|
||||||
transform: translateY(20px);
|
|
||||||
animation: fadeInUp 0.3s ease forwards;
|
|
||||||
}
|
|
||||||
@keyframes fadeInUp {
|
|
||||||
to {
|
|
||||||
opacity: 1;
|
|
||||||
transform: translateY(0);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
.wpa-loading-overlay {
|
|
||||||
position: absolute;
|
|
||||||
left: 0;
|
|
||||||
right: 0;
|
|
||||||
top: 0;
|
|
||||||
bottom: 0;
|
|
||||||
background: rgba(255, 255, 255, 0.8);
|
|
||||||
display: flex;
|
|
||||||
align-items: center;
|
|
||||||
justify-content: center;
|
|
||||||
z-index: 1;
|
|
||||||
}
|
|
||||||
.wpa-loading-overlay .spinner {
|
|
||||||
float: none;
|
|
||||||
visibility: visible;
|
|
||||||
}
|
|
||||||
/* Hide duplicate plugin counts */
|
|
||||||
.plugin-install-php .subsubsub {
|
|
||||||
display: none;
|
|
||||||
}
|
|
||||||
</style>
|
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
jQuery(document).ready(function($) {
|
jQuery(document).ready(function($) {
|
||||||
|
var loadingStartTime;
|
||||||
var currentRequest = null;
|
var currentRequest = null;
|
||||||
var isLoading = false;
|
|
||||||
var currentCategory = '<?php echo esc_js($active_category); ?>';
|
|
||||||
|
|
||||||
function loadPlugins(category) {
|
function loadPlugins(category) {
|
||||||
if (isLoading) return;
|
|
||||||
isLoading = true;
|
|
||||||
|
|
||||||
// Show loading overlay
|
// Show loading overlay
|
||||||
$('.wpa-loading-overlay').fadeIn();
|
$('.wpa-loading-overlay').fadeIn();
|
||||||
|
loadingStartTime = Date.now();
|
||||||
|
|
||||||
// Cancel previous request if it exists
|
// Cancel previous request if it exists
|
||||||
if (currentRequest) {
|
if (currentRequest) {
|
||||||
@ -886,47 +948,54 @@ function wp_allstars_settings_page() {
|
|||||||
category: category || 'minimal',
|
category: category || 'minimal',
|
||||||
_ajax_nonce: '<?php echo wp_create_nonce("updates"); ?>'
|
_ajax_nonce: '<?php echo wp_create_nonce("updates"); ?>'
|
||||||
},
|
},
|
||||||
|
beforeSend: function() {
|
||||||
|
if (currentRequest) {
|
||||||
|
currentRequest.abort();
|
||||||
|
}
|
||||||
|
},
|
||||||
success: function(response) {
|
success: function(response) {
|
||||||
if (response.success) {
|
if (response.success) {
|
||||||
// Clear existing content
|
ensureMinLoadingTime(function() {
|
||||||
$('#wpa-plugin-list').empty();
|
$('#wpa-plugin-list').html(response.data);
|
||||||
|
|
||||||
// Append new content with staggered animation
|
|
||||||
var $content = $(response.data.html);
|
|
||||||
|
|
||||||
// Remove duplicate counts from new content
|
|
||||||
$content.find('.subsubsub').remove();
|
|
||||||
|
|
||||||
// Add animation delay to new cards
|
|
||||||
$content.find('.plugin-card').each(function(index) {
|
|
||||||
$(this).css('animation-delay', (index * 0.1) + 's');
|
|
||||||
});
|
|
||||||
|
|
||||||
$('#wpa-plugin-list').append($content);
|
|
||||||
$('.wpa-loading-overlay').fadeOut();
|
$('.wpa-loading-overlay').fadeOut();
|
||||||
|
});
|
||||||
} else {
|
} else {
|
||||||
console.error('Server returned error:', response);
|
console.error('Server returned error:', response);
|
||||||
$('.wpa-loading-overlay').fadeOut();
|
$('.wpa-loading-overlay').fadeOut();
|
||||||
|
$('#wpa-plugin-list').html('<div class="notice notice-error"><p>Failed to load plugins: ' + (response.data || 'Unknown error') + '</p></div>');
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
error: function(xhr, status, error) {
|
error: function(xhr, status, error) {
|
||||||
console.error('Failed to load plugins:', {xhr: xhr, status: status, error: error});
|
console.error('Failed to load plugins:', {xhr: xhr, status: status, error: error});
|
||||||
$('.wpa-loading-overlay').fadeOut();
|
$('.wpa-loading-overlay').fadeOut();
|
||||||
},
|
$('#wpa-plugin-list').html('<div class="notice notice-error"><p>Failed to load plugins. Please try again. Error: ' + error + '</p></div>');
|
||||||
complete: function() {
|
|
||||||
isLoading = false;
|
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
// Load initial plugins
|
// Function to ensure minimum loading time
|
||||||
|
function ensureMinLoadingTime(callback) {
|
||||||
|
var currentTime = Date.now();
|
||||||
|
var elapsed = currentTime - loadingStartTime;
|
||||||
|
var minLoadingTime = 500;
|
||||||
|
|
||||||
|
if (elapsed < minLoadingTime) {
|
||||||
|
setTimeout(callback, minLoadingTime - elapsed);
|
||||||
|
} else {
|
||||||
|
callback();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Load plugins on page load with current category from URL
|
||||||
|
var urlParams = new URLSearchParams(window.location.search);
|
||||||
|
var currentCategory = urlParams.get('category') || 'minimal';
|
||||||
loadPlugins(currentCategory);
|
loadPlugins(currentCategory);
|
||||||
|
|
||||||
// Handle category filter clicks
|
// Handle category filter clicks
|
||||||
$('.wpa-plugin-filters a').on('click', function(e) {
|
$('.wpa-plugin-filters a').on('click', function(e) {
|
||||||
e.preventDefault();
|
e.preventDefault();
|
||||||
var category = new URLSearchParams($(this).attr('href').split('?')[1]).get('category');
|
var category = new URLSearchParams($(this).attr('href').split('?')[1]).get('category');
|
||||||
currentCategory = category;
|
loadPlugins(category);
|
||||||
|
|
||||||
// Update URL without page reload
|
// Update URL without page reload
|
||||||
var newUrl = $(this).attr('href');
|
var newUrl = $(this).attr('href');
|
||||||
@ -935,9 +1004,6 @@ function wp_allstars_settings_page() {
|
|||||||
// Update active state
|
// Update active state
|
||||||
$('.wpa-plugin-filters a').removeClass('button-primary');
|
$('.wpa-plugin-filters a').removeClass('button-primary');
|
||||||
$(this).addClass('button-primary');
|
$(this).addClass('button-primary');
|
||||||
|
|
||||||
// Load new category
|
|
||||||
loadPlugins(category);
|
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
</script>
|
</script>
|
||||||
|
Reference in New Issue
Block a user