Index: nodewords.module
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/nodewords/nodewords.module,v
retrieving revision 1.57.2.356
diff -u -r1.57.2.356 nodewords.module
--- nodewords.module	30 May 2010 01:44:53 -0000	1.57.2.356
+++ nodewords.module	5 Jul 2010 00:55:24 -0000
@@ -251,10 +251,18 @@
  */
 function nodewords_add_tokens_help(&$form, $type) {
   switch ($type['type']) {
-    case NODEWORDS_TYPE_ERRORPAGE:
     case NODEWORDS_TYPE_PAGE:
       $tokens_type[] = 'global';
       $tokens_type[] = 'global meta tags';
+      $tokens_type[] = 'node';
+      $tokens_type[] = 'node meta tags';
+      $tokens_type[] = 'taxonomy';
+      $tokens_type[] = 'user';
+	  break;
+	  
+    case NODEWORDS_TYPE_ERRORPAGE:
+      $tokens_type[] = 'global';
+      $tokens_type[] = 'global meta tags';
       break;
 
     case NODEWORDS_TYPE_DEFAULT:
@@ -578,9 +586,56 @@
   }
 
   switch ($options['type']) {
-    case NODEWORDS_TYPE_ERRORPAGE:
     case NODEWORDS_TYPE_PAGE:
+	  // Since a custom page can be virtually anything, we need to load global tokens and check arg(0)
+	  // to see if there are additional tokens that we need to bring into scope.
+      $token_objects['global'] = NULL;
+      $token_objects['global meta tags'] = NULL;
+	  $arg = arg();
+	  if (isset($arg[0])) {
+		switch($arg[0]) {
+			case 'node':
+				$node_options = array();
+				node_nodewords_type_id($node_options,$arg);
+				$token_objects['node'] = _nodewords_node_load($node_options);
+				$token_objects['node meta tags'] = $token_objects['node'];
+				break;
+			case 'user':
+				$user_options = array();
+				user_metatags_type($user_options, $arg);
+				$token_objects['user'] = user_load($user_options['id']);
+				break;
+			case 'taxonomy':
+				$taxonomy_options = array();
+				taxonomy_nodewords_type_id($taxonomy_options, $arg);
+				$token_objects['taxonomy'] = _nodewords_taxonomy_object_load($taxonomy_options);
+				break;
+			case 'catalog':
+				$uc_catalog_options = array();
+				forum_nodewords_type_id($uc_catalog_options, $arg);
+				$token_objects['taxonomy'] = _nodewords_taxonomy_object_load($uc_catalog_options);
+				break;
+			case 'image':
+				$image_options = array();
+				image_nodewords_type_id($image_options, $arg);
+				$token_objects['taxonomy'] = _nodewords_taxonomy_object_load($image_options);
+				break;
+			case 'forum':
+				$forum_options = array();
+				forum_nodewords_type_id($forum_options, $arg);
+				$token_objects['taxonomy'] = _nodewords_taxonomy_object_load($forum_options);
+				break;
+			case 'taxonomy_menu':
+				$taxonomy_menu_options = array();
+				taxonomy_menu_nodewords_type_id($taxonomy_menu_options, $arg);
+				$token_objects['taxonomy'] = _nodewords_taxonomy_object_load($taxonomy_menu_options);
+				break;
+		}
+	  }
+	  break;
+    case NODEWORDS_TYPE_ERRORPAGE:
       $token_objects['global'] = NULL;
+      $token_objects['global meta tags'] = NULL;
       break;
 
     case NODEWORDS_TYPE_NODE:

