diff -rupN diff.install diff.install
--- diff.install	1970-01-01 01:00:00.000000000 +0100
+++ diff.install	2009-04-11 14:03:32.000000000 +0200
@@ -0,0 +1,12 @@
+<?php
+// $Id$
+
+/**
+ * Implementation of hook_uninstall().
+ */
+function diff_uninstall() {
+  // Delete all module variables and then clear the variables cache.
+  db_query("DELETE FROM {variable} WHERE name LIKE 'show\_preview\_changes\_%'");
+  db_query("DELETE FROM {variable} WHERE name LIKE 'enable\_revisions\_page\_%'");
+  cache_clear_all('variables', 'cache');
+}
diff -rupN diff.module diff.module
--- diff.module	2008-08-31 22:32:18.000000000 +0200
+++ diff.module	2009-04-14 12:56:09.000000000 +0200
@@ -32,7 +32,7 @@ function diff_menu() {
     'page callback' => 'diff_diffs_show',
     'page arguments' => array(1, 4, 5),
     'type' => MENU_CALLBACK,
-    'access callback' => '_node_revision_access',
+    'access callback' => 'diff_node_revision_access',
     'access arguments' => array(1),
   );
   $items['node/%node/revisions/view/latest'] = array(
@@ -40,7 +40,7 @@ function diff_menu() {
     'page callback' => 'diff_latest',
     'page arguments' => array(1),
     'type' => MENU_CALLBACK,
-    'access callback' => '_node_revision_access',
+    'access callback' => 'diff_node_revision_access',
     'access arguments' => array(1),
   );
   return $items;
@@ -61,7 +61,20 @@ function diff_menu_alter(&$callbacks) {
   // Overwrite the default 'Revisions' page
   $callbacks['node/%node/revisions']['page callback'] = 'diff_diffs_overview';
   $callbacks['node/%node/revisions']['module'] = 'diff';
+  $callbacks['node/%node/revisions']['access callback'] = 'diff_node_revision_access';
   unset($callbacks['node/%node/revisions']['file']);
+
+  $callbacks['node/%node/revisions/%/view']['access callback'] = 'diff_node_revision_access';
+  $callbacks['node/%node/revisions/%/revert']['access callback'] = 'diff_node_revision_access';
+  $callbacks['node/%node/revisions/%/delete']['access callback'] = 'diff_node_revision_access';
+}
+  
+/**
+ * Access callback for the node revisions page.
+ */
+function diff_node_revision_access($node) {
+  $may_revision_this_type = variable_get('enable_revisions_page_'. $node->type, TRUE) || user_access('administer nodes');
+  return $may_revision_this_type && _node_revision_access($node);
 }
 
 /**
@@ -480,6 +493,14 @@ function diff_form_alter(&$form, $form_s
       '#weight' => 10,
       '#default_value' => variable_get('show_preview_changes_'. $form['#node_type']->type, TRUE),
     );
+    // Add checkbox to enable 'Revisions' page per node type.
+    $form['workflow']['enable_revisions_page'] = array(
+      '#type' => 'checkbox',
+      '#title' => t('Enable the %revisions page for this content type', array('%revisions' => t('Revisions'))),
+      '#prefix' => '<strong>'. t('Enable revisions page') .'</strong>',
+      '#weight' => 11,
+      '#default_value' => variable_get('enable_revisions_page_'. $form['#node_type']->type, TRUE),
+    );
   }
 }
 
