Make WordPress Core

Ticket #58370: 58370.1.diff

File 58370.1.diff, 2.9 KB (added by joedolson, 13 months ago)

Partial patch

  • src/js/_enqueues/wp/updates.js

     
    28322832
    28332833                                case 'install-plugin':
    28342834                                case 'update-plugin':
    2835                                         /* jscs:disable requireCamelCaseOrUpperCaseIdentifiers */
    2836                                         window.tb_remove();
    2837                                         /* jscs:enable */
     2835                                        var slug        = message.data.slug;
     2836                                        var activate    = $( '#plugin-activate-' + slug );
     2837                                        var isActivated = ( 1 === activate.length() ) ? true : false;
     2838                                        // todo: execute update/install and handle notifications.
     2839                                        if ( isActivated ) {
     2840                                                /* jscs:disable requireCamelCaseOrUpperCaseIdentifiers */
     2841                                                window.tb_remove();
     2842                                                /* jscs:enable */
     2843                                        } else {
     2844                                                activate.show().trigger( 'focus' );
     2845                                        }
    28382846
    28392847                                        message.data = wp.updates._addCallbacks( message.data, message.action );
    28402848
  • src/wp-admin/includes/plugin-install.php

     
    899899                                echo '<a class="button button-primary right disabled">' . __( 'Latest Version Installed' ) . '</a>';
    900900                                break;
    901901                }
     902
     903                $installed_plugin = get_plugins( '/' . $api->slug );
     904                $key              = array_keys( $installed_plugin );
     905                // Use the first plugin regardless of the name.
     906                // Could have issues for multiple plugins in one directory if they share different version numbers.
     907                $key         = reset( $key );
     908                $plugin_file = $api->slug . '/' . $key;
     909
     910                if ( is_network_admin() ) {
     911                        $is_active  = is_plugin_active_for_network( $plugin_file );
     912                } else {
     913                        $is_active  = is_plugin_active( $plugin_file );
     914                }
     915                $link = '';
     916                if ( ! $is_active && $installed_plugin && current_user_can( 'activate_plugin', $plugin_file ) ) {
     917                        if ( $compatible_php && $compatible_wp ) {
     918                                $button_label = _x( 'Activate', 'plugin' );
     919                                $activate_url = add_query_arg(
     920                                        array(
     921                                                '_wpnonce' => wp_create_nonce( 'activate-plugin_' . $status['file'] ),
     922                                                'action'   => 'activate',
     923                                                'plugin'   => $plugin_file,
     924                                        ),
     925                                        network_admin_url( 'plugins.php' )
     926                                );
     927
     928                                if ( is_network_admin() ) {
     929                                        $button_label = _x( 'Network Activate', 'plugin' );
     930                                        $activate_url = add_query_arg( array( 'networkwide' => 1 ), $activate_url );
     931                                }
     932
     933                                $link = sprintf(
     934                                        '<a href="%1$s" class="button right activate-now" target="_parent">%2$s</a>',
     935                                        esc_url( $activate_url ),
     936                                        $button_label
     937                                );
     938                        } else {
     939                                $link = sprintf(
     940                                        '<button type="button" class="button right button-disabled" disabled="disabled">%s</button>',
     941                                        _x( 'Cannot Activate', 'plugin' )
     942                                );
     943                        }
     944                }
     945                echo $link;
    902946        }
    903947        echo "</div>\n";
    904948