Index: wp-admin/categories.php
===================================================================
--- wp-admin/categories.php	(revision 9338)
+++ wp-admin/categories.php	(working copy)
@@ -183,11 +183,7 @@
 ?>
 
 <div class="alignleft actions">
-<select name="action">
-<option value="" selected="selected"><?php _e('Actions'); ?></option>
-<option value="delete"><?php _e('Delete'); ?></option>
-</select>
-<input type="submit" value="<?php _e('Apply'); ?>" name="doaction" id="doaction" class="button-secondary action" />
+<?php print_table_actions( array('' => __('Actions'), 'delete' => __('Delete') ), '', 'action', 'doaction', 'doaction', '', 'categories'); ?>
 <?php wp_nonce_field('bulk-categories'); ?>
 </div>
 
@@ -223,11 +219,7 @@
 ?>
 
 <div class="alignleft actions">
-<select name="action2">
-<option value="" selected="selected"><?php _e('Actions'); ?></option>
-<option value="delete"><?php _e('Delete'); ?></option>
-</select>
-<input type="submit" value="<?php _e('Apply'); ?>" name="doaction2" id="doaction2" class="button-secondary action" />
+<?php print_table_actions( array('' => __('Actions'), 'delete' => __('Delete') ), '', 'action2', 'doaction2', 'doaction2', '', 'categories'); ?>
 <?php wp_nonce_field('bulk-categories'); ?>
 </div>
 
Index: wp-admin/edit-comments.php
===================================================================
--- wp-admin/edit-comments.php	(revision 9338)
+++ wp-admin/edit-comments.php	(working copy)
@@ -198,20 +198,18 @@
 ?>
 
 <div class="alignleft actions">
-<select name="action">
-<option value="-1" selected="selected"><?php _e('Actions') ?></option>
-<?php if ( empty($comment_status) || 'approved' == $comment_status ): ?>
-<option value="unapprove"><?php _e('Unapprove'); ?></option>
-<?php endif; ?>
-<?php if ( empty($comment_status) || 'moderated' == $comment_status ): ?>
-<option value="approve"><?php _e('Approve'); ?></option>
-<?php endif; ?>
-<?php if ( 'spam' != $comment_status ): ?>
-<option value="markspam"><?php _e('Mark as Spam'); ?></option>
-<?php endif; ?>
-<option value="delete"><?php _e('Delete'); ?></option>
-</select>
-<input type="submit" name="doaction" id="doaction" value="<?php _e('Apply'); ?>" class="button-secondary apply" />
+		<?php
+		$actions = array('-1' => __('Actions') );
+		if ( empty($comment_status) || 'approved' == $comment_status )
+			$actions['unapprove'] = __('Unapprove');
+		if ( empty($comment_status) || 'moderated' == $comment_status )
+			$actions['approve'] = __('Approve');
+		if ( 'spam' != $comment_status )
+			$actions['markspam'] = __('Mark as Spam');
+		$actions['delete'] = __('Delete');
+
+		print_table_actions( $actions, '-1', 'action', 'doaction', 'doaction', '', 'comments');
+		?>
 <?php wp_nonce_field('bulk-comments'); ?>
 
 <?php if ( $comment_status ) echo "<input type='hidden' name='comment_status' value='$comment_status' />\n"; ?>
@@ -284,21 +282,7 @@
 ?>
 
 <div class="alignleft actions">
-<select name="action2">
-<option value="-1" selected="selected"><?php _e('Actions') ?></option>
-<?php if ( empty($comment_status) || 'approved' == $comment_status ): ?>
-<option value="unapprove"><?php _e('Unapprove'); ?></option>
-<?php endif; ?>
-<?php if ( empty($comment_status) || 'moderated' == $comment_status ): ?>
-<option value="approve"><?php _e('Approve'); ?></option>
-<?php endif; ?>
-<?php if ( 'spam' != $comment_status ): ?>
-<option value="markspam"><?php _e('Mark as Spam'); ?></option>
-<?php endif; ?>
-<option value="delete"><?php _e('Delete'); ?></option>
-</select>
-<input type="submit" name="doaction2" id="doaction2" value="<?php _e('Apply'); ?>" class="button-secondary apply" />
-
+<?php print_table_actions( $actions, '-1', 'action2', 'doaction2', 'doaction2', '', 'comments'); ?>
 <?php if ( 'spam' == $comment_status ) { ?>
 <input type="submit" name="delete_all_spam2" value="<?php _e('Delete All Spam'); ?>" class="button-secondary apply" />
 <?php } ?>
Index: wp-admin/edit-link-categories.php
===================================================================
--- wp-admin/edit-link-categories.php	(revision 9338)
+++ wp-admin/edit-link-categories.php	(working copy)
@@ -112,11 +112,7 @@
 ?>
 
 <div class="alignleft actions">
-<select name="action">
-<option value="" selected="selected"><?php _e('Actions'); ?></option>
-<option value="delete"><?php _e('Delete'); ?></option>
-</select>
-<input type="submit" value="<?php _e('Apply'); ?>" name="doaction" id="doaction" class="button-secondary action" />
+<?php print_table_actions( array('' => __('Actions'), 'delete' => __('Delete') ), '', 'action', 'doaction', 'doaction', '', 'link_categories'); ?>
 <?php wp_nonce_field('bulk-link-categories'); ?>
 </div>
 
@@ -168,11 +164,7 @@
 ?>
 
 <div class="alignleft actions">
-<select name="action2">
-<option value="" selected="selected"><?php _e('Actions'); ?></option>
-<option value="delete"><?php _e('Delete'); ?></option>
-</select>
-<input type="submit" value="<?php _e('Apply'); ?>" name="doaction2" id="doaction2" class="button-secondary action" />
+<?php print_table_actions( array('' => __('Actions'), 'delete' => __('Delete') ), '', 'action2', 'doaction2', 'doaction2', '', 'link_categories'); ?>
 </div>
 
 <br class="clear" />
Index: wp-admin/edit-pages.php
===================================================================
--- wp-admin/edit-pages.php	(revision 9338)
+++ wp-admin/edit-pages.php	(working copy)
@@ -202,12 +202,7 @@
 ?>
 
 <div class="alignleft actions">
-<select name="action">
-<option value="-1" selected="selected"><?php _e('Actions'); ?></option>
-<option value="edit"><?php _e('Edit'); ?></option>
-<option value="delete"><?php _e('Delete'); ?></option>
-</select>
-<input type="submit" value="<?php _e('Apply'); ?>" name="doaction" id="doaction" class="button-secondary action" />
+<?php print_table_actions( array('-1' => __('Actions'), 'edit' => __('Edit'), 'delete' => __('Delete') ), '-1', 'action', 'doaction', 'doaction', '', 'pages'); ?>
 <?php wp_nonce_field('bulk-pages'); ?>
 </div>
 
@@ -247,12 +242,7 @@
 ?>
 
 <div class="alignleft actions">
-<select name="action2">
-<option value="-1" selected="selected"><?php _e('Actions'); ?></option>
-<option value="edit"><?php _e('Edit'); ?></option>
-<option value="delete"><?php _e('Delete'); ?></option>
-</select>
-<input type="submit" value="<?php _e('Apply'); ?>" name="doaction2" id="doaction2" class="button-secondary action" />
+<?php print_table_actions( array('-1' => __('Actions'), 'edit' => __('Edit'), 'delete' => __('Delete') ), '-1', 'action2', 'doaction2', 'doaction2', '', 'pages'); ?>
 </div>
 
 <br class="clear" />
@@ -313,4 +303,4 @@
 
 </div>
 
-<?php include('admin-footer.php'); ?>
\ No newline at end of file
+<?php include('admin-footer.php'); ?>
Index: wp-admin/edit-tags.php
===================================================================
--- wp-admin/edit-tags.php	(revision 9338)
+++ wp-admin/edit-tags.php	(working copy)
@@ -178,11 +178,7 @@
 ?>
 
 <div class="alignleft actions">
-<select name="action">
-<option value="" selected="selected"><?php _e('Actions'); ?></option>
-<option value="delete"><?php _e('Delete'); ?></option>
-</select>
-<input type="submit" value="<?php _e('Apply'); ?>" name="doaction" id="doaction" class="button-secondary action" />
+<?php print_table_actions( array('' => __('Actions'), 'delete' => __('Delete') ), '', 'action', 'doaction', 'doaction', '', 'tags'); ?>
 <?php wp_nonce_field('bulk-tags'); ?>
 </div>
 
@@ -221,11 +217,7 @@
 ?>
 
 <div class="alignleft actions">
-<select name="action2">
-<option value="" selected="selected"><?php _e('Actions'); ?></option>
-<option value="delete"><?php _e('Delete'); ?></option>
-</select>
-<input type="submit" value="<?php _e('Apply'); ?>" name="doaction2" id="doaction2" class="button-secondary action" />
+<?php print_table_actions( array('' => __('Actions'), 'delete' => __('Delete') ), '', 'action2', 'doaction2', 'doaction2', '', 'tags'); ?>
 </div>
 
 <br class="clear" />
Index: wp-admin/edit.php
===================================================================
--- wp-admin/edit.php	(revision 9338)
+++ wp-admin/edit.php	(working copy)
@@ -179,12 +179,7 @@
 ?>
 
 <div class="alignleft actions">
-<select name="action">
-<option value="-1" selected="selected"><?php _e('Actions'); ?></option>
-<option value="edit"><?php _e('Edit'); ?></option>
-<option value="delete"><?php _e('Delete'); ?></option>
-</select>
-<input type="submit" value="<?php _e('Apply'); ?>" name="doaction" id="doaction" class="button-secondary action" />
+<?php print_table_actions( array('-1' => __('Actions'), 'edit' => __('Edit'), 'delete' => __('Delete') ), '-1', 'doaction', 'doaction', '', 'posts'); ?>
 <?php wp_nonce_field('bulk-posts'); ?>
 
 <?php // view filters
@@ -254,12 +249,7 @@
 ?>
 
 <div class="alignleft actions">
-<select name="action2">
-<option value="-1" selected="selected"><?php _e('Actions'); ?></option>
-<option value="edit"><?php _e('Edit'); ?></option>
-<option value="delete"><?php _e('Delete'); ?></option>
-</select>
-<input type="submit" value="<?php _e('Apply'); ?>" name="doaction2" id="doaction2" class="button-secondary action" />
+<?php print_table_actions( array('' => __('Actions'), 'edit' => __('Edit'), 'delete' => __('Delete') ), '-1', 'action2', 'doaction2', 'doaction2', '', 'posts'); ?>
 <br class="clear" />
 </div>
 <br class="clear" />
Index: wp-admin/includes/template.php
===================================================================
--- wp-admin/includes/template.php	(revision 9338)
+++ wp-admin/includes/template.php	(working copy)
@@ -3090,4 +3090,34 @@
 	}
 }
 
+/**
+ * Table header dropdown list
+ *
+ * @since 2.7.0
+ * @param array $actions assoc. array of actions for the list
+ * @param string $current the keyname of the currently selected item
+ * @param string $selectname the name of the selection field
+ * @param string $buttonname the name attribute of the submit button
+ * @param string $buttonid the ID attribute of the submit button
+ * @param string $buttontext the lable on the submit button
+ * @param string $table the name of the table the actions apply to, Actions are run through a filter 'table_actions_$table'
+ *
+ */
+function print_table_actions($actions, $current, $selectname, $buttonname, $buttonid, $buttontext = '', $table = '') {
+	if ( empty($buttontext) )
+		$buttontext = __('Apply');
+	if ( !empty($table) )
+		$actions = apply_filters('table_actions-$table', $actions, $current, $selectname, $buttonname, $buttonid, $buttontext, $table);
+	$actions = apply_filters('table_actions', $actions, $current, $selectname, $buttonname, $buttonid, $buttontext, $table);
+	if ( count($actions) > 0 ) {
+		echo "<select name='$selectname' class='select-action'>";
+		foreach ( $actions as $value => $text ) {
+			$selected = ($current == $value) ? ' selected="selected"' : '';
+			echo "<option value='$value' $selected>$text</option>";
+		}
+		echo '</select>';
+		echo "<input type='submit' name='$buttonname' id='$buttonid' value='$buttontext' class='button-secondary action apply' />";
+	}
+}
+
 ?>
Index: wp-admin/link-manager.php
===================================================================
--- wp-admin/link-manager.php	(revision 9338)
+++ wp-admin/link-manager.php	(working copy)
@@ -110,11 +110,7 @@
 <div class="tablenav">
 
 <div class="alignleft actions">
-<select name="action">
-<option value="" selected="selected"><?php _e('Actions'); ?></option>
-<option value="delete"><?php _e('Delete'); ?></option>
-</select>
-<input type="submit" value="<?php _e('Apply'); ?>" name="doaction" id="doaction" class="button-secondary action" />
+<?php print_table_actions( array('' => __('Actions'), 'delete' => __('Delete') ), '', 'action', 'doaction', 'doaction', '', 'links'); ?>
 
 <?php
 $categories = get_terms('link_category', "hide_empty=1");
@@ -263,11 +259,7 @@
 <div class="tablenav">
 
 <div class="alignleft actions">
-<select name="action2">
-<option value="" selected="selected"><?php _e('Actions'); ?></option>
-<option value="delete"><?php _e('Delete'); ?></option>
-</select>
-<input type="submit" value="<?php _e('Apply'); ?>" name="doaction2" id="doaction2" class="button-secondary action" />
+<?php print_table_actions( array('' => __('Actions'), 'delete' => __('Delete') ), '', 'action2', 'doaction2', 'doaction2', '', 'links'); ?>
 </div>
 
 <br class="clear" />
Index: wp-admin/plugins.php
===================================================================
--- wp-admin/plugins.php	(revision 9338)
+++ wp-admin/plugins.php	(working copy)
@@ -9,17 +9,7 @@
 /** WordPress Administration Bootstrap */
 require_once('admin.php');
 
-$action = '';
-foreach( array('activate-selected', 'deactivate-selected', 'delete-selected', 'clear-recent-list') as $action_key ) {
-	if( isset($_POST[$action_key]) ) {
-		$action = $action_key;
-		break;
-	}
-}
-
-if( isset($_REQUEST['action']) && !empty($_REQUEST['action']) )
-	$action = $_REQUEST['action'];
-
+$action = isset($_REQUEST['action']) && !empty($_REQUEST['action']) ? $_REQUEST['action'] : '';
 $plugin = isset($_REQUEST['plugin']) ? $_REQUEST['plugin'] : '';
 
 if( !empty($action) ) {
@@ -130,7 +120,7 @@
 				<p><?php _e('Are you sure you wish to delete these files?') ?></p>
 				<form method="post" action="<?php echo clean_url($_SERVER['REQUEST_URI']); ?>" style="display:inline;">
 					<input type="hidden" name="verify-delete" value="1" />
-					<input type="hidden" name="delete-selected" value="1" />
+					<input type="hidden" name="action" value="delete-selected" />
 					<?php
 						foreach ( (array)$plugins as $plugin )
 							echo '<input type="hidden" name="checked[]" value="' . attribute_escape($plugin) . '" />';
@@ -321,11 +311,7 @@
 
 <div class="tablenav">
 	<div class="alignleft actions">
-		<select name="action">
-			<option value="" selected="selected"><?php _e('Actions'); ?></option>
-			<option value="deactivate-selected"><?php _e('Deactivate'); ?></option>
-		</select>
-		<input type="submit" name="doaction_active" value="<?php _e('Apply'); ?>" class="button-secondary action" />
+		<?php print_table_actions( array('' => __('Actions'), 'deactivate-selected' => __('Deactivate') ), '', 'action', 'doaction_active', 'doaction_active', '', 'plugins_active') ?>
 	</div>
 </div>
 <div class="clear"></div>
@@ -343,15 +329,13 @@
 
 <div class="tablenav">
 	<div class="alignleft actions">
-		<select name="action">
-			<option value="" selected="selected"><?php _e('Actions'); ?></option>
-			<option value="activate-selected"><?php _e('Activate'); ?></option>
-<?php if( current_user_can('delete_plugins') ) : ?>
-			<option value="delete-selected"><?php _e('Delete'); ?></option>
-<?php endif; ?>
-		</select>
-		<input type="submit" value="<?php _e('Apply'); ?>" name="doaction_recent" class="button-secondary action" />
-		<input type="submit" name="clear-recent-list" value="<?php _e('Clear List') ?>" class="button-secondary" />
+		<?php
+		$actions = array('' => __('Actions'), 'activate-selected' => __('Activate') );
+		if( current_user_can('delete_plugins') )
+			$actions['delete-selected'] = __('Delete');
+		$actions['clear-recent-list'] = __('Clear List');
+		print_table_actions( $actions, '', 'action', 'doaction_recent', 'doaction_recent', '', 'plugins_recent')
+		?>
 	</div>
 </div>
 <div class="clear"></div>
@@ -366,10 +350,12 @@
 
 <div class="tablenav">
 	<div class="alignleft actions">
-		<input type="submit" name="activate-selected" value="<?php _e('Activate') ?>" class="button-secondary" />
-<?php if( current_user_can('delete_plugins') ) : ?>
-		<input type="submit" name="delete-selected" value="<?php _e('Delete') ?>" class="button-secondary" />
-<?php endif; ?>
+		<?php
+		$actions = array('' => __('Actions'), 'activate-selected' => __('Activate') );
+		if( current_user_can('delete_plugins') )
+			$actions['delete-selected'] = __('Delete');
+		print_table_actions( $actions, '', 'action', 'doaction_inactive', 'doaction_inactive', '', 'plugins_inactive')
+		?>
 	</div>
 </div>
 <div class="clear"></div>
Index: wp-admin/upload.php
===================================================================
--- wp-admin/upload.php	(revision 9338)
+++ wp-admin/upload.php	(working copy)
@@ -244,14 +244,12 @@
 ?>
 
 <div class="alignleft actions">
-<select name="action" class="select-action">
-<option value="-1" selected="selected"><?php _e('Actions'); ?></option>
-<option value="delete"><?php _e('Delete'); ?></option>
-<?php if ( isset($orphans) ) { ?>
-<option value="attach"><?php _e('Attach to a post'); ?></option>
-<?php } ?>
-</select>
-<input type="submit" value="<?php _e('Apply'); ?>" name="doaction" id="doaction" class="button-secondary action" />
+<?php
+	$actions = array('-1' => __('Actions'), 'delete' => __('Delete') );
+	if ( isset($orphans) )
+		$actions['attach'] = __('Attach to a post');
+	print_table_actions( $actions, '-1', 'action', 'doaction', 'doaction', '', 'media');
+?>
 <?php wp_nonce_field('bulk-media'); ?>
 
 <?php
@@ -394,14 +392,12 @@
 ?>
 
 <div class="alignleft actions">
-<select name="action2" class="select-action">
-<option value="-1" selected="selected"><?php _e('Actions'); ?></option>
-<option value="delete"><?php _e('Delete'); ?></option>
-<?php if ( isset($orphans) ) { ?>
-<option value="attach"><?php _e('Attach to a post'); ?></option>
-<?php } ?>
-</select>
-<input type="submit" value="<?php _e('Apply'); ?>" name="doaction2" id="doaction2" class="button-secondary action" />
+<?php
+	$actions = array('-1' => __('Actions'), 'delete' => __('Delete') );
+	if ( isset($orphans) )
+		$actions['attach'] = __('Attach to a post');
+	print_table_actions( $actions, '-1', 'action2', 'doaction2', 'doaction2', '', 'media');
+?>
 </div>
 
 <br class="clear" />
Index: wp-admin/users.php
===================================================================
--- wp-admin/users.php	(revision 9338)
+++ wp-admin/users.php	(working copy)
@@ -324,11 +324,7 @@
 <?php endif; ?>
 
 <div class="alignleft actions">
-<select name="action">
-<option value="" selected="selected"><?php _e('Actions'); ?></option>
-<option value="delete"><?php _e('Delete'); ?></option>
-</select>
-<input type="submit" value="<?php _e('Apply'); ?>" name="doaction" id="doaction" class="button-secondary action" />
+<?php print_table_actions( array('' => __('Actions'), 'delete' => __('Delete') ), '', 'action', 'doaction', 'doaction', '', 'users'); ?>
 <label class="hidden" for="new_role"><?php _e('Change role to&hellip;') ?></label><select name="new_role" id="new_role"><option value=''><?php _e('Change role to&hellip;') ?></option><?php wp_dropdown_roles(); ?></select>
 <input type="submit" value="<?php _e('Change'); ?>" name="changeit" class="button-secondary" />
 <?php wp_nonce_field('bulk-users'); ?>
@@ -390,11 +386,7 @@
 <?php endif; ?>
 
 <div class="alignleft actions">
-<select name="action2">
-<option value="" selected="selected"><?php _e('Actions'); ?></option>
-<option value="delete"><?php _e('Delete'); ?></option>
-</select>
-<input type="submit" value="<?php _e('Apply'); ?>" name="doaction2" id="doaction2" class="button-secondary action" />
+<?php print_table_actions( array('' => __('Actions'), 'delete' => __('Delete') ), '', 'action2', 'doaction2', 'doaction2', '', 'users'); ?>
 </div>
 
 <br class="clear" />
