Make WordPress Core

Changeset 37972


Ignore:
Timestamp:
07/05/2016 03:21:44 PM (8 years ago)
Author:
ocean90
Message:

Dashboard: Don't add a "Configure" link to the toggle button.

The HTML for the toggle gets appended to the widget name which is later used for the widget title and the screen reader text of the toggle button. Storing the original widget name in the arguments allows us to use the name without the HTML for the screen reader text and doesn't require further changes by plugin developers.

Props nicholas_io, swissspidy.
Fixes #35021.

Location:
trunk/src/wp-admin/includes
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/wp-admin/includes/dashboard.php

    r37674 r37972  
    148148    $screen = get_current_screen();
    149149    global $wp_dashboard_control_callbacks;
     150
     151    $private_callback_args = array( '__widget_basename' => $widget_name );
     152
     153    if ( is_null( $callback_args ) ) {
     154        $callback_args = $private_callback_args;
     155    } else if ( is_array( $callback_args ) ) {
     156        $callback_args = array_merge( $callback_args, $private_callback_args );
     157    }
    150158
    151159    if ( $control_callback && current_user_can( 'edit_dashboard' ) && is_callable( $control_callback ) ) {
  • trunk/src/wp-admin/includes/screen.php

    r37534 r37972  
    118118                if ( 'submitdiv' == $box['id'] || 'linksubmitdiv' == $box['id'] )
    119119                    continue;
    120                 $box_id = $box['id'];
    121                 echo '<label for="' . $box_id . '-hide">';
    122                 echo '<input class="hide-postbox-tog" name="' . $box_id . '-hide" type="checkbox" id="' . $box_id . '-hide" value="' . $box_id . '"' . (! in_array($box_id, $hidden) ? ' checked="checked"' : '') . ' />';
    123                 echo "{$box['title']}</label>\n";
     120
     121                $widget_title = $box['title'];
     122
     123                if ( isset( $box['args']['__widget_basename'] ) ) {
     124                    $widget_title = $box['args']['__widget_basename'];
     125                }
     126
     127                printf(
     128                    '<label for="%1$s-hide"><input class="hide-postbox-tog" name="%1$s-hide" type="checkbox" id="%1$s-hide" value="%1$s" %2$s />%3$s</label>',
     129                    esc_attr( $box['id'] ),
     130                    checked( in_array( $box['id'], $hidden ), false, false ),
     131                    $widget_title
     132                );
    124133            }
    125134        }
  • trunk/src/wp-admin/includes/template.php

    r37737 r37972  
    10281028                    echo '<div id="' . $box['id'] . '" class="postbox ' . postbox_classes($box['id'], $page) . $hidden_class . '" ' . '>' . "\n";
    10291029                    if ( 'dashboard_browser_nag' != $box['id'] ) {
     1030                        $widget_title = $box[ 'title' ];
     1031
     1032                        if ( is_array( $box[ 'args' ] ) && isset( $box[ 'args' ][ '__widget_basename' ] ) ) {
     1033                            $widget_title = esc_html( $box[ 'args' ][ '__widget_basename' ] );
     1034                            // Do not pass this parameter to the user callback function.
     1035                            unset( $box[ 'args' ][ '__widget_basename' ] );
     1036                        }
     1037
    10301038                        echo '<button type="button" class="handlediv button-link" aria-expanded="true">';
    1031                         echo '<span class="screen-reader-text">' . sprintf( __( 'Toggle panel: %s' ), $box['title'] ) . '</span>';
     1039                        echo '<span class="screen-reader-text">' . sprintf( __( 'Toggle panel: %s' ), $widget_title ) . '</span>';
    10321040                        echo '<span class="toggle-indicator" aria-hidden="true"></span>';
    10331041                        echo '</button>';
Note: See TracChangeset for help on using the changeset viewer.