From afcaa4b48db8f51b037ddd455c5650cbc8c2f8a3 Mon Sep 17 00:00:00 2001 From: westi Date: Sun, 17 May 2009 09:39:32 +0000 Subject: [PATCH] Add an action link to allow for plugins to be deleted individually. Also switch to storing the deletion information and redirecting before displaying. Fixes #9835 props DD32. git-svn-id: http://svn.automattic.com/wordpress/trunk@11371 1a063a9b-81f0-0310-95a4-ce76da25c4cd --- wp-admin/plugins.php | 26 ++++++++++++++++++++------ 1 file changed, 20 insertions(+), 6 deletions(-) diff --git a/wp-admin/plugins.php b/wp-admin/plugins.php index 317632c86f..f386584ae7 100644 --- a/wp-admin/plugins.php +++ b/wp-admin/plugins.php @@ -11,10 +11,8 @@ require_once('admin.php'); if ( isset($_POST['clear-recent-list']) ) $action = 'clear-recent-list'; -elseif ( isset($_GET['action']) ) - $action = $_GET['action']; -elseif ( isset($_POST['action']) ) - $action = $_POST['action']; +elseif ( isset($_REQUEST['action']) ) + $action = $_REQUEST['action']; else $action = false; @@ -31,6 +29,9 @@ if ( $status != $default_status && 'search' != $status ) $page = isset($_REQUEST['paged']) ? $_REQUEST['paged'] : 1; +//Clean up request URI from temporary args for screen options/paging uri's to work as expected. +$_SERVER['REQUEST_URI'] = remove_query_arg(array('error', 'deleted', 'activate', 'activate-multi', 'deactivate', 'deactivate-multi', '_error_nonce'), $_SERVER['REQUEST_URI']); + if ( !empty($action) ) { switch ( $action ) { case 'activate': @@ -163,7 +164,9 @@ if ( !empty($action) ) { } //Endif verify-delete $delete_result = delete_plugins($plugins); - wp_cache_delete('plugins', 'plugins'); + set_transient('plugins_delete_result_'.$user_ID, $delete_result); //Store the result in a cache rather than a URL param due to object type & length + wp_redirect("plugins.php?deleted=true&plugin_status=$status&paged=$page"); + exit; break; case 'clear-recent-list': update_option('recently_activated', array()); @@ -198,7 +201,10 @@ if ( !empty($invalid) ) } ?> -

get_error_message() ); ?>

@@ -285,6 +291,11 @@ if ( isset($_GET['s']) ) { } $plugin_array_name = "${status}_plugins"; +if ( empty($$plugin_array_name) && $status != 'all' ) { + $status = 'all'; + $plugin_array_name = "${status}_plugins"; +} + $plugins = &$$plugin_array_name; //Paging. @@ -362,6 +373,9 @@ function print_plugins_table($plugins, $context = '') { $actions[] = '' . __('View Site') . ''; } + if ( ! $is_active && current_user_can('delete_plugins') ) + $actions[] = '' . __('Delete') . ''; + $actions = apply_filters( 'plugin_action_links', $actions, $plugin_file, $plugin_data, $context ); $actions = apply_filters( "plugin_action_links_$plugin_file", $actions, $plugin_file, $plugin_data, $context ); $action_count = count($actions);