Index: views/views.module
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/views/views.module,v
retrieving revision 1.166.2.13
diff -u -r1.166.2.13 views.module
--- views/views.module	4 Mar 2007 06:10:55 -0000	1.166.2.13
+++ views/views.module	5 Mar 2007 12:43:32 -0000
@@ -1,6 +1,6 @@
 <?php
 // $Id: views.module,v 1.166.2.13 2007/03/04 06:10:55 merlinofchaos Exp $
-// $Name:  $
+// $Name: DRUPAL-5 $
 
 // ---------------------------------------------------------------------------
 // Drupal Hooks
@@ -28,7 +28,7 @@
     if (arg(0) == 'admin' && arg(2) == 'modules') {
       views_invalidate_cache();
     }
-    
+
     views_menu_standard_items($items);
   }
   else {
@@ -142,20 +142,36 @@
 }
 
 /**
+ * Implementation of hook_views_tabs().
+ */
+function views_views_tabs($op) {
+  switch ($op) {
+    case 'names':
+      return array('edit', 'view', 'clone', 'export');
+      break;
+  }
+}
+
+/**
  * Add the adminstrative items to a view.
  */
 function views_menu_admin_items(&$items, $view_name, $view_args, $args) {
+  // Remove args that are tabs from $args.
+  $tabs = array();
+  foreach (module_implements('views_tabs') as $module) {
+    $function = $module .'_views_tabs';
+    $tabs = array_merge($tabs, (array) $function('names'));
+  }
   // See what the last arg is.
   $last_arg = array_pop($args);
-  if (in_array($last_arg, array('edit', 'view', 'clone', 'export'))) {
+  if (in_array($last_arg, $tabs)) {
     array_pop($view_args);
   }
   else {
     $args[] = $last_arg;
   }
-
-  $path = implode('/', $args);
   $view = views_get_view($view_name);
+  $path = implode('/', $args);
   views_ui_add_menu_items($items, $view, $path, $path != $_GET['q'] && !empty($view_args), $view_args);
 }
 
@@ -634,7 +650,7 @@
     if (!$already_set) {
       if ($GLOBALS['db_type'] == 'mysqli' || version_compare(mysql_get_server_info(), '4.1.3', '>=')) {
         db_query("SET @@session.time_zone = '+00:00'");
-      } 
+      }
       $already_set = true;
     }
   }
@@ -1764,7 +1780,7 @@
   if (!$node) {
     return FALSE;
   }
-  
+
   if ($argument && $node->type != $argument) {
     return FALSE;
   }
