Index: modules/node/node.admin.inc
===================================================================
RCS file: /cvs/drupal/drupal/modules/node/node.admin.inc,v
retrieving revision 1.24
diff -u -r1.24 node.admin.inc
--- modules/node/node.admin.inc	19 Jul 2008 19:04:24 -0000	1.24
+++ modules/node/node.admin.inc	26 Aug 2008 11:47:31 -0000
@@ -144,13 +144,6 @@
       'sticky-0' => t('not sticky'),
     ),
   );
-  // Include translation states if we have this module enabled
-  if (module_exists('translation')) {
-    $filters['status']['options'] += array(
-      'translate-0' => t('Up to date translation'),
-      'translate-1' => t('Outdated translation'),
-    );
-  }
 
   $filters['type'] = array('title' => t('type'), 'options' => node_get_types('names'));
 
@@ -163,6 +156,15 @@
     $languages = array('' => t('Language neutral')) + $languages;
     $filters['language'] = array('title' => t('language'), 'options' => $languages);
   }
+
+  // Include translation states filters if we have this module enabled
+  if (module_exists('translation')) {
+    $filters['translation'] = array('title' => t('translation'), 
+      'options' => array('translate-0' => t('Up to date translation'), 
+                         'translate-1' => t('Outdated translation'), 
+                         'translation-source' => t('Source node')),
+    );
+  }
   return $filters;
 }
 
@@ -194,6 +196,16 @@
       case 'language':
         $where[] = "n.language = '%s'";
         break;
+      case 'translation': 
+        if ($value == 'translation-source') {
+          $where[] = 'n.nid = n.tnid'; 
+        }
+        else {
+          // Note: no exploitable hole as $key/$value have already been checked when submitted
+          list($key, $value) = explode('-', $value, 2);
+          $where[] = 'n.'. $key .' = %d';
+        }
+        break;
     }
     $args[] = $value;
   }
