Index: wp-includes/admin-bar.php
===================================================================
--- wp-includes/admin-bar.php	(revision 16600)
+++ wp-includes/admin-bar.php	(working copy)
@@ -135,10 +135,26 @@
 		if ( ! isset( $blog->visible ) || $blog->visible === true ) {
 			$wp_admin_bar->add_menu( array( 'parent' => 'my-blogs', 'id' => 'blog-' . $blog->userblog_id, 'title' => $blavatar . $blogname,  'href' => get_admin_url($blog->userblog_id), ) );
 			$wp_admin_bar->add_menu( array( 'parent' => 'blog-' . $blog->userblog_id, 'id' => 'blog-' . $blog->userblog_id . '-d', 'title' => __( 'Dashboard' ), 'href' => get_admin_url($blog->userblog_id), ) );
-			$wp_admin_bar->add_menu( array( 'parent' => 'blog-' . $blog->userblog_id, 'id' => 'blog-' . $blog->userblog_id . '-n', 'title' => __( 'New Post' ), 'href' => get_admin_url($blog->userblog_id, 'post-new.php'), ) );
+			if ( current_user_can_for_blog( $blog->userblog_id, 'edit_posts' ) )
+				$wp_admin_bar->add_menu( array( 'parent' => 'blog-' . $blog->userblog_id, 'id' => 'blog-' . $blog->userblog_id . '-c', 'title' => __( 'Manage Comments' ), 'href' => get_admin_url($blog->userblog_id, 'edit-comments.php'), ) );
 
-			$wp_admin_bar->add_menu( array( 'parent' => 'blog-' . $blog->userblog_id, 'id' => 'blog-' . $blog->userblog_id . '-c', 'title' => __( 'Manage Comments' ), 'href' => get_admin_url($blog->userblog_id, 'edit-comments.php'), ) );
-			$wp_admin_bar->add_menu( array( 'parent' => 'blog-' . $blog->userblog_id, 'id' => 'blog-' . $blog->userblog_id . '-v', 'title' => __( 'Visit Site' ), 'href' => get_home_url($blog->userblog_id), ) );
+			
+			$actions = array();
+			foreach ( (array) get_post_types( array( 'show_ui' => true ), 'objects' ) as $ptype_obj ) {
+				if ( true !== $ptype_obj->show_in_menu || ! current_user_can_for_blog( $blog->userblog_id, $ptype_obj->cap->edit_posts ) )
+					continue;
+
+				$actions[ 'post-new.php?post_type=' . $ptype_obj->name ] = array( $ptype_obj->labels->singular_name, $ptype_obj->cap->edit_posts, 'new-' . $ptype_obj->name );
+			}
+
+			if ( ! empty( $actions ) ) {
+				$wp_admin_bar->add_menu( array( 'parent' => 'blog-' . $blog->userblog_id, 'id' => 'blog-' . $blog->userblog_id . '-n', 'title' => _x( 'Add New', 'admin bar menu group label' ), 'href' => '', ) );
+
+				foreach ( $actions as $link => $action )
+					$wp_admin_bar->add_menu( array( 'parent' => 'blog-' . $blog->userblog_id . '-n', 'id' => 'blog-' . $blog->userblog_id . '-' . $action[2], 'title' => $action[0], 'href' => admin_url($link) ) );
+			}
+
+		$wp_admin_bar->add_menu( array( 'parent' => 'blog-' . $blog->userblog_id, 'id' => 'blog-' . $blog->userblog_id . '-v', 'title' => __( 'Visit Site' ), 'href' => get_home_url($blog->userblog_id), ) );
 		}
 	}
 }
