<!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" /><style type="text/css"><!--
#msg dl { border: 1px #006 solid; background: #369; padding: 6px; color: #fff; }
#msg dt { float: left; width: 6em; font-weight: bold; }
#msg dt:after { content:':';}
#msg dl, #msg dt, #msg ul, #msg li, #header, #footer { 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 #fc0 solid; padding: 6px; }
#msg ul, pre { overflow: auto; }
#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>
<title>[15571] trunk/wp-admin/includes: Introduce WP_List_Table::row_actions().</title>
</head>
<body>

<div id="msg">
<dl>
<dt>Revision</dt> <dd><a href="http://trac.wordpress.org/changeset/15571">15571</a></dd>
<dt>Author</dt> <dd>scribu</dd>
<dt>Date</dt> <dd>2010-09-05 16:53:59 +0000 (Sun, 05 Sep 2010)</dd>
</dl>

<h3>Log Message</h3>
<pre>Introduce WP_List_Table::row_actions(). See <a href="http://trac.wordpress.org/ticket/14579">#14579</a></pre>

<h3>Modified Paths</h3>
<ul>
<li><a href="#trunkwpadminincludesdefaultlisttablesphp">trunk/wp-admin/includes/default-list-tables.php</a></li>
<li><a href="#trunkwpadminincludeslisttablephp">trunk/wp-admin/includes/list-table.php</a></li>
</ul>

</div>
<div id="patch">
<h3>Diff</h3>
<a id="trunkwpadminincludesdefaultlisttablesphp"></a>
<div class="modfile"><h4>Modified: trunk/wp-admin/includes/default-list-tables.php (15570 => 15571)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/wp-admin/includes/default-list-tables.php        2010-09-05 15:30:10 UTC (rev 15570)
+++ trunk/wp-admin/includes/default-list-tables.php        2010-09-05 16:53:59 UTC (rev 15571)
</span><span class="lines">@@ -455,15 +455,7 @@
</span><span class="cx">                                 }
</span><span class="cx"> 
</span><span class="cx">                                 $actions = apply_filters( $this-&gt;hierarchical_display ? 'page_row_actions' : 'post_row_actions', $actions, $post );
</span><del>-                                $action_count = count( $actions );
-                                $i = 0;
-                                echo '&lt;div class=&quot;row-actions&quot;&gt;';
-                                foreach ( $actions as $action =&gt; $link ) {
-                                        ++$i;
-                                        ( $i == $action_count ) ? $sep = '' : $sep = ' | ';
-                                        echo &quot;&lt;span class='$action'&gt;$link$sep&lt;/span&gt;&quot;;
-                                }
-                                echo '&lt;/div&gt;';
</del><ins>+                                echo $this-&gt;row_actions( $actions );
</ins><span class="cx"> 
</span><span class="cx">                                 get_inline_data( $post );
</span><span class="cx">                         break;
</span><span class="lines">@@ -1115,14 +1107,7 @@
</span><span class="cx">                         $actions['view'] = '&lt;a href=&quot;' . get_permalink( $post-&gt;ID ) . '&quot; title=&quot;' . esc_attr( sprintf( __( 'View &amp;#8220;%s&amp;#8221;' ), $title ) ) . '&quot; rel=&quot;permalink&quot;&gt;' . __( 'View' ) . '&lt;/a&gt;';
</span><span class="cx">                 }
</span><span class="cx">                 $actions = apply_filters( 'media_row_actions', $actions, $post );
</span><del>-                $action_count = count( $actions );
-                $i = 0;
-                echo '&lt;div class=&quot;row-actions&quot;&gt;';
-                foreach ( $actions as $action =&gt; $link ) {
-                        $sep = ( ++$i == $action_count ) ? '' : ' | ';
-                        echo &quot;&lt;span class='$action'&gt;$link$sep&lt;/span&gt;&quot;;
-                }
-                echo '&lt;/div&gt;';
</del><ins>+                echo $this-&gt;row_actions( $actions );
</ins><span class="cx"> ?&gt;
</span><span class="cx">                 &lt;/td&gt;
</span><span class="cx"> &lt;?php
</span><span class="lines">@@ -1268,7 +1253,6 @@
</span><span class="cx">                         else
</span><span class="cx">                                 echo strtoupper( str_replace( 'image/', '', get_post_mime_type() ) );
</span><span class="cx"> ?&gt;
</span><del>-                        &lt;div class=&quot;row-actions&quot;&gt;
</del><span class="cx"> &lt;?php
</span><span class="cx">                         $actions = array();
</span><span class="cx">                         if ( current_user_can( 'edit_post', $post-&gt;ID ) )
</span><span class="lines">@@ -1285,14 +1269,8 @@
</span><span class="cx">                                 $actions['attach'] = '&lt;a href=&quot;#the-list&quot; onclick=&quot;findPosts.open( \'media[]\',\''.$post-&gt;ID.'\' );return false;&quot; class=&quot;hide-if-no-js&quot;&gt;'.__( 'Attach' ).'&lt;/a&gt;';
</span><span class="cx">                         $actions = apply_filters( 'media_row_actions', $actions, $post );
</span><span class="cx"> 
</span><del>-                        $action_count = count( $actions );
-                        $i = 0;
-                        foreach ( $actions as $action =&gt; $link ) {
-                                $sep = ( ++$i == $action_count ) ? '' : ' | ';
-                                echo &quot;&lt;span class='$action'&gt;$link$sep&lt;/span&gt;&quot;;
-                        }
</del><ins>+                        echo $this-&gt;row_actions( $actions );
</ins><span class="cx"> ?&gt;
</span><del>-                        &lt;/div&gt;
</del><span class="cx">                 &lt;/td&gt;
</span><span class="cx">                 &lt;td class=&quot;author column-author&quot;&gt;
</span><span class="cx">                         &lt;?php $author = get_userdata( $post-&gt;post_author ); echo $author-&gt;display_name; ?&gt;
</span><span class="lines">@@ -1564,6 +1542,7 @@
</span><span class="cx">                                         break;
</span><span class="cx">                                 case 'name':
</span><span class="cx">                                         $out .= '&lt;td ' . $attributes . '&gt;&lt;strong&gt;&lt;a class=&quot;row-title&quot; href=&quot;' . $edit_link . '&quot; title=&quot;' . esc_attr( sprintf( __( 'Edit &amp;#8220;%s&amp;#8221;' ), $name ) ) . '&quot;&gt;' . $name . '&lt;/a&gt;&lt;/strong&gt;&lt;br /&gt;';
</span><ins>+
</ins><span class="cx">                                         $actions = array();
</span><span class="cx">                                         if ( current_user_can( $tax-&gt;cap-&gt;edit_terms ) ) {
</span><span class="cx">                                                 $actions['edit'] = '&lt;a href=&quot;' . $edit_link . '&quot;&gt;' . __( 'Edit' ) . '&lt;/a&gt;';
</span><span class="lines">@@ -1575,15 +1554,7 @@
</span><span class="cx">                                         $actions = apply_filters( 'tag_row_actions', $actions, $tag );
</span><span class="cx">                                         $actions = apply_filters( &quot;${taxonomy}_row_actions&quot;, $actions, $tag );
</span><span class="cx"> 
</span><del>-                                        $action_count = count( $actions );
-                                        $i = 0;
-                                        $out .= '&lt;div class=&quot;row-actions&quot;&gt;';
-                                        foreach ( $actions as $action =&gt; $link ) {
-                                                ++$i;
-                                                ( $i == $action_count ) ? $sep = '' : $sep = ' | ';
-                                                $out .= &quot;&lt;span class='$action'&gt;$link$sep&lt;/span&gt;&quot;;
-                                        }
-                                        $out .= '&lt;/div&gt;';
</del><ins>+                                        $out .= $this-&gt;row_actions( $actions );
</ins><span class="cx">                                         $out .= '&lt;div class=&quot;hidden&quot; id=&quot;inline_' . $qe_data-&gt;term_id . '&quot;&gt;';
</span><span class="cx">                                         $out .= '&lt;div class=&quot;name&quot;&gt;' . $qe_data-&gt;name . '&lt;/div&gt;';
</span><span class="cx">                                         $out .= '&lt;div class=&quot;slug&quot;&gt;' . apply_filters( 'editable_slug', $qe_data-&gt;slug ) . '&lt;/div&gt;';
</span><span class="lines">@@ -1844,15 +1815,7 @@
</span><span class="cx">                         if ( is_multisite() &amp;&amp; get_current_user_id() != $user_object-&gt;ID &amp;&amp; current_user_can( 'remove_user', $user_object-&gt;ID ) )
</span><span class="cx">                                 $actions['remove'] = &quot;&lt;a class='submitdelete' href='&quot; . wp_nonce_url( &quot;users.php?action=remove&amp;amp;user=$user_object-&gt;ID&quot;, 'bulk-users' ) . &quot;'&gt;&quot; . __( 'Remove' ) . &quot;&lt;/a&gt;&quot;;
</span><span class="cx">                         $actions = apply_filters( 'user_row_actions', $actions, $user_object );
</span><del>-                        $action_count = count( $actions );
-                        $i = 0;
-                        $edit .= '&lt;div class=&quot;row-actions&quot;&gt;';
-                        foreach ( $actions as $action =&gt; $link ) {
-                                ++$i;
-                                ( $i == $action_count ) ? $sep = '' : $sep = ' | ';
-                                $edit .= &quot;&lt;span class='$action'&gt;$link$sep&lt;/span&gt;&quot;;
-                        }
-                        $edit .= '&lt;/div&gt;';
</del><ins>+                        $edit .= $this-&gt;row_actions( $actions );
</ins><span class="cx"> 
</span><span class="cx">                         // Set up the checkbox ( because the user is editable, otherwise its empty )
</span><span class="cx">                         $checkbox = &quot;&lt;input type='checkbox' name='users[]' id='user_{$user_object-&gt;ID}' class='$role' value='{$user_object-&gt;ID}' /&gt;&quot;;
</span><span class="lines">@@ -2460,18 +2423,12 @@
</span><span class="cx"> 
</span><span class="cx">                                         case 'name':
</span><span class="cx">                                                 echo &quot;&lt;td $attributes&gt;&lt;strong&gt;&lt;a class='row-title' href='$edit_link' title='&quot; . esc_attr( sprintf( __( 'Edit &amp;#8220;%s&amp;#8221;' ), $link-&gt;link_name ) ) . &quot;'&gt;$link-&gt;link_name&lt;/a&gt;&lt;/strong&gt;&lt;br /&gt;&quot;;
</span><ins>+
</ins><span class="cx">                                                 $actions = array();
</span><span class="cx">                                                 $actions['edit'] = '&lt;a href=&quot;' . $edit_link . '&quot;&gt;' . __( 'Edit' ) . '&lt;/a&gt;';
</span><span class="cx">                                                 $actions['delete'] = &quot;&lt;a class='submitdelete' href='&quot; . wp_nonce_url( &quot;link.php?action=delete&amp;amp;link_id=$link-&gt;link_id&quot;, 'delete-bookmark_' . $link-&gt;link_id ) . &quot;' onclick=\&quot;if ( confirm( '&quot; . esc_js( sprintf( __( &quot;You are about to delete this link '%s'\n  'Cancel' to stop, 'OK' to delete.&quot; ), $link-&gt;link_name ) ) . &quot;' ) ) { return true;}return false;\&quot;&gt;&quot; . __( 'Delete' ) . &quot;&lt;/a&gt;&quot;;
</span><del>-                                                $action_count = count( $actions );
-                                                $i = 0;
-                                                echo '&lt;div class=&quot;row-actions&quot;&gt;';
-                                                foreach ( $actions as $action =&gt; $linkaction ) {
-                                                        ++$i;
-                                                        ( $i == $action_count ) ? $sep = '' : $sep = ' | ';
-                                                        echo &quot;&lt;span class='$action'&gt;$linkaction$sep&lt;/span&gt;&quot;;
-                                                }
-                                                echo '&lt;/div&gt;';
</del><ins>+                                                echo $this-&gt;row_actions( $actions );
+
</ins><span class="cx">                                                 echo '&lt;/td&gt;';
</span><span class="cx">                                                 break;
</span><span class="cx">                                         case 'url':
</span><span class="lines">@@ -2727,11 +2684,8 @@
</span><span class="cx"> 
</span><span class="cx">                                                         $actions['visit']        = &quot;&lt;span class='view'&gt;&lt;a href='&quot; . esc_url( get_home_url( $blog['blog_id'] ) ) . &quot;' rel='permalink'&gt;&quot; . __( 'Visit' ) . '&lt;/a&gt;&lt;/span&gt;';
</span><span class="cx">                                                         $actions = array_filter( $actions );
</span><del>-                                                        if ( count( $actions ) ) : ?&gt;
-                                                        &lt;div class=&quot;row-actions&quot;&gt;
-                                                                &lt;?php echo implode( ' | ', $actions ); ?&gt;
-                                                        &lt;/div&gt;
-                                                        &lt;?php endif; ?&gt;
</del><ins>+                                                        echo $this-&gt;row_actions( $actions );
+                                        ?&gt;
</ins><span class="cx">                                                 &lt;/td&gt;
</span><span class="cx">                                         &lt;?php
</span><span class="cx">                                         break;
</span><span class="lines">@@ -2964,11 +2918,16 @@
</span><span class="cx">                                                                 echo ' - ' . __( 'Super admin' );
</span><span class="cx">                                                         ?&gt;&lt;/strong&gt;
</span><span class="cx">                                                         &lt;br/&gt;
</span><del>-                                                        &lt;div class=&quot;row-actions&quot;&gt;
-                                                                &lt;span class=&quot;edit&quot;&gt;&lt;a href=&quot;&lt;?php echo esc_url( admin_url( $edit_link ) ); ?&gt;&quot;&gt;&lt;?php _e( 'Edit' ); ?&gt;&lt;/a&gt;&lt;/span&gt;
-                                                                &lt;?php if ( ! in_array( $user['user_login'], $super_admins ) ) { ?&gt;
-                                                                | &lt;span class=&quot;delete&quot;&gt;&lt;a href=&quot;&lt;?php echo $delete        = esc_url( network_admin_url( add_query_arg( '_wp_http_referer', urlencode( stripslashes( $_SERVER['REQUEST_URI'] ) ), wp_nonce_url( 'edit.php', 'deleteuser' ) . '&amp;amp;action=deleteuser&amp;amp;id=' . $user['ID'] ) ) ); ?&gt;&quot; class=&quot;delete&quot;&gt;&lt;?php _e( 'Delete' ); ?&gt;&lt;/a&gt;&lt;/span&gt;
-                                                                &lt;?php } ?&gt;
</del><ins>+                                                        &lt;?php
+                                                                $actions = array();
+                                                                $actions['edit'] = '&lt;a href=&quot;' . esc_url( admin_url( $edit_link ) ) . '&quot;&gt;' . __( 'Edit' ) . '&lt;/a&gt;';
+
+                                                                if ( ! in_array( $user['user_login'], $super_admins ) ) {
+                                                                        $actions['delete'] = '&lt;a href=&quot;' . $delete = esc_url( network_admin_url( add_query_arg( '_wp_http_referer', urlencode( stripslashes( $_SERVER['REQUEST_URI'] ) ), wp_nonce_url( 'edit.php', 'deleteuser' ) . '&amp;amp;action=deleteuser&amp;amp;id=' . $user['ID'] ) ) ) . '&quot; class=&quot;delete&quot;&gt;' . __( 'Delete' ) . '&lt;/a&gt;';
+                                                                }
+
+                                                                echo $this-&gt;row_actions( $actions );
+                                                        ?&gt;
</ins><span class="cx">                                                         &lt;/div&gt;
</span><span class="cx">                                                 &lt;/td&gt;
</span><span class="cx">                                         &lt;?php
</span></span></pre></div>
<a id="trunkwpadminincludeslisttablephp"></a>
<div class="modfile"><h4>Modified: trunk/wp-admin/includes/list-table.php (15570 => 15571)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/wp-admin/includes/list-table.php        2010-09-05 15:30:10 UTC (rev 15570)
+++ trunk/wp-admin/includes/list-table.php        2010-09-05 16:53:59 UTC (rev 15571)
</span><span class="lines">@@ -216,6 +216,33 @@
</span><span class="cx">         }
</span><span class="cx"> 
</span><span class="cx">         /**
</span><ins>+         * Generate row actions div
+         *
+         * @since 3.1.0
+         * @access protected
+         *
+         * @param array $actions The list of actions
+         * @return string
+         */
+        function row_actions( $actions ) {
+                $action_count = count( $actions );
+                $i = 0;
+
+                if ( !$action_count )
+                        return '';
+
+                $out = '&lt;div class=&quot;row-actions&quot;&gt;';
+                foreach ( $actions as $action =&gt; $link ) {
+                        ++$i;
+                        ( $i == $action_count ) ? $sep = '' : $sep = ' | ';
+                        $out .= &quot;&lt;span class='$action'&gt;$link$sep&lt;/span&gt;&quot;;
+                }
+                $out .= '&lt;/div&gt;';
+
+                return $out;
+        }
+
+        /**
</ins><span class="cx">          * Display a monthly dropdown for filtering items
</span><span class="cx">          *
</span><span class="cx">          * @since 3.1.0
</span></span></pre>
</div>
</div>

</body>
</html>