<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head><meta http-equiv="content-type" content="text/html; charset=utf-8" />
<title>[37972] trunk/src/wp-admin/includes: Dashboard: Don't add a "Configure" link to the toggle button.</title>
</head>
<body>

<style type="text/css"><!--
#msg dl.meta { border: 1px #006 solid; background: #369; padding: 6px; color: #fff; }
#msg dl.meta dt { float: left; width: 6em; font-weight: bold; }
#msg dt:after { content:':';}
#msg dl, #msg dt, #msg ul, #msg li, #header, #footer, #logmsg { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt;  }
#msg dl a { font-weight: bold}
#msg dl a:link    { color:#fc3; }
#msg dl a:active  { color:#ff0; }
#msg dl a:visited { color:#cc6; }
h3 { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt; font-weight: bold; }
#msg pre { overflow: auto; background: #ffc; border: 1px #fa0 solid; padding: 6px; }
#logmsg { background: #ffc; border: 1px #fa0 solid; padding: 1em 1em 0 1em; }
#logmsg p, #logmsg pre, #logmsg blockquote { margin: 0 0 1em 0; }
#logmsg p, #logmsg li, #logmsg dt, #logmsg dd { line-height: 14pt; }
#logmsg h1, #logmsg h2, #logmsg h3, #logmsg h4, #logmsg h5, #logmsg h6 { margin: .5em 0; }
#logmsg h1:first-child, #logmsg h2:first-child, #logmsg h3:first-child, #logmsg h4:first-child, #logmsg h5:first-child, #logmsg h6:first-child { margin-top: 0; }
#logmsg ul, #logmsg ol { padding: 0; list-style-position: inside; margin: 0 0 0 1em; }
#logmsg ul { text-indent: -1em; padding-left: 1em; }#logmsg ol { text-indent: -1.5em; padding-left: 1.5em; }
#logmsg > ul, #logmsg > ol { margin: 0 0 1em 0; }
#logmsg pre { background: #eee; padding: 1em; }
#logmsg blockquote { border: 1px solid #fa0; border-left-width: 10px; padding: 1em 1em 0 1em; background: white;}
#logmsg dl { margin: 0; }
#logmsg dt { font-weight: bold; }
#logmsg dd { margin: 0; padding: 0 0 0.5em 0; }
#logmsg dd:before { content:'\00bb';}
#logmsg table { border-spacing: 0px; border-collapse: collapse; border-top: 4px solid #fa0; border-bottom: 1px solid #fa0; background: #fff; }
#logmsg table th { text-align: left; font-weight: normal; padding: 0.2em 0.5em; border-top: 1px dotted #fa0; }
#logmsg table td { text-align: right; border-top: 1px dotted #fa0; padding: 0.2em 0.5em; }
#logmsg table thead th { text-align: center; border-bottom: 1px solid #fa0; }
#logmsg table th.Corner { text-align: left; }
#logmsg hr { border: none 0; border-top: 2px dashed #fa0; height: 1px; }
#header, #footer { color: #fff; background: #636; border: 1px #300 solid; padding: 6px; }
#patch { width: 100%; }
#patch h4 {font-family: verdana,arial,helvetica,sans-serif;font-size:10pt;padding:8px;background:#369;color:#fff;margin:0;}
#patch .propset h4, #patch .binary h4 {margin:0;}
#patch pre {padding:0;line-height:1.2em;margin:0;}
#patch .diff {width:100%;background:#eee;padding: 0 0 10px 0;overflow:auto;}
#patch .propset .diff, #patch .binary .diff  {padding:10px 0;}
#patch span {display:block;padding:0 10px;}
#patch .modfile, #patch .addfile, #patch .delfile, #patch .propset, #patch .binary, #patch .copfile {border:1px solid #ccc;margin:10px 0;}
#patch ins {background:#dfd;text-decoration:none;display:block;padding:0 10px;}
#patch del {background:#fdd;text-decoration:none;display:block;padding:0 10px;}
#patch .lines, .info {color:#888;background:#fff;}
--></style>
<div id="msg">
<dl class="meta" style="font-size: 105%">
<dt style="float: left; width: 6em; font-weight: bold">Revision</dt> <dd><a style="font-weight: bold" href="https://core.trac.wordpress.org/changeset/37972">37972</a><script type="application/ld+json">{"@context":"http://schema.org","@type":"EmailMessage","description":"Review this Commit","action":{"@type":"ViewAction","url":"https://core.trac.wordpress.org/changeset/37972","name":"Review Commit"}}</script></dd>
<dt style="float: left; width: 6em; font-weight: bold">Author</dt> <dd>ocean90</dd>
<dt style="float: left; width: 6em; font-weight: bold">Date</dt> <dd>2016-07-05 15:21:44 +0000 (Tue, 05 Jul 2016)</dd>
</dl>

<pre style='padding-left: 1em; margin: 2em 0; border-left: 2px solid #ccc; line-height: 1.25; font-size: 105%; font-family: sans-serif'>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 <a href="https://core.trac.wordpress.org/ticket/35021">#35021</a>.</pre>

<h3>Modified Paths</h3>
<ul>
<li><a href="#trunksrcwpadminincludesdashboardphp">trunk/src/wp-admin/includes/dashboard.php</a></li>
<li><a href="#trunksrcwpadminincludesscreenphp">trunk/src/wp-admin/includes/screen.php</a></li>
<li><a href="#trunksrcwpadminincludestemplatephp">trunk/src/wp-admin/includes/template.php</a></li>
</ul>

</div>
<div id="patch">
<h3>Diff</h3>
<a id="trunksrcwpadminincludesdashboardphp"></a>
<div class="modfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Modified: trunk/src/wp-admin/includes/dashboard.php</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- trunk/src/wp-admin/includes/dashboard.php 2016-07-05 15:17:20 UTC (rev 37971)
+++ trunk/src/wp-admin/includes/dashboard.php   2016-07-05 15:21:44 UTC (rev 37972)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -148,6 +148,14 @@
</span><span class="cx" style="display: block; padding: 0 10px">        $screen = get_current_screen();
</span><span class="cx" style="display: block; padding: 0 10px">        global $wp_dashboard_control_callbacks;
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        $private_callback_args = array( '__widget_basename' => $widget_name );
+
+       if ( is_null( $callback_args ) ) {
+               $callback_args = $private_callback_args;
+       } else if ( is_array( $callback_args ) ) {
+               $callback_args = array_merge( $callback_args, $private_callback_args );
+       }
+
</ins><span class="cx" style="display: block; padding: 0 10px">         if ( $control_callback && current_user_can( 'edit_dashboard' ) && is_callable( $control_callback ) ) {
</span><span class="cx" style="display: block; padding: 0 10px">                $wp_dashboard_control_callbacks[$widget_id] = $control_callback;
</span><span class="cx" style="display: block; padding: 0 10px">                if ( isset( $_GET['edit'] ) && $widget_id == $_GET['edit'] ) {
</span></span></pre></div>
<a id="trunksrcwpadminincludesscreenphp"></a>
<div class="modfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Modified: trunk/src/wp-admin/includes/screen.php</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- trunk/src/wp-admin/includes/screen.php    2016-07-05 15:17:20 UTC (rev 37971)
+++ trunk/src/wp-admin/includes/screen.php      2016-07-05 15:21:44 UTC (rev 37972)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -117,10 +117,19 @@
</span><span class="cx" style="display: block; padding: 0 10px">                                // Submit box cannot be hidden
</span><span class="cx" style="display: block; padding: 0 10px">                                if ( 'submitdiv' == $box['id'] || 'linksubmitdiv' == $box['id'] )
</span><span class="cx" style="display: block; padding: 0 10px">                                        continue;
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                $box_id = $box['id'];
-                               echo '<label for="' . $box_id . '-hide">';
-                               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"' : '') . ' />';
-                               echo "{$box['title']}</label>\n";
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
+                               $widget_title = $box['title'];
+
+                               if ( isset( $box['args']['__widget_basename'] ) ) {
+                                       $widget_title = $box['args']['__widget_basename'];
+                               }
+
+                               printf(
+                                       '<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>',
+                                       esc_attr( $box['id'] ),
+                                       checked( in_array( $box['id'], $hidden ), false, false ),
+                                       $widget_title
+                               );
</ins><span class="cx" style="display: block; padding: 0 10px">                         }
</span><span class="cx" style="display: block; padding: 0 10px">                }
</span><span class="cx" style="display: block; padding: 0 10px">        }
</span></span></pre></div>
<a id="trunksrcwpadminincludestemplatephp"></a>
<div class="modfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Modified: trunk/src/wp-admin/includes/template.php</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- trunk/src/wp-admin/includes/template.php  2016-07-05 15:17:20 UTC (rev 37971)
+++ trunk/src/wp-admin/includes/template.php    2016-07-05 15:21:44 UTC (rev 37972)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -1027,8 +1027,16 @@
</span><span class="cx" style="display: block; padding: 0 10px">                                        $hidden_class = in_array($box['id'], $hidden) ? ' hide-if-js' : '';
</span><span class="cx" style="display: block; padding: 0 10px">                                        echo '<div id="' . $box['id'] . '" class="postbox ' . postbox_classes($box['id'], $page) . $hidden_class . '" ' . '>' . "\n";
</span><span class="cx" style="display: block; padding: 0 10px">                                        if ( 'dashboard_browser_nag' != $box['id'] ) {
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                                $widget_title = $box[ 'title' ];
+
+                                               if ( is_array( $box[ 'args' ] ) && isset( $box[ 'args' ][ '__widget_basename' ] ) ) {
+                                                       $widget_title = esc_html( $box[ 'args' ][ '__widget_basename' ] );
+                                                       // Do not pass this parameter to the user callback function.
+                                                       unset( $box[ 'args' ][ '__widget_basename' ] );
+                                               }
+
</ins><span class="cx" style="display: block; padding: 0 10px">                                                 echo '<button type="button" class="handlediv button-link" aria-expanded="true">';
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                                echo '<span class="screen-reader-text">' . sprintf( __( 'Toggle panel: %s' ), $box['title'] ) . '</span>';
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                         echo '<span class="screen-reader-text">' . sprintf( __( 'Toggle panel: %s' ), $widget_title ) . '</span>';
</ins><span class="cx" style="display: block; padding: 0 10px">                                                 echo '<span class="toggle-indicator" aria-hidden="true"></span>';
</span><span class="cx" style="display: block; padding: 0 10px">                                                echo '</button>';
</span><span class="cx" style="display: block; padding: 0 10px">                                        }
</span></span></pre>
</div>
</div>

</body>
</html>