Index: modules/node/node.admin.inc
===================================================================
RCS file: /cvs/drupal/drupal/modules/node/node.admin.inc,v
retrieving revision 1.22
diff -u -r1.22 node.admin.inc
--- modules/node/node.admin.inc	14 Apr 2008 17:48:38 -0000	1.22
+++ modules/node/node.admin.inc	12 Jul 2008 19:39:01 -0000
@@ -51,14 +51,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?'),
-  );
-
   $form['#validate'] = array('node_configure_validate');
 
   return system_settings_form($form);
Index: modules/node/content_types.inc
===================================================================
RCS file: /cvs/drupal/drupal/modules/node/content_types.inc,v
retrieving revision 1.56
diff -u -r1.56 content_types.inc
--- modules/node/content_types.inc	25 Jun 2008 09:52:41 -0000	1.56
+++ modules/node/content_types.inc	12 Jul 2008 19:38:57 -0000
@@ -144,6 +144,13 @@
     '#default_value' => $type->help,
     '#description' => t('This text will be displayed at the top of the submission form for this content type. It is useful for helping or instructing your users.')
   );
+  $form['submission']['node_preview'] = array(
+    '#type' => 'radios',
+    '#title' => t('Preview post'),
+    '#default_value' => variable_get('node_preview_' . $type->type, 0),
+    '#options' => array(t('Optional'), t('Required')),
+    '#description' => t('Must users preview posts before submitting?'),
+  );
   $form['workflow'] = array(
     '#type' => 'fieldset',
     '#title' => t('Workflow settings'),
Index: modules/node/node.pages.inc
===================================================================
RCS file: /cvs/drupal/drupal/modules/node/node.pages.inc,v
retrieving revision 1.31
diff -u -r1.31 node.pages.inc
--- modules/node/node.pages.inc	10 Jul 2008 11:12:02 -0000	1.31
+++ modules/node/node.pages.inc	12 Jul 2008 19:39:05 -0000
@@ -230,6 +230,7 @@
   $form['buttons'] = array();
   $form['buttons']['submit'] = array(
     '#type' => 'submit',
+    '#access' => !variable_get('node_preview_' . $node->type, 0) || !form_get_errors() && isset($form_state['node_preview']),
     '#value' => t('Save'),
     '#weight' => 5,
     '#submit' => array('node_form_submit'),
Index: modules/system/system.install
===================================================================
RCS file: /cvs/drupal/drupal/modules/system/system.install,v
retrieving revision 1.256
diff -u -r1.256 system.install
--- modules/system/system.install	1 Jul 2008 20:36:40 -0000	1.256
+++ modules/system/system.install	12 Jul 2008 19:39:30 -0000
@@ -3030,6 +3030,21 @@
 }
 
 /**
+ * Set node preview settings per content type using the site-wide setting.
+ *
+ */
+function system_update_7010() {
+  $setting = variable_get('node_preview', 0);
+  if ($setting) {
+    foreach (node_get_types() as $type => $content_type) {
+      variable_set('node_preview_' . $type, $setting);  
+    }
+  }
+  variable_del('node_preview');
+  return array();
+}
+
+/**
  * @} End of "defgroup updates-6.x-to-7.x"
  * The next series of updates should start at 8000.
  */
