<!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->hierarchical_display ? 'page_row_actions' : 'post_row_actions', $actions, $post );
</span><del>-                                $action_count = count( $actions );
-                                $i = 0;
-                                echo '<div class="row-actions">';
-                                foreach ( $actions as $action => $link ) {
-                                        ++$i;
-                                        ( $i == $action_count ) ? $sep = '' : $sep = ' | ';
-                                        echo "<span class='$action'>$link$sep</span>";
-                                }
-                                echo '</div>';
</del><ins>+                                echo $this->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'] = '<a href="' . get_permalink( $post->ID ) . '" title="' . esc_attr( sprintf( __( 'View &#8220;%s&#8221;' ), $title ) ) . '" rel="permalink">' . __( 'View' ) . '</a>';
</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 '<div class="row-actions">';
-                foreach ( $actions as $action => $link ) {
-                        $sep = ( ++$i == $action_count ) ? '' : ' | ';
-                        echo "<span class='$action'>$link$sep</span>";
-                }
-                echo '</div>';
</del><ins>+                echo $this->row_actions( $actions );
</ins><span class="cx"> ?>
</span><span class="cx">                 </td>
</span><span class="cx"> <?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"> ?>
</span><del>-                        <div class="row-actions">
</del><span class="cx"> <?php
</span><span class="cx">                         $actions = array();
</span><span class="cx">                         if ( current_user_can( 'edit_post', $post->ID ) )
</span><span class="lines">@@ -1285,14 +1269,8 @@
</span><span class="cx">                                 $actions['attach'] = '<a href="#the-list" onclick="findPosts.open( \'media[]\',\''.$post->ID.'\' );return false;" class="hide-if-no-js">'.__( 'Attach' ).'</a>';
</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 => $link ) {
-                                $sep = ( ++$i == $action_count ) ? '' : ' | ';
-                                echo "<span class='$action'>$link$sep</span>";
-                        }
</del><ins>+                        echo $this->row_actions( $actions );
</ins><span class="cx"> ?>
</span><del>-                        </div>
</del><span class="cx">                 </td>
</span><span class="cx">                 <td class="author column-author">
</span><span class="cx">                         <?php $author = get_userdata( $post->post_author ); echo $author->display_name; ?>
</span><span class="lines">@@ -1564,6 +1542,7 @@
</span><span class="cx">                                         break;
</span><span class="cx">                                 case 'name':
</span><span class="cx">                                         $out .= '<td ' . $attributes . '><strong><a class="row-title" href="' . $edit_link . '" title="' . esc_attr( sprintf( __( 'Edit &#8220;%s&#8221;' ), $name ) ) . '">' . $name . '</a></strong><br />';
</span><ins>+
</ins><span class="cx">                                         $actions = array();
</span><span class="cx">                                         if ( current_user_can( $tax->cap->edit_terms ) ) {
</span><span class="cx">                                                 $actions['edit'] = '<a href="' . $edit_link . '">' . __( 'Edit' ) . '</a>';
</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( "${taxonomy}_row_actions", $actions, $tag );
</span><span class="cx">
</span><del>-                                        $action_count = count( $actions );
-                                        $i = 0;
-                                        $out .= '<div class="row-actions">';
-                                        foreach ( $actions as $action => $link ) {
-                                                ++$i;
-                                                ( $i == $action_count ) ? $sep = '' : $sep = ' | ';
-                                                $out .= "<span class='$action'>$link$sep</span>";
-                                        }
-                                        $out .= '</div>';
</del><ins>+                                        $out .= $this->row_actions( $actions );
</ins><span class="cx">                                         $out .= '<div class="hidden" id="inline_' . $qe_data->term_id . '">';
</span><span class="cx">                                         $out .= '<div class="name">' . $qe_data->name . '</div>';
</span><span class="cx">                                         $out .= '<div class="slug">' . apply_filters( 'editable_slug', $qe_data->slug ) . '</div>';
</span><span class="lines">@@ -1844,15 +1815,7 @@
</span><span class="cx">                         if ( is_multisite() && get_current_user_id() != $user_object->ID && current_user_can( 'remove_user', $user_object->ID ) )
</span><span class="cx">                                 $actions['remove'] = "<a class='submitdelete' href='" . wp_nonce_url( "users.php?action=remove&amp;user=$user_object->ID", 'bulk-users' ) . "'>" . __( 'Remove' ) . "</a>";
</span><span class="cx">                         $actions = apply_filters( 'user_row_actions', $actions, $user_object );
</span><del>-                        $action_count = count( $actions );
-                        $i = 0;
-                        $edit .= '<div class="row-actions">';
-                        foreach ( $actions as $action => $link ) {
-                                ++$i;
-                                ( $i == $action_count ) ? $sep = '' : $sep = ' | ';
-                                $edit .= "<span class='$action'>$link$sep</span>";
-                        }
-                        $edit .= '</div>';
</del><ins>+                        $edit .= $this->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 = "<input type='checkbox' name='users[]' id='user_{$user_object->ID}' class='$role' value='{$user_object->ID}' />";
</span><span class="lines">@@ -2460,18 +2423,12 @@
</span><span class="cx">
</span><span class="cx">                                         case 'name':
</span><span class="cx">                                                 echo "<td $attributes><strong><a class='row-title' href='$edit_link' title='" . esc_attr( sprintf( __( 'Edit &#8220;%s&#8221;' ), $link->link_name ) ) . "'>$link->link_name</a></strong><br />";
</span><ins>+
</ins><span class="cx">                                                 $actions = array();
</span><span class="cx">                                                 $actions['edit'] = '<a href="' . $edit_link . '">' . __( 'Edit' ) . '</a>';
</span><span class="cx">                                                 $actions['delete'] = "<a class='submitdelete' href='" . wp_nonce_url( "link.php?action=delete&amp;link_id=$link->link_id", 'delete-bookmark_' . $link->link_id ) . "' onclick=\"if ( confirm( '" . esc_js( sprintf( __( "You are about to delete this link '%s'\n 'Cancel' to stop, 'OK' to delete." ), $link->link_name ) ) . "' ) ) { return true;}return false;\">" . __( 'Delete' ) . "</a>";
</span><del>-                                                $action_count = count( $actions );
-                                                $i = 0;
-                                                echo '<div class="row-actions">';
-                                                foreach ( $actions as $action => $linkaction ) {
-                                                        ++$i;
-                                                        ( $i == $action_count ) ? $sep = '' : $sep = ' | ';
-                                                        echo "<span class='$action'>$linkaction$sep</span>";
-                                                }
-                                                echo '</div>';
</del><ins>+                                                echo $this->row_actions( $actions );
+
</ins><span class="cx">                                                 echo '</td>';
</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']        = "<span class='view'><a href='" . esc_url( get_home_url( $blog['blog_id'] ) ) . "' rel='permalink'>" . __( 'Visit' ) . '</a></span>';
</span><span class="cx">                                                         $actions = array_filter( $actions );
</span><del>-                                                        if ( count( $actions ) ) : ?>
-                                                        <div class="row-actions">
-                                                                <?php echo implode( ' | ', $actions ); ?>
-                                                        </div>
-                                                        <?php endif; ?>
</del><ins>+                                                        echo $this->row_actions( $actions );
+                                        ?>
</ins><span class="cx">                                                 </td>
</span><span class="cx">                                         <?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">                                                         ?></strong>
</span><span class="cx">                                                         <br/>
</span><del>-                                                        <div class="row-actions">
-                                                                <span class="edit"><a href="<?php echo esc_url( admin_url( $edit_link ) ); ?>"><?php _e( 'Edit' ); ?></a></span>
-                                                                <?php if ( ! in_array( $user['user_login'], $super_admins ) ) { ?>
-                                                                | <span class="delete"><a href="<?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;action=deleteuser&amp;id=' . $user['ID'] ) ) ); ?>" class="delete"><?php _e( 'Delete' ); ?></a></span>
-                                                                <?php } ?>
</del><ins>+                                                        <?php
+                                                                $actions = array();
+                                                                $actions['edit'] = '<a href="' . esc_url( admin_url( $edit_link ) ) . '">' . __( 'Edit' ) . '</a>';
+
+                                                                if ( ! in_array( $user['user_login'], $super_admins ) ) {
+                                                                        $actions['delete'] = '<a href="' . $delete = esc_url( network_admin_url( add_query_arg( '_wp_http_referer', urlencode( stripslashes( $_SERVER['REQUEST_URI'] ) ), wp_nonce_url( 'edit.php', 'deleteuser' ) . '&amp;action=deleteuser&amp;id=' . $user['ID'] ) ) ) . '" class="delete">' . __( 'Delete' ) . '</a>';
+                                                                }
+
+                                                                echo $this->row_actions( $actions );
+                                                        ?>
</ins><span class="cx">                                                         </div>
</span><span class="cx">                                                 </td>
</span><span class="cx">                                         <?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 = '<div class="row-actions">';
+                foreach ( $actions as $action => $link ) {
+                        ++$i;
+                        ( $i == $action_count ) ? $sep = '' : $sep = ' | ';
+                        $out .= "<span class='$action'>$link$sep</span>";
+                }
+                $out .= '</div>';
+
+                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>