diff --git a/core/modules/node/node.pages.inc b/core/modules/node/node.pages.inc index a43ff62..df23d8a 100644 --- a/core/modules/node/node.pages.inc +++ b/core/modules/node/node.pages.inc @@ -511,7 +511,7 @@ function node_form_submit($form, &$form_state) { if ($node->nid) { $form_state['values']['nid'] = $node->nid; $form_state['nid'] = $node->nid; - $form_state['redirect'] = 'node/' . $node->nid; + $form_state['redirect'] = node_access('view', $node) ? 'node/' . $node->nid : ''; } else { // In the unlikely case something went wrong on save, the node will be diff --git a/core/modules/node/node.test b/core/modules/node/node.test index 9188bad..67961fc 100644 --- a/core/modules/node/node.test +++ b/core/modules/node/node.test @@ -573,6 +573,26 @@ class NodeCreationTestCase extends NodeWebTestCase { $records = db_query("SELECT wid FROM {watchdog} WHERE variables LIKE '%Test exception for rollback.%'")->fetchAll(); $this->assertTrue(count($records) > 0, t('Rollback explanatory error logged to watchdog.')); } + + /** + * Create an unpublished node and confirm correct redirect behavior. + */ + function testUnpublishedNodeCreation() { + // Set "Basic page" content type to be unpublished by default. + $edit = array(); + $edit['node_options'] = array(); + $this->drupalPost('admin/structure/types/manage/page', $edit, t('Save content type')); + + // Create a node. + $edit = array(); + $langcode = LANGUAGE_NOT_SPECIFIED; + $edit["title"] = $this->randomName(8); + $edit["body[$langcode][0][value]"] = $this->randomName(16); + $this->drupalPost('node/add/page', $edit, t('Save')); + + // Check that the user was redirected to the home page. + $this->assertText(t('Welcome to Drupal'), t('The user is redirected to the home page.')); + } } class PageViewTestCase extends NodeWebTestCase {