From dfff6528ff1aefb054d42a925293751a43c43ff2 Mon Sep 17 00:00:00 2001
From: Dries Buytaert <dries@buytaert.net>
Date: Wed, 15 Apr 2009 13:28:08 +0000
Subject: [PATCH] - Patch #385602 by Damien Tournoud, desbeers, Gabor Hojtsy:
 log message sometimes lost on node preview. With a test\!

---
 modules/node/node.pages.inc |  3 +++
 modules/node/node.test      | 27 +++++++++++++++++++++++++++
 2 files changed, 30 insertions(+)

diff --git a/modules/node/node.pages.inc b/modules/node/node.pages.inc
index c02d70fe55f7..242fcf658443 100644
--- a/modules/node/node.pages.inc
+++ b/modules/node/node.pages.inc
@@ -91,6 +91,8 @@ function node_object_prepare(&$node) {
   }
   else {
     $node->date = format_date($node->created, 'custom', 'Y-m-d H:i:s O');
+    // Remove the log message from the original node object.
+    $node->log = NULL;
   }
   // Always use the default revision setting.
   $node->revision = in_array('revision', $node_options);
@@ -179,6 +181,7 @@ function node_form(&$form_state, $node) {
       '#type' => 'textarea',
       '#title' => t('Revision log message'),
       '#rows' => 4,
+      '#default_value' => !empty($node->log) ? $node->log : '',
       '#description' => t('Provide an explanation of the changes you are making. This will help other authors understand your motivations.'),
     );
   }
diff --git a/modules/node/node.test b/modules/node/node.test
index 60798b01bfd0..d73cb44d4241 100644
--- a/modules/node/node.test
+++ b/modules/node/node.test
@@ -400,6 +400,33 @@ class PagePreviewTestCase extends DrupalWebTestCase {
     $this->assertFieldByName('title', $edit['title'], t('Title field displayed.'));
     $this->assertFieldByName('body', '<!--break-->' . $edit['body'], t('Body field displayed.'));
   }
+
+  /**
+   * Check the node preview functionality, when using revisions.
+   */
+  function testPagePreviewWithRevisions() {
+    // Force revision on page content.
+    variable_set('node_options_page', array('status', 'revision'));
+
+    // Fill in node creation form and preview node.
+    $edit = array();
+    $edit['title'] = $this->randomName(8);
+    $edit['body'] = $this->randomName(16);
+    $edit['log'] = $this->randomName(32);
+    $this->drupalPost('node/add/page', $edit, t('Preview'));
+
+    // Check that the preview is displaying the title and body.
+    $this->assertTitle(t('Preview | Drupal'), t('Page title is preview.'));
+    $this->assertText($edit['title'], t('Title displayed.'));
+    $this->assertText($edit['body'], t('Body displayed.'));
+
+    // Check that the title and body fields are displayed with the correct values.
+    $this->assertFieldByName('title', $edit['title'], t('Title field displayed.'));
+    $this->assertFieldByName('body', '<!--break-->' . $edit['body'], t('Body field displayed.'));
+
+    // Check that the log field has the correct value.
+    $this->assertFieldByName('log', $edit['log'], t('Log field displayed.'));
+  }
 }
 
 class PageCreationTestCase extends DrupalWebTestCase {
-- 
GitLab