Index: wp-includes/functions-post.php
===================================================================
--- wp-includes/functions-post.php	(revision 3002)
+++ wp-includes/functions-post.php	(working copy)
@@ -18,7 +18,7 @@
 		$post = & get_post($ID);
 		$previous_status = $post->post_status;
 	}
-
+	
 	// Get the basics.
 	$post_content    = apply_filters('content_save_pre',   $post_content);
 	$post_excerpt    = apply_filters('excerpt_save_pre',   $post_excerpt);
@@ -48,7 +48,7 @@
 	// Create a valid post name.  Drafts are allowed to have an empty
 	// post name.
 	if ( empty($post_name) ) {
-		if ( 'draft' != $post_status )
+		if ( 'draft' != $post_status && 'static-draft' != $post_status )
 			$post_name = sanitize_title($post_title);
 	} else {
 		$post_name = sanitize_title($post_name);
@@ -130,14 +130,14 @@
 			$post_ID = $wpdb->insert_id;			
 	}
 
-	if ( empty($post_name) && 'draft' != $post_status ) {
+	if ( empty($post_name) && 'draft' != $post_status && 'static-draft' != $post_status ) {
 		$post_name = sanitize_title($post_title, $post_ID);
 		$wpdb->query( "UPDATE $wpdb->posts SET post_name = '$post_name' WHERE ID = '$post_ID'" );
 	}
 
 	wp_set_post_cats('', $post_ID, $post_category);
 
-	if ( 'static' == $post_status )
+	if ( 'static' == $post_status || 'static-draft' == $post_status )
 		clean_page_cache($post_ID);
 	else
 		clean_post_cache($post_ID);
@@ -457,7 +457,7 @@
 
 	do_action('delete_post', $postid);
 
-	if ( 'static' == $post->post_status )
+	if ( 'static' == $post->post_status || 'static-draft' == $post->post_status)
 		$wpdb->query("UPDATE $wpdb->posts SET post_parent = $post->post_parent WHERE post_parent = $postid AND post_status = 'static'");
 
 	$wpdb->query("DELETE FROM $wpdb->posts WHERE ID = $postid");
Index: wp-includes/classes.php
===================================================================
--- wp-includes/classes.php	(revision 3002)
+++ wp-includes/classes.php	(working copy)
@@ -553,7 +553,7 @@
 			$where .= ' AND (post_status = "publish"';
 
 			if (isset($user_ID) && ('' != intval($user_ID)))
-				$where .= " OR post_author = $user_ID AND post_status != 'draft' AND post_status != 'static')";
+				$where .= " OR post_author = $user_ID AND post_status != 'draft' AND post_status != 'static' AND post_status != 'static-draft')";
 			else
 				$where .= ')';				
 		}
@@ -610,7 +610,7 @@
 					// User must be logged in to view unpublished posts.
 					$this->posts = array();
 				} else {
-					if ('draft' == $status) {
+					if ('draft' == $status || 'static-draft' == $status) {
 						// User must have edit permissions on the draft to preview.
 						if (! user_can_edit_post($user_ID, $this->posts[0]->ID)) {
 							$this->posts = array();
Index: wp-includes/template-functions-links.php
===================================================================
--- wp-includes/template-functions-links.php	(revision 3002)
+++ wp-includes/template-functions-links.php	(working copy)
@@ -49,7 +49,7 @@
 
 	$permalink = get_settings('permalink_structure');
 
-	if ( '' != $permalink && 'draft' != $post->post_status ) {
+	if ( '' != $permalink && 'draft' != $post->post_status && 'static-draft' != $post->post_status ) {
 		$unixtime = strtotime($post->post_date);
 
 		$category = '';
Index: wp-admin/post.php
===================================================================
--- wp-admin/post.php	(revision 3002)
+++ wp-admin/post.php	(working copy)
@@ -49,7 +49,7 @@
 		$location = 'post.php?posted=true';
 	}
 
-	if ( 'static' == $_POST['post_status'] )
+	if ( 'static' == $_POST['post_status'] || 'static-draft' == $_POST['post_status'] )
 		$location = "page-new.php?saved=true";
 
 	if ( '' != $_POST['advanced'] || isset($_POST['save']) )
@@ -71,7 +71,7 @@
 
 	$post = get_post_to_edit($post_ID);
 	
-	if ($post->post_status == 'static')
+	if ($post->post_status == 'static' || $post->post_status == 'static-draft')
 		include('edit-page-form.php');
 	else
 		include('edit-form-advanced.php');
Index: wp-admin/admin-functions.php
===================================================================
--- wp-admin/admin-functions.php	(revision 3002)
+++ wp-admin/admin-functions.php	(working copy)
@@ -36,6 +36,8 @@
 		$_POST['post_status'] = 'draft';
 	if ('' != $_POST['savepage'])
 		$_POST['post_status'] = 'static';
+	if ('' != $_POST['savepageasdraft'])
+		$_POST['post_status'] = 'static-draft';
 
 	if ('publish' == $_POST['post_status'] && !current_user_can('publish_posts'))
 		$_POST['post_status'] = 'draft';
@@ -113,6 +115,8 @@
 		$_POST['post_status'] = 'draft';
 	if ('' != $_POST['savepage'])
 		$_POST['post_status'] = 'static';
+	if ('' != $_POST['savepageasdraft'])
+		$_POST['post_status'] = 'static-draft';
 
 	if ('publish' == $_POST['post_status'] && !current_user_can('publish_posts'))
 		$_POST['post_status'] = 'draft';
@@ -204,7 +208,7 @@
 	$post->post_title = format_to_edit($post->post_title);
 	$post->post_title = apply_filters('title_edit_pre', $post->post_title);
 
-	if ($post->post_status == 'static')
+	if ($post->post_status == 'static' || $post->post_status == 'static-draft')
 		$post->page_template = get_post_meta($id, '_wp_page_template', true);
 
 	return $post;
Index: wp-admin/edit-page-form.php
===================================================================
--- wp-admin/edit-page-form.php	(revision 3002)
+++ wp-admin/edit-page-form.php	(working copy)
@@ -142,7 +142,8 @@
 <input name="save" type="submit" id="save" tabindex="5" value=" <?php _e('Save and Continue Editing'); ?> "/> 
 <input name="savepage" type="submit" id="savepage" tabindex="6" value="<?php $post_ID ? _e('Edit Page') : _e('Create New Page') ?> &raquo;" /> 
 <?php else : ?>
-<input name="savepage" type="submit" id="savepage" tabindex="6" value="<?php _e('Create New Page') ?> &raquo;" /> 
+<input name="savepage" type="submit" id="savepage" tabindex="6" value="<?php _e('Create New Page') ?>" /> 
+<input name="savepageasdraft" type="submit" id="savepageasdraft" tabindex="7" value="<?php _e('Save Page as Draft'); ?>" />
 <?php endif; ?>
 <input name="referredby" type="hidden" id="referredby" value="<?php echo $sendto; ?>" />
 </p>
Index: wp-admin/admin-db.php
===================================================================
--- wp-admin/admin-db.php	(revision 3002)
+++ wp-admin/admin-db.php	(working copy)
@@ -25,6 +25,31 @@
 	return apply_filters('get_others_drafts', $other_drafts);
 }
 
+function get_users_page_drafts( $user_id ) {
+	global $wpdb;
+	$user_id = (int) $user_id;
+	$query = "SELECT ID, post_title FROM $wpdb->posts WHERE post_status = 'static-draft' AND post_author = $user_id ORDER BY ID DESC";
+	$query = apply_filters('get_users_page_drafts', $query);
+	return $wpdb->get_results( $query );
+}
+
+function get_others_page_drafts( $user_id ) {
+	global $wpdb;
+	$user = get_userdata( $user_id );
+	$level_key = $wpdb->prefix . 'user_level';
+
+	$editable = get_editable_user_ids( $user_id );
+	
+	if( !$editable ) {
+		$other_drafts = '';
+	} else {
+		$editable = join(',', $editable);
+		$other_drafts = $wpdb->get_results("SELECT ID, post_title FROM $wpdb->posts WHERE post_status = 'static-draft' AND post_author IN ($editable) AND post_author != '$user_id' ");
+	}
+
+	return apply_filters('get_others_drafts', $other_drafts);
+}
+
 function get_editable_authors( $user_id ) {
 	global $wpdb;
 
Index: wp-admin/execute-pings.php
===================================================================
--- wp-admin/execute-pings.php	(revision 3002)
+++ wp-admin/execute-pings.php	(working copy)
@@ -27,7 +27,7 @@
 		}
 	}
 	// Do Trackbacks
-	if($trackbacks = $wpdb->get_results("SELECT ID FROM $wpdb->posts WHERE TRIM(to_ping) != '' AND post_status != 'draft'")) {
+	if($trackbacks = $wpdb->get_results("SELECT ID FROM $wpdb->posts WHERE TRIM(to_ping) != '' AND post_status != 'draft' AND post_status != 'static-draft'")) {
 		foreach($trackbacks as $trackback) {
 			//echo "trackback : $trackback->ID<br/>";
 			do_trackbacks($trackback->ID);
Index: wp-admin/edit-pages.php
===================================================================
--- wp-admin/edit-pages.php	(revision 3002)
+++ wp-admin/edit-pages.php	(working copy)
@@ -5,7 +5,51 @@
 require_once('admin-header.php');
 ?>
 
+<?php
+$drafts = get_users_page_drafts($user_ID);
+$other_drafts = get_others_page_drafts($user_ID);
+if ($drafts || $other_drafts) {
+?> 
 <div class="wrap">
+<?php if ($drafts) { ?>
+    <p><strong><?php _e('Your Draft Pages:') ?></strong> 
+    <?php
+	$i = 0;
+	foreach ($drafts as $draft) {
+		if (0 != $i)
+			echo ', ';
+		$draft->post_title = stripslashes($draft->post_title);
+		if ($draft->post_title == '')
+			$draft->post_title = sprintf(__('Post #%s'), $draft->ID);
+		echo "<a href='post.php?action=edit&amp;post=$draft->ID' title='" . __('Edit this draft') . "'>$draft->post_title</a>";
+		++$i;
+		}
+	?> 
+    .</p> 
+<?php } ?>
+
+<?php if ($other_drafts) { ?> 
+    <p><strong><?php _e('Other&#8217;s Draft Pages:') ?></strong> 
+    <?php
+	$i = 0;
+	foreach ($other_drafts as $draft) {
+		if (0 != $i)
+			echo ', ';
+		$draft->post_title = stripslashes($draft->post_title);
+		if ($draft->post_title == '')
+			$draft->post_title = sprintf(__('Post #%s'), $draft->ID);
+		echo "<a href='post.php?action=edit&amp;post=$draft->ID' title='" . __('Edit this draft') . "'>$draft->post_title</a>";
+		++$i;
+		}
+	?> 
+    .</p> 
+
+<?php } ?>
+
+</div>
+<?php } ?>
+
+<div class="wrap">
 <h2><?php _e('Page Management'); ?></h2>
 <p><?php _e('Pages are like posts except they live outside of the normal blog chronology and can be hierarchical. You can use pages to organize and manage any amount of content.'); ?> <a href="page-new.php"><?php _e('Create a new page'); ?> &raquo;</a></p>
 
Index: wp-admin/upgrade-schema.php
===================================================================
--- wp-admin/upgrade-schema.php	(revision 3002)
+++ wp-admin/upgrade-schema.php	(working copy)
@@ -106,7 +106,7 @@
   post_title text NOT NULL,
   post_category int(4) NOT NULL default '0',
   post_excerpt text NOT NULL,
-  post_status enum('publish','draft','private','static','object') NOT NULL default 'publish',
+  post_status enum('publish','draft','private','static','object', 'static-draft') NOT NULL default 'publish',
   comment_status enum('open','closed','registered_only') NOT NULL default 'open',
   ping_status enum('open','closed') NOT NULL default 'open',
   post_password varchar(20) NOT NULL default '',
