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 13 Jul 2008 17:40:45 -0000 @@ -203,8 +203,7 @@ '#weight' => 25, ); $form['options']['status'] = array( - '#type' => 'checkbox', - '#title' => t('Published'), + '#type' => 'hidden', '#default_value' => $node->status, ); $form['options']['promote'] = array( @@ -228,12 +227,20 @@ // Add the buttons. $form['buttons'] = array(); - $form['buttons']['submit'] = array( + $form['buttons']['submit-publish'] = array( '#type' => 'submit', - '#value' => t('Save'), + '#access' => user_access('administer nodes') || $node->status, + '#value' => $node->status && isset($node->nid) ? t('Save and republish') : t('Publish'), '#weight' => 5, '#submit' => array('node_form_submit'), ); + $form['buttons']['submit-unpublish'] = array( + '#type' => 'submit', + '#access' => user_access('administer nodes') || !$node->status, + '#value' => $node->status && isset($node->nid) ? t('Save and unpublish') : (isset($node->nid) ? t('Save changes') : t('Save as draft')), + '#weight' => 6, + '#submit' => array('node_form_submit'), + ); $form['buttons']['preview'] = array( '#type' => 'submit', '#value' => t('Preview'), @@ -478,6 +485,12 @@ * Build a node by processing submitted form values and prepare for a form rebuild. */ function node_form_submit_build_node($form, &$form_state) { + if ($form_state['clicked_button']['#id'] == 'edit-submit-publish') { + $form_state['values']['status'] = 1; + } + else if ($form_state['clicked_button']['#id'] == 'edit-submit-unpublish') { + $form_state['values']['status'] = 0; + } // Unset any button-level handlers, execute all the form-level submit // functions to process the form values into an updated node. unset($form_state['submit_handlers']);