Index: modules/node/node.pages.inc =================================================================== RCS file: /cvs/drupal/drupal/modules/node/node.pages.inc,v retrieving revision 1.73 diff -u -p -r1.73 node.pages.inc --- modules/node/node.pages.inc 4 Aug 2009 06:44:48 -0000 1.73 +++ modules/node/node.pages.inc 6 Aug 2009 17:23:23 -0000 @@ -265,6 +265,13 @@ function node_form(&$form_state, $node) '#weight' => 5, '#submit' => array('node_form_submit'), ); + $form['buttons']['draft'] = array( + '#access' => user_access('access revisions') && user_access('revert revisions'), + '#type' => 'submit', + '#value' => t('Save as draft'), + '#weight' => 6, + '#submit' => array('node_form_draft_submit'), + ); $form['buttons']['preview'] = array( '#access' => variable_get('node_preview_' . $node->type, 1) != DRUPAL_DISABLED, '#type' => 'submit', @@ -395,6 +402,23 @@ function theme_node_preview($node) { return $output; } +function node_form_draft_submit($form, &$form_state) { + $node = node_form_submit_build_node($form, $form_state); + node_save($node); + db_update('node') + ->fields(array('vid' => $node->old_vid)) + ->condition('nid', $node->nid) + ->execute(); + + if ($node->nid) { + unset($form_state['rebuild']); + $form_state['nid'] = $node->nid; + $form_state['redirect'] = 'node/' . $node->nid; + } +} + + + function node_form_submit($form, &$form_state) { global $user;