From d615cb245e1392ec14f77d21059d1ca71736c335 Mon Sep 17 00:00:00 2001
From: Steven Wittens <steven@10.no-reply.drupal.org>
Date: Sun, 4 Jul 2004 19:24:52 +0000
Subject: [PATCH] - Added revisions tab to node view (when needed) - Updated
 node.module to use drupal_goto after submission: this allows people to
 refresh after submission without any problems.

---
 modules/node.module      | 32 +++++++++++++++++++-------------
 modules/node/node.module | 32 +++++++++++++++++++-------------
 2 files changed, 38 insertions(+), 26 deletions(-)

diff --git a/modules/node.module b/modules/node.module
index 06925d433b26..c48ec30ee536 100644
--- a/modules/node.module
+++ b/modules/node.module
@@ -627,10 +627,6 @@ function node_link($type, $node = 0, $main = 0) {
     if ($main == 1 && $node->teaser && $node->readmore) {
       $links[] = l(t('read more'), "node/$node->nid", array('title' => t('Read the rest of this posting.'), 'class' => 'read-more'));
     }
-
-    if (user_access('administer nodes') && $node->revisions) {
-      $links[] = l(t('revisions'), "node/revisions/$node->nid", array('title' => t('Administer revisions.')));
-    }
   }
 
   return $links;
@@ -688,7 +684,16 @@ function node_menu() {
     $items[] = array('path' => 'node/'. arg(1) .'/edit', 'title' => t('edit'),
       'callback' => 'node_page',
       'access' => node_access('update', $node),
+      'weight' => 1,
       'type' => MENU_LOCAL_TASK);
+
+    if ($node->revisions) {
+      $items[] = array('path' => 'node/'. arg(1) .'/revisions', 'title' => t('revisions'),
+        'callback' => 'node_page',
+        'access' => user_access('administer nodes'),
+        'weight' => 2,
+        'type' => MENU_LOCAL_TASK);
+    }
   }
 
   // Legacy handler for old "node/view/52" paths.
@@ -851,11 +856,13 @@ function node_revision_overview($nid) {
   if (user_access('administer nodes')) {
     $node = node_load(array('nid' => $nid));
 
+    drupal_set_title($node->title);
+
     if ($node->revisions) {
       $header = array(t('older revisions'), array('colspan' => '3', 'data' => t('operations')));
 
       foreach ($node->revisions as $key => $revision) {
-        $rows[] = array(t('revision #%r revised by %u on %d', array('%r' => $key, '%u' => format_name(user_load(array('uid' => $revision['uid']))), '%d' => format_date($revision['timestamp'], 'small'))) . ($revision['history'] ? '<br /><small>'. $revision['history'] .'</small>' : ''), l(t('view'), "node/$node->nid", array(), "revision=$key"), l(t('rollback'), "node/rollback-revision/$node->nid/$key"), l(t('delete'), "node/delete-revision/$node->nid/$key"));
+        $rows[] = array(t('revision #%r revised by %u on %d', array('%r' => $key, '%u' => format_name(user_load(array('uid' => $revision['uid']))), '%d' => format_date($revision['timestamp'], 'small'))) . ($revision['history'] ? '<br /><small>'. $revision['history'] .'</small>' : ''), l(t('view'), "node/$node->nid", array(), "revision=$key"), l(t('rollback'), "node/$node->nid/rollback-revision/$key"), l(t('delete'), "node/$node->nid/delete-revision/$key"));
       }
       $output .= theme('table', $header, $rows);
     }
@@ -919,6 +926,7 @@ function node_revision_rollback($nid, $revision) {
     node_save($rev, $filter);
 
     drupal_set_message(t('rolled back to revision #%revision of "%title"', array('%revision' => $revision, '%title' => $node->title)));
+    drupal_goto('node/'. $nid .'/revisions');
   }
 }
 
@@ -934,6 +942,7 @@ function node_revision_delete($nid, $revision) {
     node_save($node, array('nid', 'revisions'));
 
     drupal_set_message(t('deleted revision #%revision of "%title"', array('%revision' => $revision, '%title' => $node->title)));
+    drupal_goto('node/'. $nid . (count($node->revisions) ? '/revisions' : ''));
   }
 }
 
@@ -1369,10 +1378,9 @@ function node_submit($node) {
     }
   }
 
-  $node = node_load(array('nid' => $node->nid));
+  // Node was submitted successfully. Redirect to the viewing page.
   drupal_set_message($msg);
-  drupal_set_title($node->title);
-  return node_show($node, NULL);
+  drupal_goto('node/'. $node->nid);
 }
 
 /**
@@ -1464,15 +1472,13 @@ function node_page() {
       print theme('page', node_edit(arg(1)));
       break;
     case 'revisions':
-      print theme('page', node_revision_overview(arg(2)), t('Revisions'));
+      print theme('page', node_revision_overview(arg(1)));
       break;
     case 'rollback-revision':
-      node_revision_rollback(arg(2), arg(3));
-      print theme('page', node_revision_overview(arg(2)), t('Revisions'));
+      node_revision_rollback(arg(1), arg(3));
       break;
     case 'delete-revision':
-      node_revision_delete(arg(2), arg(3));
-      print theme('page', node_revision_overview(arg(2)), t('Revisions'));
+      node_revision_delete(arg(1), arg(3));
       break;
     case 'view':
       if (is_numeric(arg(1))) {
diff --git a/modules/node/node.module b/modules/node/node.module
index 06925d433b26..c48ec30ee536 100644
--- a/modules/node/node.module
+++ b/modules/node/node.module
@@ -627,10 +627,6 @@ function node_link($type, $node = 0, $main = 0) {
     if ($main == 1 && $node->teaser && $node->readmore) {
       $links[] = l(t('read more'), "node/$node->nid", array('title' => t('Read the rest of this posting.'), 'class' => 'read-more'));
     }
-
-    if (user_access('administer nodes') && $node->revisions) {
-      $links[] = l(t('revisions'), "node/revisions/$node->nid", array('title' => t('Administer revisions.')));
-    }
   }
 
   return $links;
@@ -688,7 +684,16 @@ function node_menu() {
     $items[] = array('path' => 'node/'. arg(1) .'/edit', 'title' => t('edit'),
       'callback' => 'node_page',
       'access' => node_access('update', $node),
+      'weight' => 1,
       'type' => MENU_LOCAL_TASK);
+
+    if ($node->revisions) {
+      $items[] = array('path' => 'node/'. arg(1) .'/revisions', 'title' => t('revisions'),
+        'callback' => 'node_page',
+        'access' => user_access('administer nodes'),
+        'weight' => 2,
+        'type' => MENU_LOCAL_TASK);
+    }
   }
 
   // Legacy handler for old "node/view/52" paths.
@@ -851,11 +856,13 @@ function node_revision_overview($nid) {
   if (user_access('administer nodes')) {
     $node = node_load(array('nid' => $nid));
 
+    drupal_set_title($node->title);
+
     if ($node->revisions) {
       $header = array(t('older revisions'), array('colspan' => '3', 'data' => t('operations')));
 
       foreach ($node->revisions as $key => $revision) {
-        $rows[] = array(t('revision #%r revised by %u on %d', array('%r' => $key, '%u' => format_name(user_load(array('uid' => $revision['uid']))), '%d' => format_date($revision['timestamp'], 'small'))) . ($revision['history'] ? '<br /><small>'. $revision['history'] .'</small>' : ''), l(t('view'), "node/$node->nid", array(), "revision=$key"), l(t('rollback'), "node/rollback-revision/$node->nid/$key"), l(t('delete'), "node/delete-revision/$node->nid/$key"));
+        $rows[] = array(t('revision #%r revised by %u on %d', array('%r' => $key, '%u' => format_name(user_load(array('uid' => $revision['uid']))), '%d' => format_date($revision['timestamp'], 'small'))) . ($revision['history'] ? '<br /><small>'. $revision['history'] .'</small>' : ''), l(t('view'), "node/$node->nid", array(), "revision=$key"), l(t('rollback'), "node/$node->nid/rollback-revision/$key"), l(t('delete'), "node/$node->nid/delete-revision/$key"));
       }
       $output .= theme('table', $header, $rows);
     }
@@ -919,6 +926,7 @@ function node_revision_rollback($nid, $revision) {
     node_save($rev, $filter);
 
     drupal_set_message(t('rolled back to revision #%revision of "%title"', array('%revision' => $revision, '%title' => $node->title)));
+    drupal_goto('node/'. $nid .'/revisions');
   }
 }
 
@@ -934,6 +942,7 @@ function node_revision_delete($nid, $revision) {
     node_save($node, array('nid', 'revisions'));
 
     drupal_set_message(t('deleted revision #%revision of "%title"', array('%revision' => $revision, '%title' => $node->title)));
+    drupal_goto('node/'. $nid . (count($node->revisions) ? '/revisions' : ''));
   }
 }
 
@@ -1369,10 +1378,9 @@ function node_submit($node) {
     }
   }
 
-  $node = node_load(array('nid' => $node->nid));
+  // Node was submitted successfully. Redirect to the viewing page.
   drupal_set_message($msg);
-  drupal_set_title($node->title);
-  return node_show($node, NULL);
+  drupal_goto('node/'. $node->nid);
 }
 
 /**
@@ -1464,15 +1472,13 @@ function node_page() {
       print theme('page', node_edit(arg(1)));
       break;
     case 'revisions':
-      print theme('page', node_revision_overview(arg(2)), t('Revisions'));
+      print theme('page', node_revision_overview(arg(1)));
       break;
     case 'rollback-revision':
-      node_revision_rollback(arg(2), arg(3));
-      print theme('page', node_revision_overview(arg(2)), t('Revisions'));
+      node_revision_rollback(arg(1), arg(3));
       break;
     case 'delete-revision':
-      node_revision_delete(arg(2), arg(3));
-      print theme('page', node_revision_overview(arg(2)), t('Revisions'));
+      node_revision_delete(arg(1), arg(3));
       break;
     case 'view':
       if (is_numeric(arg(1))) {
-- 
GitLab