require_once( dirname( __FILE__ ) . '/admin.php' );
if ( ! current_user_can('activate_plugins') )
- wp_die( __( 'You do not have sufficient permissions to manage plugins for this site.' ) );
+ wp_die( __( 'Sorry, you are not allowed to manage plugins for this site.' ) );
$wp_list_table = _get_list_table('WP_Plugins_List_Table');
$pagenum = $wp_list_table->get_pagenum();
$action = $wp_list_table->current_action();
$plugin = isset($_REQUEST['plugin']) ? $_REQUEST['plugin'] : '';
-$s = isset($_REQUEST['s']) ? urlencode($_REQUEST['s']) : '';
+$s = isset($_REQUEST['s']) ? urlencode( wp_unslash( $_REQUEST['s'] ) ) : '';
// 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']);
switch ( $action ) {
case 'activate':
if ( ! current_user_can('activate_plugins') )
- wp_die(__('You do not have sufficient permissions to activate plugins for this site.'));
+ wp_die(__('Sorry, you are not allowed to activate plugins for this site.'));
if ( is_multisite() && ! is_network_admin() && is_network_only_plugin( $plugin ) ) {
wp_redirect( self_admin_url("plugins.php?plugin_status=$status&paged=$page&s=$s") );
case 'activate-selected':
if ( ! current_user_can('activate_plugins') )
- wp_die(__('You do not have sufficient permissions to activate plugins for this site.'));
+ wp_die(__('Sorry, you are not allowed to activate plugins for this site.'));
check_admin_referer('bulk-plugins');
case 'error_scrape':
if ( ! current_user_can('activate_plugins') )
- wp_die(__('You do not have sufficient permissions to activate plugins for this site.'));
+ wp_die(__('Sorry, you are not allowed to activate plugins for this site.'));
check_admin_referer('plugin-activation-error_' . $plugin);
case 'deactivate':
if ( ! current_user_can('activate_plugins') )
- wp_die(__('You do not have sufficient permissions to deactivate plugins for this site.'));
+ wp_die(__('Sorry, you are not allowed to deactivate plugins for this site.'));
check_admin_referer('deactivate-plugin_' . $plugin);
case 'deactivate-selected':
if ( ! current_user_can('activate_plugins') )
- wp_die(__('You do not have sufficient permissions to deactivate plugins for this site.'));
+ wp_die(__('Sorry, you are not allowed to deactivate plugins for this site.'));
check_admin_referer('bulk-plugins');
case 'delete-selected':
if ( ! current_user_can('delete_plugins') ) {
- wp_die(__('You do not have sufficient permissions to delete plugins for this site.'));
+ wp_die(__('Sorry, you are not allowed to delete plugins for this site.'));
}
check_admin_referer('bulk-plugins');
?>
<div class="wrap">
<?php
- $files_to_delete = $plugin_info = array();
+ $plugin_info = array();
$have_non_network_plugins = false;
- $plugin_translations = wp_get_installed_translations( 'plugins' );
foreach ( (array) $plugins as $plugin ) {
$plugin_slug = dirname( $plugin );
if ( '.' == $plugin_slug ) {
- $files_to_delete[] = WP_PLUGIN_DIR . '/' . $plugin;
if ( $data = get_plugin_data( WP_PLUGIN_DIR . '/' . $plugin ) ) {
$plugin_info[ $plugin ] = $data;
$plugin_info[ $plugin ]['is_uninstallable'] = is_uninstallable_plugin( $plugin );
}
}
} else {
- // Locate all the files in that folder.
- $files = list_files( WP_PLUGIN_DIR . '/' . $plugin_slug );
- if ( $files ) {
- $files_to_delete = array_merge( $files_to_delete, $files );
- }
-
// Get plugins list from that folder.
if ( $folder_plugins = get_plugins( '/' . $plugin_slug ) ) {
foreach ( $folder_plugins as $plugin_file => $data ) {
}
}
}
-
- // Add translation files.
- if ( ! empty( $plugin_translations[ $plugin_slug ] ) ) {
- $translations = $plugin_translations[ $plugin_slug ];
-
- foreach ( $translations as $translation => $data ) {
- $files_to_delete[] = $plugin_slug . '-' . $translation . '.po';
- $files_to_delete[] = $plugin_slug . '-' . $translation . '.mo';
- }
- }
}
}
$plugins_to_delete = count( $plugin_info );
foreach ( $plugin_info as $plugin ) {
if ( $plugin['is_uninstallable'] ) {
/* translators: 1: plugin name, 2: plugin author */
- echo '<li>', sprintf( __( '<strong>%1$s</strong> by <em>%2$s</em> (will also <strong>delete its data</strong>)' ), $plugin['Name'], $plugin['AuthorName'] ), '</li>';
+ echo '<li>', sprintf( __( '%1$s by %2$s (will also <strong>delete its data</strong>)' ), '<strong>' . $plugin['Name'] . '</strong>', '<em>' . $plugin['AuthorName'] . '</em>' ), '</li>';
$data_to_delete = true;
} else {
/* translators: 1: plugin name, 2: plugin author */
- echo '<li>', sprintf( __('<strong>%1$s</strong> by <em>%2$s</em>' ), $plugin['Name'], $plugin['AuthorName'] ), '</li>';
+ echo '<li>', sprintf( _x('%1$s by %2$s', 'plugin' ), '<strong>' . $plugin['Name'] . '</strong>', '<em>' . $plugin['AuthorName'] ) . '</em>', '</li>';
}
}
?>
}
?>
<?php wp_nonce_field('bulk-plugins') ?>
- <?php submit_button( $data_to_delete ? __( 'Yes, delete these files and data' ) : __( 'Yes, delete these files' ), 'button', 'submit', false ); ?>
+ <?php submit_button( $data_to_delete ? __( 'Yes, delete these files and data' ) : __( 'Yes, delete these files' ), '', 'submit', false ); ?>
</form>
<?php
$referer = wp_get_referer();
?>
<form method="post" action="<?php echo $referer ? esc_url( $referer ) : ''; ?>" style="display:inline;">
- <?php submit_button( __( 'No, return me to the plugin list' ), 'button', 'submit', false ); ?>
+ <?php submit_button( __( 'No, return me to the plugin list' ), '', 'submit', false ); ?>
</form>
-
- <p><a href="#" onclick="jQuery('#files-list').toggle(); return false;"><?php _e('Click to view entire list of files which will be deleted'); ?></a></p>
- <div id="files-list" style="display:none;">
- <ul class="code">
- <?php
- foreach ( (array) $files_to_delete as $file ) {
- echo '<li>' . esc_html( str_replace( WP_PLUGIN_DIR, '', $file ) ) . '</li>';
- }
- ?>
- </ul>
- </div>
</div>
<?php
require_once(ABSPATH . 'wp-admin/admin-footer.php');
update_site_option( 'recently_activated', array() );
}
break;
+
+ default:
+ if ( isset( $_POST['checked'] ) ) {
+ check_admin_referer('bulk-plugins');
+ $plugins = isset( $_POST['checked'] ) ? (array) $_POST['checked'] : array();
+ $sendback = wp_get_referer();
+
+ /** This action is documented in wp-admin/edit-comments.php */
+ $sendback = apply_filters( 'handle_bulk_actions-' . get_current_screen()->id, $sendback, $action, $plugins );
+ wp_safe_redirect( $sendback );
+ exit;
+ }
+ break;
}
+
}
$wp_list_table->prepare_items();
'title' => __('Overview'),
'content' =>
'<p>' . __('Plugins extend and expand the functionality of WordPress. Once a plugin is installed, you may activate it or deactivate it here.') . '</p>' .
+ '<p>' . __( 'The search for installed plugins will search for terms in their name, description, or author.' ) . ' <span id="live-search-desc" class="hide-if-no-js">' . __( 'The search results will be updated as you type.' ) . '</span></p>' .
'<p>' . sprintf(
- /* translators: 1: Plugin Browser/Installer URL, 2: WordPress Plugin Directory URL 3: local plugin directory */
- __( 'You can find additional plugins for your site by using the <a href="%1$s">Plugin Browser/Installer</a> functionality or by browsing the <a href="%2$s" target="_blank">WordPress Plugin Directory</a> directly and installing new plugins manually. To manually install a plugin you generally just need to upload the plugin file into your %3$s directory. Once a plugin has been installed, you can activate it here.' ),
- 'plugin-install.php',
- 'https://wordpress.org/plugins/',
- '<code>/wp-content/plugins</code>'
+ /* translators: %s: WordPress Plugin Directory URL */
+ __( 'If you would like to see more plugins to choose from, click on the “Add New” button and you will be able to browse or search for additional plugins from the <a href="%s">WordPress Plugin Directory</a>. Plugins in the WordPress Plugin Directory are designed and developed by third parties, and are compatible with the license WordPress uses. Oh, and they’re free!' ),
+ __( 'https://wordpress.org/plugins/' )
) . '</p>'
) );
get_current_screen()->add_help_tab( array(
get_current_screen()->set_help_sidebar(
'<p><strong>' . __('For more information:') . '</strong></p>' .
- '<p>' . __('<a href="https://codex.wordpress.org/Managing_Plugins#Plugin_Management" target="_blank">Documentation on Managing Plugins</a>') . '</p>' .
- '<p>' . __('<a href="https://wordpress.org/support/" target="_blank">Support Forums</a>') . '</p>'
+ '<p>' . __('<a href="https://codex.wordpress.org/Managing_Plugins#Plugin_Management">Documentation on Managing Plugins</a>') . '</p>' .
+ '<p>' . __('<a href="https://wordpress.org/support/">Support Forums</a>') . '</p>'
);
get_current_screen()->set_screen_reader_content( array(
<h1><?php echo esc_html( $title );
if ( ( ! is_multisite() || is_network_admin() ) && current_user_can('install_plugins') ) { ?>
<a href="<?php echo self_admin_url( 'plugin-install.php' ); ?>" class="page-title-action"><?php echo esc_html_x('Add New', 'plugin'); ?></a>
-<?php }
-if ( $s )
- printf( '<span class="subtitle">' . __('Search results for “%s”') . '</span>', esc_html( $s ) ); ?>
+<?php
+}
+
+if ( strlen( $s ) ) {
+ /* translators: %s: search keywords */
+ printf( '<span class="subtitle">' . __( 'Search results for “%s”' ) . '</span>', esc_html( urldecode( $s ) ) );
+}
+?>
</h1>
<?php
<?php $wp_list_table->views(); ?>
-<form method="get">
+<form class="search-form search-plugins" method="get">
<?php $wp_list_table->search_box( __( 'Search Installed Plugins' ), 'plugin' ); ?>
</form>
<?php $wp_list_table->display(); ?>
</form>
+ <span class="spinner"></span>
</div>
<?php
wp_print_request_filesystem_credentials_modal();
+wp_print_admin_notice_templates();
+wp_print_update_row_templates();
include(ABSPATH . 'wp-admin/admin-footer.php');