Index: modules/node/node.module
===================================================================
RCS file: /cvs/drupal/drupal/modules/node/node.module,v
retrieving revision 1.1196
diff -u -p -r1.1196 node.module
--- modules/node/node.module	4 Jan 2010 03:57:19 -0000	1.1196
+++ modules/node/node.module	5 Jan 2010 21:30:58 -0000
@@ -1891,7 +1891,15 @@ function node_menu() {
       'description' => $type->description,
       'file' => 'node.pages.inc',
     );
+    $items['node/view/' . $type_url_str] = array(
+      'title' => $type->name,
+      'page callback' => 'node_types_view',
+      'page arguments' => array(2),
+      'access arguments' => array('access content'),
+      'type' => MENU_CALLBACK,
+    );
   }
+  
   $items['node/%node'] = array(
     'page callback' => 'node_page_view',
     'page arguments' => array(1),
@@ -2216,6 +2224,54 @@ function node_page_default() {
 }
 
 /**
+ * Menu callback; Generate a listing of nodes filtered by content types.
+ */
+function node_types_view($type) {
+  $select = db_select('node', 'n')
+    ->fields('n', array('nid'))
+    ->condition('type', $type)
+    ->condition('status', 1)
+    ->orderBy('sticky', 'DESC')
+    ->orderBy('created', 'DESC')
+    ->extend('PagerDefault')
+    ->limit(variable_get('default_nodes_main', 10))
+    ->addTag('node_access');
+
+  $nids = $select->execute()->fetchCol();
+
+  if (!empty($nids)) {
+    $nodes = node_load_multiple($nids);
+    $build = node_view_multiple($nodes);
+
+    $feed_url = url('rss.xml', array('absolute' => TRUE));
+    drupal_add_feed($feed_url, variable_get('site_name', 'Drupal') . ' ' . t('RSS'));
+    $build['pager'] = array(
+      '#theme' => 'pager',
+      '#weight' => 5,
+    );
+  }
+  else {
+
+    $default_message = '<p>' . t('No @type has been created yet.', array('@type' => $type)) . '</p>';
+
+    $default_links = array();
+    if (_node_add_access()) {
+      $default_links[] = l(t('Create @type', array('@type' => $type)), ('node/add/' . $type));
+    }
+    if (!empty($default_links)) {
+      $default_message .= theme('item_list', array('items' => $default_links));
+    }
+
+    $build['default_message'] = array(
+      '#markup' => $default_message,
+      '#prefix' => '<div id="first-time">',
+      '#suffix' => '</div>',
+    );
+  }
+  return $build;
+}
+
+/**
  * Menu callback; view a single node.
  */
 function node_page_view($node) {
