diff --git a/save_draft.js b/save_draft.js
index f7fa45f..216ab0d 100644
--- a/save_draft.js
+++ b/save_draft.js
@@ -1,10 +1,12 @@
 (function ($) {
 
 /**
- * Remove publication status from the "Content promotion options" vertical tab.
+ * Show summaries of selected options within tabs.
  */
 Drupal.behaviors.saveDraftFieldsetSummaries = {
   attach: function (context) {
+    // Remove publication status from the "Content promotion options" vertical
+    // tab.
     $('fieldset.node-promotion-options', context).drupalSetSummary(function (context) {
       var vals = [];
 
@@ -18,6 +20,22 @@ Drupal.behaviors.saveDraftFieldsetSummaries = {
         return Drupal.t('Not promoted');
       }
     });
+
+    // Display save draft settings summary on the node options fieldet.
+    $('fieldset#edit-save-draft', context).drupalSetSummary(function (context) {
+      var vals = [];
+
+      // Add summary text for each checked option.
+      $('input:checked', context).next('label').each(function() {
+        vals.push(Drupal.checkPlain($(this).text()));
+      });
+
+      // For the case of the "Enabled" checkbox also handle the disabled state.
+      if (!$('#edit-save-draft-enabled', context).is(':checked')) {
+        vals.unshift(Drupal.t('Disabled'));
+      }
+      return vals.join(', ');
+    });
   }
 };
 
diff --git a/save_draft.module b/save_draft.module
old mode 100644
new mode 100755
index 6e0123a..e2675e0
--- a/save_draft.module
+++ b/save_draft.module
@@ -6,6 +6,16 @@
  */
 
 /**
+ * Save draft functionality is disabled.
+ */
+define('SAVE_DRAFT_DISABLED', 0);
+
+/**
+ * Save draft functionality is enabled.
+ */
+define('SAVE_DRAFT_ENABLED', 1);
+
+/**
  * Implements hook_permission().
  */
 function save_draft_permission() {
@@ -27,7 +37,7 @@ function save_draft_permission() {
  * unpublished.
  */
 function save_draft_form_node_form_alter(&$form, &$form_state) {
-  if (save_draft_access($form, $form_state)) {
+  if (variable_get('save_draft_enabled_' . $form['#node']->type, SAVE_DRAFT_ENABLED) && save_draft_access($form, $form_state)) {
     // Remove the status checkbox from the options fieldset, and adjust the
     // fieldset accordingly.
     if (isset($form['options']['status'])) {
@@ -95,6 +105,34 @@ function save_draft_validate($form, &$form_state) {
 }
 
 /**
+ * Implements hook_form_FORM_ID_alter() for the node type form.
+ */
+function save_draft_form_node_type_form_alter(&$form, &$form_state) {
+  $enabled = variable_get('save_draft_enabled_' . $form['#node_type']->type, SAVE_DRAFT_ENABLED);
+
+  $form['save_draft'] = array(
+    '#type' => 'fieldset',
+    '#title' => t('Enable "Save draft" button'),
+    '#weight' => 0,
+    '#collapsible' => TRUE,
+    '#collapsed' => !$enabled,
+    '#group' => 'additional_settings',
+    '#attached' => array(
+      'js' => array(
+        'save-draft' => drupal_get_path('module', 'save_draft') . '/save_draft.js',
+      ),
+    ),
+  );
+
+  $form['save_draft']['save_draft_enabled'] = array(
+    '#title' => t('Enabled'),
+    '#type' => 'checkbox',
+    '#description' => t('Enable save as draft functionality for this content type.'),
+    '#default_value' => $enabled,
+  );
+}
+
+/**
  * Returns TRUE if the currently logged in user has permission to choose the published state for the node being edited.
  */
 function save_draft_access($form, &$form_state) {
@@ -132,3 +170,10 @@ function save_draft_access($form, &$form_state) {
 
   return $access;
 }
+
+/**
+ * Implements hook_node_type_delete().
+ */
+function save_draft_node_type_delete($info) {
+  variable_del('save_draft_enabled_' . $info->type);
+}
diff --git a/save_draft.test b/save_draft.test
old mode 100644
new mode 100755
index 892b15c..ab1b238
--- a/save_draft.test
+++ b/save_draft.test
@@ -39,14 +39,25 @@ class SaveDraftTestCase extends DrupalWebTestCase {
     // Log in as a user who should see the save draft button.
     $this->drupalLogin($this->save_draft_user);
 
+    // Make sure save draft is enabled for articles.
+    variable_set('save_draft_enabled_article', SAVE_DRAFT_ENABLED);
+
+    // Make sure the save draft button is present when adding a node and drafts
+    // are enabled.
+    $this->drupalGet('node/add/article');
+    $this->assertRaw('<input type="submit" id="edit-draft" name="op" value="' . t('Save as draft') . '" class="form-submit" />', t('Save draft enabled successfully on node create.'));
     // Publish a node, and make sure it's published.
     $edit = $this->getNodeArray();
     $this->drupalPost('node/add/article', $edit, t('Publish'));
     $node = $this->drupalGetNodeByTitle($edit[$this->title_key]);
     $this->assertEqual($node->status, NODE_PUBLISHED, t('Node saved correctly.'));
 
+    // Make sure the unpublish button is present when on a published node and
+    // drafts are enabled.
+    $this->drupalGet('node/' . $node->nid . '/edit');
+    $this->assertRaw('<input type="submit" id="edit-draft" name="op" value="' . t('Unpublish') . '" class="form-submit" />', t('Save draft enabled successfully on published node edit.'));
     // Unpublish it, and make sure it's unpublished.
-    $this->drupalPost("node/$node->nid/edit", array(), t('Unpublish'));
+    $this->drupalPost('node/' . $node->nid . '/edit', array(), t('Unpublish'));
     $node = node_load($node->nid, NULL, TRUE);
     $this->assertEqual($node->status, NODE_NOT_PUBLISHED, t('Node unpublished correctly.'));
 
@@ -56,10 +67,30 @@ class SaveDraftTestCase extends DrupalWebTestCase {
     $node = $this->drupalGetNodeByTitle($edit[$this->title_key]);
     $this->assertEqual($node->status, NODE_NOT_PUBLISHED, t('Node saved correctly as draft.'));
 
+    // Make sure the unpublish button is present when on a draft node and
+    // drafts are enabled.
+    $this->drupalGet('node/' . $node->nid . '/edit');
+    $this->assertRaw('<input type="submit" id="edit-draft" name="op" value="' . t('Save') . '" class="form-submit" />', t('Save draft enabled successfully on draft node edit.'));
     // Publish the node, and make sure it's published.
-    $this->drupalPost("node/$node->nid/edit", array(), t('Publish'));
+    $this->drupalPost('node/' . $node->nid . '/edit', array(), t('Publish'));
     $node = node_load($node->nid, NULL, TRUE);
     $this->assertEqual($node->status, NODE_PUBLISHED, t('Node published correctly.'));
+
+    // Make sure save draft is disabled for articles.
+    variable_set('save_draft_enabled_article', SAVE_DRAFT_DISABLED);
+
+    // Make sure the save draft button is not present when adding a node and
+    // drafts are disabled.
+    $this->drupalGet('node/add/article');
+    $this->assertNoRaw('<input type="submit" id="edit-draft" name="op" value="' . t('Save as draft') . '" class="form-submit" />', t('Save draft disabled successfully on node create.'));
+    // Publish a node and edit it again.
+    $edit = $this->getNodeArray();
+    $this->drupalPost('node/add/article', $edit, t('Save'));
+    $node = $this->drupalGetNodeByTitle($edit[$this->title_key]);
+    // Make sure the unpublish button is present when on a published node and
+    // drafts are disabled.
+    $this->drupalGet('node/' . $node->nid . '/edit');
+    $this->assertNoRaw('<input type="submit" id="edit-draft" name="op" value="' . t('Unpublish') . '" class="form-submit" />', t('Save draft disabled successfully on published node edit.'));
   }
 
   /**
