=== modified file 'modules/node.module'
--- modules/node.module	
+++ modules/node.module	
@@ -585,7 +585,7 @@
  * Implementation of hook_perm().
  */
 function node_perm() {
-  return array('administer nodes', 'access content', 'view revisions', 'revert revisions');
+  return array('administer nodes', 'access content', 'view revisions', 'revert revisions', 'optional post preview');
 }
 
 /**
@@ -816,11 +816,6 @@
     '#description' => t("The maximum number of characters used in the trimmed version of a post.  Drupal will use this setting to determine at which offset long posts should be trimmed.  The trimmed version of a post is typically used as a teaser when displaying the post on the main page, in XML feeds, etc.  To disable teasers, set to 'Unlimited'. Note that this setting will only affect new or updated content and will not affect existing teasers.")
   );
 
-  $form['node_preview'] = array(
-    '#type' => 'radios', '#title' => t('Preview post'), '#default_value' => variable_get('node_preview', 0),
-    '#options' => array(t('Optional'), t('Required')), '#description' => t('Must users preview posts before submitting?')
-  );
-
   return system_settings_form('node_configure', $form);
 }
 
@@ -1694,7 +1689,7 @@
       $form['node_preview'] = array('#value' => node_preview((object)$edit), '#weight' => -100);
     }
   }
-  if (variable_get('node_preview', 0) && (form_get_errors() || $op != t('Preview'))) {
+  if (!user_access('optional post preview') && (form_get_errors() || $op != t('Preview'))) {
     unset($form['submit']);
   }
   return $form;
