Index: wp-admin/edit.php
===================================================================
--- wp-admin/edit.php	(revision 17644)
+++ wp-admin/edit.php	(working copy)
@@ -20,7 +20,7 @@
 
 $post_type_object = get_post_type_object( $post_type );
 
-if ( !current_user_can($post_type_object->cap->edit_posts) )
+if ( !current_user_can($post_type_object->cap->create_posts) )
 	wp_die(__('Cheatin&#8217; uh?'));
 
 $wp_list_table = _get_list_table('WP_Posts_List_Table');
@@ -190,9 +190,16 @@
 ?>
 <div class="wrap">
 <?php screen_icon(); ?>
-<h2><?php echo esc_html( $post_type_object->labels->name ); ?> <a href="<?php echo $post_new_file ?>" class="button add-new-h2"><?php echo esc_html($post_type_object->labels->add_new); ?></a> <?php
-if ( isset($_REQUEST['s']) && $_REQUEST['s'] )
-	printf( '<span class="subtitle">' . __('Search results for &#8220;%s&#8221;') . '</span>', get_search_query() ); ?>
+<h2>
+    <?php
+        echo esc_html( $post_type_object->labels->name );
+
+        if( current_user_can( $post_type_object->cap->create_posts ) )
+            echo '<a href="' . $post_new_file . '" class="button add-new-h2">' . esc_html( $post_type_object->labels->add_new ) . '</a>';
+
+        if ( isset($_REQUEST['s']) && $_REQUEST['s'] )
+                printf( '<span class="subtitle">' . __('Search results for &#8220;%s&#8221;') . '</span>', get_search_query() );
+    ?>
 </h2>
 
 <?php
Index: wp-admin/includes/dashboard.php
===================================================================
--- wp-admin/includes/dashboard.php	(revision 17644)
+++ wp-admin/includes/dashboard.php	(working copy)
@@ -65,7 +65,7 @@
 		wp_add_dashboard_widget( 'dashboard_plugins', __( 'Plugins' ), 'wp_dashboard_plugins' );
 
 	// QuickPress Widget
-	if ( is_blog_admin() && current_user_can('edit_posts') )
+	if ( is_blog_admin() && current_user_can('create_posts') )
 		wp_add_dashboard_widget( 'dashboard_quick_press', __( 'QuickPress' ), 'wp_dashboard_quick_press' );
 
 	// Recent Drafts
Index: wp-admin/includes/post.php
===================================================================
--- wp-admin/includes/post.php	(revision 17644)
+++ wp-admin/includes/post.php	(working copy)
@@ -520,11 +520,11 @@
 	else
 		$ptype = get_post_type_object('post');
 
-	if ( !current_user_can( $ptype->cap->edit_posts ) ) {
+	if ( !current_user_can( $ptype->cap->create_posts ) ) {
 		if ( 'page' == $ptype->name )
-			return new WP_Error( 'edit_pages', __( 'You are not allowed to create pages on this site.' ) );
+			return new WP_Error( 'create_pages', __( 'You are not allowed to create pages on this site.' ) );
 		else
-			return new WP_Error( 'edit_posts', __( 'You are not allowed to create posts or drafts on this site.' ) );
+			return new WP_Error( 'create_posts', __( 'You are not allowed to create posts or drafts on this site.' ) );
 	}
 
 	// Check for autosave collisions
Index: wp-admin/menu.php
===================================================================
--- wp-admin/menu.php	(revision 17644)
+++ wp-admin/menu.php	(working copy)
@@ -65,7 +65,7 @@
 $menu[5] = array( __('Posts'), 'edit_posts', 'edit.php', '', 'open-if-no-js menu-top menu-icon-post', 'menu-posts', 'div' );
 	$submenu['edit.php'][5]  = array( __('Posts'), 'edit_posts', 'edit.php' );
 	/* translators: add new post */
-	$submenu['edit.php'][10]  = array( _x('Add New', 'post'), 'edit_posts', 'post-new.php' );
+	$submenu['edit.php'][10]  = array( _x('Add New', 'post'), 'create_posts', 'post-new.php' );
 
 	$i = 15;
 	foreach ( get_taxonomies( array(), 'objects' ) as $tax ) {
@@ -127,9 +127,9 @@
 	while ( isset($menu[$ptype_menu_position]) || in_array($ptype_menu_position, $core_menu_positions) )
 		$ptype_menu_position++;
 
-	$menu[$ptype_menu_position] = array( esc_attr( $ptype_obj->labels->menu_name ), $ptype_obj->cap->edit_posts, "edit.php?post_type=$ptype", '', 'menu-top menu-icon-' . $ptype_class, 'menu-posts-' . $ptype_for_id, $menu_icon );
-	$submenu["edit.php?post_type=$ptype"][5]  = array( $ptype_obj->labels->menu_name, $ptype_obj->cap->edit_posts,  "edit.php?post_type=$ptype");
-	$submenu["edit.php?post_type=$ptype"][10]  = array( $ptype_obj->labels->add_new, $ptype_obj->cap->edit_posts, "post-new.php?post_type=$ptype" );
+	$menu[$ptype_menu_position] = array( esc_attr( $ptype_obj->labels->menu_name ), $ptype_obj->cap->create_posts, "edit.php?post_type=$ptype", '', 'menu-top menu-icon-' . $ptype_class, 'menu-posts-' . $ptype_for_id, $menu_icon );
+	$submenu["edit.php?post_type=$ptype"][5]  = array( $ptype_obj->labels->menu_name, $ptype_obj->cap->create_posts,  "edit.php?post_type=$ptype");
+	$submenu["edit.php?post_type=$ptype"][10]  = array( $ptype_obj->labels->add_new, $ptype_obj->cap->create_posts, "post-new.php?post_type=$ptype" );
 
 	$i = 15;
 	foreach ( get_taxonomies( array(), 'objects' ) as $tax ) {
@@ -206,8 +206,8 @@
 		$submenu['profile.php'][10] = array(__('Add New User'), 'promote_users', 'user-new.php');
 }
 
-$menu[75] = array( __('Tools'), 'edit_posts', 'tools.php', '', 'menu-top menu-icon-tools', 'menu-tools', 'div' );
-	$submenu['tools.php'][5] = array( __('Tools'), 'edit_posts', 'tools.php' );
+$menu[75] = array( __('Tools'), 'create_posts', 'tools.php', '', 'menu-top menu-icon-tools', 'menu-tools', 'div' );
+	$submenu['tools.php'][5] = array( __('Tools'), 'create_posts', 'tools.php' );
 	$submenu['tools.php'][10] = array( __('Import'), 'import', 'import.php' );
 	$submenu['tools.php'][15] = array( __('Export'), 'import', 'export.php' );
 	if ( is_multisite() && !is_main_site() )
Index: wp-admin/post-new.php
===================================================================
--- wp-admin/post-new.php	(revision 17644)
+++ wp-admin/post-new.php	(working copy)
@@ -30,7 +30,7 @@
 
 $editing = true;
 
-if ( ! current_user_can( $post_type_object->cap->edit_posts ) )
+if ( ! current_user_can( $post_type_object->cap->create_posts ) )
 	wp_die( __( 'Cheatin&#8217; uh?' ) );
 
 wp_enqueue_script('autosave');
Index: wp-admin/press-this.php
===================================================================
--- wp-admin/press-this.php	(revision 17644)
+++ wp-admin/press-this.php	(working copy)
@@ -13,7 +13,7 @@
 
 header('Content-Type: ' . get_option('html_type') . '; charset=' . get_option('blog_charset'));
 
-if ( ! current_user_can('edit_posts') )
+if ( ! current_user_can('create_posts') )
 	wp_die( __( 'Cheatin&#8217; uh?' ) );
 
 /**
Index: wp-admin/tools.php
===================================================================
--- wp-admin/tools.php	(revision 17644)
+++ wp-admin/tools.php	(working copy)
@@ -27,7 +27,7 @@
 <?php screen_icon(); ?>
 <h2><?php echo esc_html( $title ); ?></h2>
 
-<?php if ( current_user_can('edit_posts') ) : ?>
+<?php if ( current_user_can('create_posts') ) : ?>
 <div class="tool-box">
 	<h3 class="title"><?php _e('Press This') ?></h3>
 	<p><?php _e('Press This is a bookmarklet: a little app that runs in your browser and lets you grab bits of the web.');?></p>
Index: wp-app.php
===================================================================
--- wp-app.php	(revision 17644)
+++ wp-app.php	(working copy)
@@ -320,7 +320,7 @@
 	function get_service() {
 		log_app('function','get_service()');
 
-		if ( !current_user_can( 'edit_posts' ) )
+		if ( !current_user_can( 'create_posts' ) )
 			$this->auth_required( __( 'Sorry, you do not have the right to access this site.' ) );
 
 		$entries_url = esc_attr($this->get_entries_url());
@@ -361,7 +361,7 @@
 	function get_categories_xml() {
 		log_app('function','get_categories_xml()');
 
-		if ( !current_user_can( 'edit_posts' ) )
+		if ( !current_user_can( 'create_posts' ) )
 			$this->auth_required( __( 'Sorry, you do not have the right to access this site.' ) );
 
 		$home = esc_attr(get_bloginfo_rss('url'));
Index: wp-includes/admin-bar.php
===================================================================
--- wp-includes/admin-bar.php	(revision 17644)
+++ wp-includes/admin-bar.php	(working copy)
@@ -123,7 +123,7 @@
 		$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) ) );
 
-		if ( current_user_can_for_blog( $blog->userblog_id, 'edit_posts' ) ) {
+		if ( current_user_can_for_blog( $blog->userblog_id, 'create_posts' ) ) {
 			$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') ) );
 			$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') ) );
 		}
@@ -186,10 +186,10 @@
 
 	$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( $ptype_obj->cap->edit_posts ) )
+		if ( true !== $ptype_obj->show_in_menu || ! current_user_can( $ptype_obj->cap->create_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 );
+		$actions[ 'post-new.php?post_type=' . $ptype_obj->name ] = array( $ptype_obj->labels->singular_name, $ptype_obj->cap->create_posts, 'new-' . $ptype_obj->name );
 	}
 
 	if ( empty( $actions ) )
@@ -210,7 +210,7 @@
 function wp_admin_bar_comments_menu() {
 	global $wp_admin_bar;
 
-	if ( !current_user_can('edit_posts') )
+	if ( !current_user_can('create_posts') )
 		return;
 
 	$awaiting_mod = wp_count_comments();
Index: wp-includes/capabilities.php
===================================================================
--- wp-includes/capabilities.php	(revision 17644)
+++ wp-includes/capabilities.php	(working copy)
@@ -859,6 +859,9 @@
 				$caps[] = $post_type->cap->delete_private_posts;
 		}
 		break;
+        case 'create_posts':
+            $caps[] = 'edit_posts';
+            break;
 		// edit_post breaks down to edit_posts, edit_published_posts, or
 		// edit_others_posts
 	case 'edit_post':
Index: wp-includes/class-wp-xmlrpc-server.php
===================================================================
--- wp-includes/class-wp-xmlrpc-server.php	(revision 17644)
+++ wp-includes/class-wp-xmlrpc-server.php	(working copy)
@@ -774,8 +774,8 @@
 		if ( !$user = $this->login($username, $password) )
 			return $this->error;
 
-		if ( !current_user_can("edit_posts") )
-			return(new IXR_Error(401, __("Sorry, you cannot edit posts on this site.")));
+		if ( !current_user_can("create_posts") )
+			return(new IXR_Error(401, __("Sorry, you cannot create posts on this site.")));
 
 		do_action('xmlrpc_call', 'wp.getAuthors');
 
@@ -809,8 +809,8 @@
 		if ( !$user = $this->login($username, $password) )
 			return $this->error;
 
-		if ( !current_user_can( 'edit_posts' ) )
-			return new IXR_Error( 401, __( 'Sorry, you must be able to edit posts on this site in order to view tags.' ) );
+		if ( !current_user_can( 'create_posts' ) )
+			return new IXR_Error( 401, __( 'Sorry, you must be able to create posts on this site in order to view tags.' ) );
 
 		do_action( 'xmlrpc_call', 'wp.getKeywords' );
 
@@ -938,8 +938,8 @@
 		if ( !$user = $this->login($username, $password) )
 			return $this->error;
 
-		if ( !current_user_can( 'edit_posts' ) )
-			return new IXR_Error( 401, __( 'Sorry, you must be able to edit posts to this site in order to view categories.' ) );
+		if ( !current_user_can( 'create_posts' ) )
+			return new IXR_Error( 401, __( 'Sorry, you must be able to create posts to this site in order to view categories.' ) );
 
 		do_action('xmlrpc_call', 'wp.suggestCategories');
 
@@ -1310,7 +1310,7 @@
 		if ( !$user = $this->login($username, $password) )
 			return $this->error;
 
-		if ( !current_user_can( 'edit_posts' ) )
+		if ( !current_user_can( 'create_posts' ) )
 			return new IXR_Error( 403, __( 'You are not allowed access to details about comments.' ) );
 
 		do_action('xmlrpc_call', 'wp.getCommentCount');
@@ -1342,7 +1342,7 @@
 		if ( !$user = $this->login($username, $password) )
 			return $this->error;
 
-		if ( !current_user_can( 'edit_posts' ) )
+		if ( !current_user_can( 'create_posts' ) )
 			return new IXR_Error( 403, __( 'You are not allowed access to details about this site.' ) );
 
 		do_action('xmlrpc_call', 'wp.getPostStatusList');
@@ -1724,7 +1724,7 @@
 		if ( !$user = $this->login($username, $password) )
 			return $this->error;
 
-		if ( !current_user_can( 'edit_posts' ) )
+		if ( !current_user_can( 'create_posts' ) )
 			return new IXR_Error( 401, __( 'Sorry, you do not have access to user data on this site.' ) );
 
 		do_action('xmlrpc_call', 'blogger.getUserInfo');
@@ -1945,7 +1945,7 @@
 
 		do_action('xmlrpc_call', 'blogger.newPost');
 
-		$cap = ($publish) ? 'publish_posts' : 'edit_posts';
+		$cap = ($publish) ? 'publish_posts' : 'create_posts';
 		if ( !current_user_can($cap) )
 			return new IXR_Error(401, __('Sorry, you are not allowed to post on this site.'));
 
@@ -2112,7 +2112,7 @@
 				elseif ('publish' == $content_struct['post_status'])
 					$cap  = 'publish_posts';
 				else
-					$cap = 'edit_posts';
+					$cap = 'create_posts';
 				$error_message = __( 'Sorry, you are not allowed to publish posts on this site.' );
 				$post_type = 'post';
 			} else {
@@ -2125,7 +2125,7 @@
 			elseif ('publish' == $content_struct['post_status'])
 				$cap  = 'publish_posts';
 			else
-				$cap = 'edit_posts';
+				$cap = 'create_posts';
 			$error_message = __( 'Sorry, you are not allowed to publish posts on this site.' );
 			$post_type = 'post';
 		}
@@ -2405,7 +2405,7 @@
 
 		do_action('xmlrpc_call', 'metaWeblog.editPost');
 
-		$cap = ( $publish ) ? 'publish_posts' : 'edit_posts';
+		$cap = ( $publish ) ? 'publish_posts' : 'create_posts';
 		$error_message = __( 'Sorry, you are not allowed to publish posts on this site.' );
 		$post_type = 'post';
 		$page_template = '';
@@ -2423,7 +2423,7 @@
 				if ( $publish || 'publish' == $content_struct['post_status'] )
 					$cap  = 'publish_posts';
 				else
-					$cap = 'edit_posts';
+					$cap = 'create_posts';
 				$error_message = __( 'Sorry, you are not allowed to publish posts on this site.' );
 				$post_type = 'post';
 			} else {
@@ -2434,7 +2434,7 @@
 			if ( $publish || 'publish' == $content_struct['post_status'] )
 				$cap  = 'publish_posts';
 			else
-				$cap = 'edit_posts';
+				$cap = 'create_posts';
 			$error_message = __( 'Sorry, you are not allowed to publish posts on this site.' );
 			$post_type = 'post';
 		}
@@ -2909,8 +2909,8 @@
 		if ( !$user = $this->login($username, $password) )
 			return $this->error;
 
-		if ( !current_user_can( 'edit_posts' ) )
-			return new IXR_Error( 401, __( 'Sorry, you must be able to edit posts on this site in order to view categories.' ) );
+		if ( !current_user_can( 'create_posts' ) )
+			return new IXR_Error( 401, __( 'Sorry, you must be able to create posts on this site in order to view categories.' ) );
 
 		do_action('xmlrpc_call', 'metaWeblog.getCategories');
 
@@ -3100,8 +3100,8 @@
 		if ( !$user = $this->login($username, $password) )
 			return $this->error;
 
-		if ( !current_user_can( 'edit_posts' ) )
-			return new IXR_Error( 401, __( 'Sorry, you must be able to edit posts on this site in order to view categories.' ) );
+		if ( !current_user_can( 'create_posts' ) )
+			return new IXR_Error( 401, __( 'Sorry, you must be able to create posts on this site in order to view categories.' ) );
 
 		do_action('xmlrpc_call', 'mt.getCategoryList');
 
Index: wp-includes/post.php
===================================================================
--- wp-includes/post.php	(revision 17644)
+++ wp-includes/post.php	(working copy)
@@ -1086,7 +1086,8 @@
 		'read_post'          => 'read_'         . $singular_base,
 		'delete_post'        => 'delete_'       . $singular_base,
 		// Primitive capabilities used outside of map_meta_cap():
-		'edit_posts'         => 'edit_'         . $plural_base,
+		'create_posts'       => 'create_'       . $plural_base,
+ 		'edit_posts'         => 'edit_'         . $plural_base,
 		'edit_others_posts'  => 'edit_others_'  . $plural_base,
 		'publish_posts'      => 'publish_'      . $plural_base,
 		'read_private_posts' => 'read_private_' . $plural_base,
