WordPress.org

Make WordPress Core

Ticket #43986: 43986v5.1.diff

File 43986v5.1.diff, 9.7 KB (added by afragen, 2 years ago)

Design style #2, displays plugin info, 2 lines

  • src/wp-admin/css/list-tables-rtl.css

    diff --git src/wp-admin/css/list-tables-rtl.css src/wp-admin/css/list-tables-rtl.css
    index 468dcbf8a1..dd7f90d607 100644
    ul.cat-checklist { 
    14041404        min-height: 135px;
    14051405}
    14061406
     1407
     1408.plugin-card-top .desc.incompatible {
     1409        margin-right: 0;
     1410        padding: 10px;
     1411        border-left: 5px solid #C62D2D;
     1412}
     1413
    14071414div.action-links,
    14081415.plugin-action-buttons {
    14091416        margin: 0; /* Override existing margins */
    div.action-links, 
    15101517        content: "\f158";
    15111518}
    15121519
     1520.plugin-card .column-compatibility .compatibility-incompatible:before {
     1521        color: #f00;
     1522}
     1523
    15131524.plugin-card .compatibility-compatible:before {
    15141525        content: "\f147";
    15151526}
    15161527
     1528.plugin-card .column-compatibility .compatibility-compatible:before {
     1529        color: #008000;
     1530}
     1531
    15171532.plugin-icon {
    15181533        position: absolute;
    15191534        top: 20px;
  • src/wp-admin/css/list-tables.css

    diff --git src/wp-admin/css/list-tables.css src/wp-admin/css/list-tables.css
    index 8d78983993..659a1a48a4 100644
    ul.cat-checklist { 
    14041404        min-height: 135px;
    14051405}
    14061406
     1407
     1408.plugin-card-top .desc.incompatible {
     1409        margin-right: 0;
     1410        padding: 10px;
     1411        border-left: 5px solid #C62D2D;
     1412}
     1413
    14071414div.action-links,
    14081415.plugin-action-buttons {
    14091416        margin: 0; /* Override existing margins */
    div.action-links, 
    15101517        content: "\f158";
    15111518}
    15121519
     1520.plugin-card .column-compatibility .compatibility-incompatible:before {
     1521        color: #f00;
     1522}
     1523
    15131524.plugin-card .compatibility-compatible:before {
    15141525        content: "\f147";
    15151526}
    15161527
     1528.plugin-card .column-compatibility .compatibility-compatible:before {
     1529        color: #008000;
     1530}
     1531
    15171532.plugin-icon {
    15181533        position: absolute;
    15191534        top: 20px;
  • src/wp-admin/includes/class-wp-plugin-install-list-table.php

    diff --git src/wp-admin/includes/class-wp-plugin-install-list-table.php src/wp-admin/includes/class-wp-plugin-install-list-table.php
    index a19729b1d4..2094aaf003 100644
    class WP_Plugin_Install_List_Table extends WP_List_Table { 
    496496                                $author = ' <cite>' . sprintf( __( 'By %s' ), $author ) . '</cite>';
    497497                        }
    498498
     499                        $wp_version = get_bloginfo( 'version' );
     500
     501                        $tested_php     = ! empty( $plugin['requires_php'] );
     502                        $compatible_php = ( ! $tested_php || version_compare( substr( PHP_VERSION, 0, strlen( $plugin['requires_php'] ) ), $plugin['requires_php'], '>=' ) );
     503                        $tested_wp      = ( empty( $plugin['tested'] ) || version_compare( substr( $wp_version, 0, strlen( $plugin['tested'] ) ), $plugin['tested'], '<=' ) );
     504                        $compatible_wp  = ( empty( $plugin['requires'] ) || version_compare( substr( $wp_version, 0, strlen( $plugin['requires'] ) ), $plugin['requires'], '>=' ) );
     505                        $can_install    = ( ! $tested_php || $compatible_php ) && $compatible_wp;
     506
    499507                        $action_links = array();
    500508
    501509                        if ( current_user_can( 'install_plugins' ) || current_user_can( 'update_plugins' ) ) {
    class WP_Plugin_Install_List_Table extends WP_List_Table { 
    504512                                switch ( $status['status'] ) {
    505513                                        case 'install':
    506514                                                if ( $status['url'] ) {
    507                                                         $action_links[] = sprintf(
    508                                                                 '<a class="install-now button" data-slug="%s" href="%s" aria-label="%s" data-name="%s">%s</a>',
    509                                                                 esc_attr( $plugin['slug'] ),
    510                                                                 esc_url( $status['url'] ),
    511                                                                 /* translators: %s: plugin name and version */
    512                                                                 esc_attr( sprintf( __( 'Install %s now' ), $name ) ),
    513                                                                 esc_attr( $name ),
    514                                                                 __( 'Install Now' )
    515                                                         );
     515                                                        if ( $can_install ) {
     516                                                                $action_links[] = sprintf(
     517                                                                        '<a class="install-now button" data-slug="%s" href="%s" aria-label="%s" data-name="%s">%s</a>',
     518                                                                        esc_attr( $plugin['slug'] ),
     519                                                                        esc_url( $status['url'] ),
     520                                                                        /* translators: %s: plugin name and version */
     521                                                                        esc_attr( sprintf( __( 'Install %s now' ), $name ) ),
     522                                                                        esc_attr( $name ),
     523                                                                        __( 'Install Now' )
     524                                                                );
     525                                                        } else {
     526                                                                $action_links[] = sprintf(
     527                                                                        '<button type="button" class="button button-disabled" disabled="disabled">%s</button>',
     528                                                                        _x( 'Cannot Install', 'plugin' )
     529                                                                );
     530                                                        }
    516531                                                }
    517532                                                break;
    518533
    class WP_Plugin_Install_List_Table extends WP_List_Table { 
    630645                                        <p><?php echo $description; ?></p>
    631646                                        <p class="authors"><?php echo $author; ?></p>
    632647                                </div>
     648                                <?php
     649                                if ( ! $can_install ) {
     650                                        echo '<div class="desc notice-error notice-alt incompatible">';
     651
     652                                        // Remove style before commit.
     653                                        echo '<style>
     654                                                .plugin-card-top .desc.incompatible {
     655                                                margin-right: 0;
     656                                                padding: 10px;
     657                                                border-left: 5px solid #C62D2D;
     658                                                }
     659                                                .plugin-card .column-compatibility .compatibility-incompatible:before {
     660                                                        color: #f00;
     661                                                }
     662                                                .plugin-card .column-compatibility .compatibility-compatible:before {
     663                                                        color: #008000;
     664                                                }
     665                                                </style>';
     666
     667                                        echo '<span style="color:#C62D2D;" class="dashicons dashicons-warning"></span>&nbsp;';
     668                                        _e( 'This plugin is incompatible and cannot be installed.' );
     669                                        echo '&nbsp;';
     670                                        printf(
     671                                                '<a href="%s" class="thickbox open-plugin-details-modal" aria-label="%s" data-title="%s">%s</a>',
     672                                                esc_url( $details_link ),
     673                                                /* translators: %s: plugin name and version */
     674                                                esc_attr( sprintf( __( 'More information about %s' ), $name ) ),
     675                                                esc_attr( $name ),
     676                                                __( 'Why?' )
     677                                        );
     678                                        echo '</div>';
     679                                }
     680                                ?>
    633681                        </div>
    634682                        <div class="plugin-card-bottom">
    635683                                <div class="vers column-rating">
    class WP_Plugin_Install_List_Table extends WP_List_Table { 
    665713                                </div>
    666714                                <div class="column-compatibility">
    667715                                        <?php
    668                                         $wp_version = get_bloginfo( 'version' );
    669 
    670                                         if ( ! empty( $plugin['tested'] ) && version_compare( substr( $wp_version, 0, strlen( $plugin['tested'] ) ), $plugin['tested'], '>' ) ) {
     716                                        if ( ! $compatible_php && $tested_php ) {
     717                                                echo '<span class="compatibility-incompatible">' .
     718                                                __( '<strong>Incompatible</strong> with your version of PHP' ) . '</span><br>';
     719                                        }
     720                                        if ( ! $tested_wp ) {
    671721                                                echo '<span class="compatibility-untested">' . __( 'Untested with your version of WordPress' ) . '</span>';
    672                                         } elseif ( ! empty( $plugin['requires'] ) && version_compare( substr( $wp_version, 0, strlen( $plugin['requires'] ) ), $plugin['requires'], '<' ) ) {
     722                                        } elseif ( ! $compatible_wp ) {
    673723                                                echo '<span class="compatibility-incompatible">' . __( '<strong>Incompatible</strong> with your version of WordPress' ) . '</span>';
    674724                                        } else {
    675725                                                echo '<span class="compatibility-compatible">' . __( '<strong>Compatible</strong> with your version of WordPress' ) . '</span>';
  • src/wp-admin/includes/plugin-install.php

    diff --git src/wp-admin/includes/plugin-install.php src/wp-admin/includes/plugin-install.php
    index f765fb286e..da187ed07f 100644
    if ( ! empty( $api->contributors ) ) { 
    753753        <?php
    754754        $wp_version = get_bloginfo( 'version' );
    755755
    756         if ( ! empty( $api->tested ) && version_compare( substr( $wp_version, 0, strlen( $api->tested ) ), $api->tested, '>' ) ) {
    757                 echo '<div class="notice notice-warning notice-alt"><p>' . __( '<strong>Warning:</strong> This plugin has <strong>not been tested</strong> with your current version of WordPress.' ) . '</p></div>';
    758         } elseif ( ! empty( $api->requires ) && version_compare( substr( $wp_version, 0, strlen( $api->requires ) ), $api->requires, '<' ) ) {
    759                 echo '<div class="notice notice-warning notice-alt"><p>' . __( '<strong>Warning:</strong> This plugin has <strong>not been marked as compatible</strong> with your version of WordPress.' ) . '</p></div>';
     756        $tested_php     = ! empty( $api->requires_php );
     757        $compatible_php = ( ! $tested_php || version_compare( substr( PHP_VERSION, 0, strlen( $api->requires_php ) ), $api->requires_php, '>=' ) );
     758        $tested_wp      = ( empty( $api->tested ) || version_compare( substr( $wp_version, 0, strlen( $api->tested ) ), $api->tested, '<=' ) );
     759        $compatible_wp  = ( empty( $api->requires ) || version_compare( substr( $wp_version, 0, strlen( $api->requires ) ), $api->requires, '>=' ) );
     760        $can_install    = ( ! $tested_php || $compatible_php ) && $compatible_wp;
     761
     762        if ( ! $compatible_php && $tested_php ) {
     763                echo '<div class="notice notice-error notice-alt"><p>' . sprintf(
     764                        /* translators: Upgrading PHP page URL */
     765                        __( '<strong>Error:</strong> This plugin <strong>requires a newer version of PHP</strong>, so unfortunately you cannot install it. <a href="%s">Click here to learn more about upgrading PHP.</a>' ),
     766                        esc_url( __( 'https://wordpress.org/support/upgrade-php/' ) )
     767                ) . '</p></div>';
     768        }
     769        if ( ! $tested_wp ) {
     770                echo '<div class="notice notice-warning notice-alt"><p>' . __( '<strong>Warning:</strong> This plugin <strong>has not been tested</strong> with your current version of WordPress.' ) . '</p></div>';
     771        } elseif ( ! $compatible_wp ) {
     772                echo '<div class="notice notice-error notice-alt"><p>' . __( '<strong>Error:</strong> This plugin <strong>has not been marked as compatible</strong> with your version of WordPress.' ) . '</p></div>';
    760773        }
    761774
    762775        foreach ( (array) $api->sections as $section_name => $content ) {
    if ( ! empty( $api->contributors ) ) { 
    779792                $status = install_plugin_install_status( $api );
    780793                switch ( $status['status'] ) {
    781794                        case 'install':
    782                                 if ( $status['url'] ) {
     795                                if ( $can_install ) {
    783796                                        echo '<a data-slug="' . esc_attr( $api->slug ) . '" id="plugin_install_from_iframe" class="button button-primary right" href="' . $status['url'] . '" target="_parent">' . __( 'Install Now' ) . '</a>';
     797                                } else {
     798                                        printf(
     799                                                '<button type="button" class="button button-primary button-disabled right" disabled="disabled">%s</button>',
     800                                                _x( 'Cannot Install', 'plugin' )
     801                                        );
    784802                                }
    785803                                break;
    786804                        case 'update_available':