--- delete_all/delete_all.module	2007-12-23 05:22:05.000000000 +0200
+++ delete_all.module	2008-01-21 10:52:49.000000000 +0200
@@ -24,14 +24,32 @@ function delete_all_menu($maycache) {
   return $items;
 }
 
-function delete_all_content() {
+function delete_all_content($type = 'all') {
   $form['action'] = array(
     '#type'  => 'hidden',
     '#value' => 'content',
   );
+  $types = node_get_types('names');
+  // count current number of nodes for each type:
+  foreach ($types as $ctype => $name) {
+    $count[$ctype] = db_result(db_query('SELECT COUNT(*) FROM {node} n WHERE n.type LIKE "%s"', $ctype));
+  }
+  if ($type && $type != 'all') {
+    // Verify the passed type is valid, and if it's not, present a list of content types to delete
+    if (!array_key_exists($type, $types)) {
+      foreach ($types as $ctype => $name) {
+        $links[] = l(t('Delete all @type nodes', array('@type' => $name)), 'admin/content/delete_content/'.$ctype) . ' (' . $count[$ctype] . ')';
+      }
+      $form['types'] = array('#value' => theme('item_list', $links));
+      return $form;
+    }
+  }
+  // Set the node type to delete (or 'all')
+  $form['type2delete'] = array('#value' => check_plain($type), '#type' => 'value');
+  
   return confirm_form(
     $form,
-    t('Are you sure you want to delete all content?'),
+    t('Are you sure you want to delete all @type content?', array('@type' => $type == 'all' ? '' : $types[$type])),
     'admin',
     '',
     t('Delete'),
@@ -39,8 +57,14 @@ function delete_all_content() {
     'delete_all_content');
 }
 
-function delete_all_content_submit() {
-  $result = db_query('SELECT nid FROM {node}');
+function delete_all_content_submit($form_id, $form_values) {
+  
+  if ($form_values['type2delete'] != 'all') {
+    $result = db_query('SELECT nid FROM {node} WHERE type = "%s"', $form_values['type2delete']);
+  }
+  else {
+    $result = db_query('SELECT nid FROM {node}');
+  }
 
   $count = 0;
   while($data = db_fetch_object($result)) {
