Index: modules/node.module
===================================================================
RCS file: /cvs/drupal/drupal/modules/node.module,v
retrieving revision 1.654
diff -u -d -F^function -r1.654 node.module
--- modules/node.module	5 Jul 2006 11:45:51 -0000	1.654
+++ modules/node.module	6 Jul 2006 13:55:44 -0000
@@ -587,7 +587,7 @@ function node_show($node, $cid) {
  * Implementation of hook_perm().
  */
 function node_perm() {
-  return array('administer nodes', 'access content', 'view revisions', 'revert revisions');
+  return array('administer nodes', 'access content', 'edit any node', 'view unpublished nodes', 'view revisions', 'revert revisions');
 }
 
 /**
@@ -2322,6 +2322,14 @@ function node_access($op, $node = NULL, 
     return TRUE;
   }
 
+  if ($op == 'view' && $node->status == 0 && user_access('view unpublished nodes')) {
+    return TRUE;
+  }
+
+  if ($op == 'update' && user_access('edit any node')) {
+    return TRUE;
+  }
+
   if (!user_access('access content')) {
     return FALSE;
   }
Index: modules/page.module
===================================================================
RCS file: /cvs/drupal/drupal/modules/page.module,v
retrieving revision 1.155
diff -u -d -F^function -r1.155 page.module
--- modules/page.module	7 May 2006 00:08:36 -0000	1.155
+++ modules/page.module	6 Jul 2006 13:55:45 -0000
@@ -38,7 +38,7 @@ function page_help($section) {
  * Implementation of hook_perm().
  */
 function page_perm() {
-  return array('create pages', 'edit own pages');
+  return array('create pages', 'edit own pages', 'edit any page', 'view unpublished pages');
 }
 
 /**
@@ -57,9 +57,13 @@ function page_access($op, $node) {
   if ($op == 'create') {
     return user_access('create pages');
   }
+  
+  if ($op == 'view' && $node->status == 0 && user_access('view unpublished pages')) {
+    return TRUE;
+  }
 
   if ($op == 'update' || $op == 'delete') {
-    if (user_access('edit own pages') && ($user->uid == $node->uid)) {
+    if ((user_access('edit own pages') && ($user->uid == $node->uid)) || user_access('edit any page')) {
       return TRUE;
     }
   }
Index: modules/story.module
===================================================================
RCS file: /cvs/drupal/drupal/modules/story.module,v
retrieving revision 1.187
diff -u -d -F^function -r1.187 story.module
--- modules/story.module	7 May 2006 00:08:36 -0000	1.187
+++ modules/story.module	6 Jul 2006 13:55:45 -0000
@@ -40,7 +40,7 @@ function story_node_info() {
  * Implementation of hook_perm().
  */
 function story_perm() {
-  return array('create stories', 'edit own stories');
+  return array('create stories', 'edit own stories', 'edit any story', 'view unpublished stories');
 }
 
 /**
@@ -53,8 +53,12 @@ function story_access($op, $node) {
     return user_access('create stories');
   }
 
+  if ($op == 'view' && $node->status == 0 && user_access('view unpublished stories')) {
+    return TRUE;
+  }
+
   if ($op == 'update' || $op == 'delete') {
-    if (user_access('edit own stories') && ($user->uid == $node->uid)) {
+    if ((user_access('edit own stories') && ($user->uid == $node->uid)) || user_access('edit any story')) {
       return TRUE;
     }
   }
