Make WordPress Core

Ticket #60194: admin-plugin-preview.0.diff

File admin-plugin-preview.0.diff, 2.2 KB (added by tellyworth, 2 years ago)

Initial draft patch for discussion and review

  • src/wp-admin/includes/class-wp-plugin-install-list-table.php

    diff --git a/src/wp-admin/includes/class-wp-plugin-install-list-table.php b/src/wp-admin/includes/class-wp-plugin-install-list-table.php
    index 7823f00b70..d8bdb32727 100644
    a b class WP_Plugin_Install_List_Table extends WP_List_Table { 
    155155                        'per_page' => $per_page,
    156156                        // Send the locale to the API so it can provide context-sensitive results.
    157157                        'locale'   => get_user_locale(),
     158                        'fields'   => 'preview_link',
    158159                );
    159160
    160161                switch ( $tab ) {
    class WP_Plugin_Install_List_Table extends WP_List_Table { 
    577578                                                                        _x( 'Cannot Install', 'plugin' )
    578579                                                                );
    579580                                                        }
     581                                                        if ( isset( $plugin['preview_link'] ) && $plugin['preview_link'] ) {
     582                                                                $action_links[] = sprintf(
     583                                                                        '<a class="button preview" href="%s" aria-label="%s" data-title="%s" target="_blank">%s</a>',
     584                                                                        esc_url( $plugin['preview_link'] ),
     585                                                                        /* translators: %s: Plugin name and version. */
     586                                                                        esc_attr( sprintf( __( 'Preview %s' ), $name ) ),
     587                                                                        esc_attr( $name ),
     588                                                                        __( 'Preview' )
     589                                                                );
     590                                                        }
    580591                                                }
    581592                                                break;
    582593
  • src/wp-admin/includes/plugin-install.php

    diff --git a/src/wp-admin/includes/plugin-install.php b/src/wp-admin/includes/plugin-install.php
    index 7662076581..788189c8d9 100644
    a b function install_plugin_install_status( $api, $loop = false ) { 
    518518                $url .= '&amp;from=' . urlencode( wp_unslash( $_GET['from'] ) );
    519519        }
    520520
     521        $preview = null;
     522        if ( isset( $api->preview_link ) && $api->preview_link ) {
     523                $preview = $api->preview_link;
     524        }
     525
    521526        $file = $update_file;
    522         return compact( 'status', 'url', 'version', 'file' );
     527        return compact( 'status', 'url', 'version', 'file', 'preview' );
    523528}
    524529
    525530/**
    function install_plugin_information() { 
    897902                                                );
    898903                                        }
    899904                                }
     905                                if ( $status['preview'] ) {
     906                                        echo '<a data-slug="' . esc_attr( $api->slug ) . '" id="plugin_preview_from_iframe" class="button button-primary left" href="' . $status['preview'] . '" target="_blank">' . __( 'Preview' ) . '</a>';
     907                                }
    900908                                break;
    901909                        case 'update_available':
    902910                                if ( $status['url'] ) {