Make WordPress Core

Ticket #49916: 49916.2.diff

File 49916.2.diff, 5.0 KB (added by SergeyBiryukov, 6 years ago)
  • src/wp-admin/includes/class-wp-plugins-list-table.php

     
    615615         * @global string $s
    616616         * @global array $totals
    617617         *
     618         * @staticvar array $plugin_id_attrs
     619         *
    618620         * @param array $item
    619621         */
    620622        public function single_row( $item ) {
    621623                global $status, $page, $s, $totals;
     624                static $plugin_id_attrs = array();
    622625
    623626                list( $plugin_file, $plugin_data ) = $item;
    624627
    625                 $plugin_slug = isset( $plugin_data['slug'] ) ? $plugin_data['slug'] : sanitize_title( $plugin_data['Name'] );
     628                $plugin_slug    = isset( $plugin_data['slug'] ) ? $plugin_data['slug'] : sanitize_title( $plugin_data['Name'] );
     629                $plugin_id_attr = $plugin_slug;
    626630
     631                // Ensure the ID attribute is unique.
     632                $suffix = 2;
     633                while ( in_array( $plugin_id_attr, $plugin_id_attrs, true ) ) {
     634                        $plugin_id_attr = "$plugin_slug-$suffix";
     635                        $suffix++;
     636                }
     637
     638                $plugin_id_attrs[] = $plugin_id_attr;
     639
    627640                $context = $status;
    628641                $screen  = $this->screen;
    629642
     
    681694                                                $actions['deactivate'] = sprintf(
    682695                                                        '<a href="%s" id="deactivate-%s" aria-label="%s">%s</a>',
    683696                                                        wp_nonce_url( 'plugins.php?action=deactivate&amp;plugin=' . urlencode( $plugin_file ) . '&amp;plugin_status=' . $context . '&amp;paged=' . $page . '&amp;s=' . $s, 'deactivate-plugin_' . $plugin_file ),
    684                                                         esc_attr( $plugin_slug ),
     697                                                        esc_attr( $plugin_id_attr ),
    685698                                                        /* translators: %s: Plugin name. */
    686699                                                        esc_attr( sprintf( _x( 'Network Deactivate %s', 'plugin' ), $plugin_data['Name'] ) ),
    687700                                                        __( 'Network Deactivate' )
     
    692705                                                $actions['activate'] = sprintf(
    693706                                                        '<a href="%s" id="activate-%s" class="edit" aria-label="%s">%s</a>',
    694707                                                        wp_nonce_url( 'plugins.php?action=activate&amp;plugin=' . urlencode( $plugin_file ) . '&amp;plugin_status=' . $context . '&amp;paged=' . $page . '&amp;s=' . $s, 'activate-plugin_' . $plugin_file ),
    695                                                         esc_attr( $plugin_slug ),
     708                                                        esc_attr( $plugin_id_attr ),
    696709                                                        /* translators: %s: Plugin name. */
    697710                                                        esc_attr( sprintf( _x( 'Network Activate %s', 'plugin' ), $plugin_data['Name'] ) ),
    698711                                                        __( 'Network Activate' )
     
    703716                                                $actions['delete'] = sprintf(
    704717                                                        '<a href="%s" id="delete-%s" class="delete" aria-label="%s">%s</a>',
    705718                                                        wp_nonce_url( 'plugins.php?action=delete-selected&amp;checked[]=' . urlencode( $plugin_file ) . '&amp;plugin_status=' . $context . '&amp;paged=' . $page . '&amp;s=' . $s, 'bulk-plugins' ),
    706                                                         esc_attr( $plugin_slug ),
     719                                                        esc_attr( $plugin_id_attr ),
    707720                                                        /* translators: %s: Plugin name. */
    708721                                                        esc_attr( sprintf( _x( 'Delete %s', 'plugin' ), $plugin_data['Name'] ) ),
    709722                                                        __( 'Delete' )
     
    724737                                                $actions['deactivate'] = sprintf(
    725738                                                        '<a href="%s" id="deactivate-%s" aria-label="%s">%s</a>',
    726739                                                        wp_nonce_url( 'plugins.php?action=deactivate&amp;plugin=' . urlencode( $plugin_file ) . '&amp;plugin_status=' . $context . '&amp;paged=' . $page . '&amp;s=' . $s, 'deactivate-plugin_' . $plugin_file ),
    727                                                         esc_attr( $plugin_slug ),
     740                                                        esc_attr( $plugin_id_attr ),
    728741                                                        /* translators: %s: Plugin name. */
    729742                                                        esc_attr( sprintf( _x( 'Deactivate %s', 'plugin' ), $plugin_data['Name'] ) ),
    730743                                                        __( 'Deactivate' )
     
    735748                                                $actions['resume'] = sprintf(
    736749                                                        '<a href="%s" id="resume-%s" class="resume-link" aria-label="%s">%s</a>',
    737750                                                        wp_nonce_url( 'plugins.php?action=resume&amp;plugin=' . urlencode( $plugin_file ) . '&amp;plugin_status=' . $context . '&amp;paged=' . $page . '&amp;s=' . $s, 'resume-plugin_' . $plugin_file ),
    738                                                         esc_attr( $plugin_slug ),
     751                                                        esc_attr( $plugin_id_attr ),
    739752                                                        /* translators: %s: Plugin name. */
    740753                                                        esc_attr( sprintf( _x( 'Resume %s', 'plugin' ), $plugin_data['Name'] ) ),
    741754                                                        __( 'Resume' )
     
    746759                                                $actions['activate'] = sprintf(
    747760                                                        '<a href="%s" id="activate-%s" class="edit" aria-label="%s">%s</a>',
    748761                                                        wp_nonce_url( 'plugins.php?action=activate&amp;plugin=' . urlencode( $plugin_file ) . '&amp;plugin_status=' . $context . '&amp;paged=' . $page . '&amp;s=' . $s, 'activate-plugin_' . $plugin_file ),
    749                                                         esc_attr( $plugin_slug ),
     762                                                        esc_attr( $plugin_id_attr ),
    750763                                                        /* translators: %s: Plugin name. */
    751764                                                        esc_attr( sprintf( _x( 'Activate %s', 'plugin' ), $plugin_data['Name'] ) ),
    752765                                                        __( 'Activate' )
     
    757770                                                $actions['delete'] = sprintf(
    758771                                                        '<a href="%s" id="delete-%s" class="delete" aria-label="%s">%s</a>',
    759772                                                        wp_nonce_url( 'plugins.php?action=delete-selected&amp;checked[]=' . urlencode( $plugin_file ) . '&amp;plugin_status=' . $context . '&amp;paged=' . $page . '&amp;s=' . $s, 'bulk-plugins' ),
    760                                                         esc_attr( $plugin_slug ),
     773                                                        esc_attr( $plugin_id_attr ),
    761774                                                        /* translators: %s: Plugin name. */
    762775                                                        esc_attr( sprintf( _x( 'Delete %s', 'plugin' ), $plugin_data['Name'] ) ),
    763776                                                        __( 'Delete' )