diff -Naur stormteammember/stormteammember.admin.inc stormteammemberNew/stormteammember.admin.inc
--- stormteammember/stormteammember.admin.inc	2009-06-03 02:53:48.000000000 +0200
+++ stormteammemberNew/stormteammember.admin.inc	2009-07-01 03:03:41.000000000 +0200
@@ -13,9 +13,11 @@
     unset($_SESSION['stormteammember_list_filter']['project_nid']);
     unset($_SESSION['stormteammember_list_filter']['task_nid']);
     unset($_SESSION['stormteammember_list_filter']['ticket_nid']);
+    unset($_SESSION['stormteammember_list_filter']['person_title']);
   }
 
   if (array_key_exists('project_nid', $_GET)) {
+
     if ($_SESSION['stormteammember_list_filter']['project_nid'] != $_GET['project_nid']) {
       $_SESSION['stormteammember_list_filter']['project_nid'] = $_GET['project_nid'];
     }
@@ -24,6 +26,7 @@
 
     unset($_SESSION['stormteammember_list_filter']['task_nid']);
     unset($_SESSION['stormteammember_list_filter']['ticket_nid']);
+    unset($_SESSION['stormteammember_list_filter']['person_title']);
   }
 
   if (array_key_exists('task_nid', $_GET)) {
@@ -34,6 +37,7 @@
     $t = node_load($_GET['task_nid']);
     $_SESSION['stormteammember_list_filter']['organization_nid'] = $t->organization_nid;
     $_SESSION['stormteammember_list_filter']['project_nid'] = $t->project_nid;
+    $_SESSION['stormteammember_list_filter']['person_title'] = $t->person_title;
     unset($_SESSION['stormteammember_list_filter']['ticket_nid']);
   }
 
@@ -46,8 +50,24 @@
     $_SESSION['stormteammember_list_filter']['organization_nid'] = $ti->organization_nid;
     $_SESSION['stormteammember_list_filter']['project_nid'] = $ti->project_nid;
     $_SESSION['stormteammember_list_filter']['task_nid'] = $ti->task_nid;
+    $_SESSION['stormteammember_list_filter']['person_title'] = $t->person_title;
   }
 
+  if (array_key_exists('person_nid', $_GET)) {
+
+    if ($_SESSION['stormteammember_list_filter']['person_nid'] != $_GET['person_nid']) {
+      $_SESSION['stormteammember_list_filter']['person_nid'] = $_GET['person_nid'];
+    }
+
+    $ti = node_load($_GET['person_nid']);
+    $_SESSION['stormteammember_list_filter']['organization_nid'] = $ti->organization_nid;
+    $_SESSION['stormteammember_list_filter']['project_nid'] = $ti->project_nid;
+    $_SESSION['stormteammember_list_filter']['task_nid'] = $ti->task_nid;
+    $_SESSION['stormteammember_list_filter']['person_title'] = $t->person_title;
+  }
+
+
+
   $o = drupal_get_form('stormteammember_list_filter');
 
   $i = new stdClass();
@@ -71,6 +91,10 @@
       'field' => 'stm.ticket_title',
     ),
     array(
+      'data' => t('Person'),
+      'field' => 'stm.person_title ',
+    ),
+    array(
       'data' => storm_icon_add('storm/teammembers/add', $i, $_GET),
       'class' => 'storm_list_operations',
     ),
@@ -87,6 +111,9 @@
   if ($_SESSION['stormteammember_list_filter']['task_nid']) {
     $where[] = 'stm.task_nid='. $_SESSION['stormteammember_list_filter']['task_nid'];
   }
+  if ($_SESSION['stormteammember_list_filter']['person_nid']) {
+    $where[] = 'stm.person_nid='. $_SESSION['stormteammember_list_filter']['person_nid'];
+  }
   if ($_SESSION['stormteammember_list_filter']['ticket_nid']) {
     $where[] = 'stm.ticket_nid='. $_SESSION['stormteammember_list_filter']['ticket_nid'];
   }
@@ -114,6 +141,7 @@
 function stormteammember_list_filter() {
   $organization_nid = $_SESSION['stormteammember_list_filter']['organization_nid'];
   $project_nid = $_SESSION['stormteammember_list_filter']['project_nid'];
+  $person_nid = $_SESSION['stormteammember_list_filter']['person_nid'];
   $task_nid = $_SESSION['stormteammember_list_filter']['task_nid'];
   $ticket_nid = $_SESSION['stormteammember_list_filter']['ticket_nid'];
   $itemsperpage = $_SESSION['stormteammember_list_filter']['itemsperpage'];
@@ -175,6 +203,24 @@
     '#attributes' => array('onchange' => "stormticket_project_task_tickets(this, 'edit-organization-nid', 'edit-task-nid', 'edit-ticket-nid', true, 'All')"),
   );
 
+  $s = "SELECT n.nid, n.title FROM {node} AS n INNER JOIN {stormperson} AS sor ON sor.vid=n.vid
+  WHERE n.status=1 AND n.type='stormperson' ORDER BY n.title";
+  $s = stormorganization_access_sql($s);
+  $s = db_rewrite_sql($s);
+  $r = db_query($s);
+  $persons = array();
+  while ($person = db_fetch_object($r)) {
+    $persons[$person->nid] = $person->title;
+  }
+  $persons = array(0 => t('All')) + $persons;
+  $form['filter']['group1']['person_nid'] = array(
+    '#type' => 'select',
+    '#title' => t('Person'),
+    '#default_value' => $person_nid,
+    '#options' => $persons,
+  );
+
+
   $tree = _stormtask_get_tree($project_nid);
   $tasks = _stormtask_plain_tree($tree);
   $tasks = array(0 => t('All')) + $tasks;
@@ -187,6 +233,8 @@
     '#attributes' => array('onchange' => "stormticket_task_tickets(this, 'edit-organization-nid', 'edit-project-nid', 'edit-ticket-nid', true, 'All')"),
   );
 
+
+
   $s = "SELECT n.nid, n.title FROM {node} AS n INNER JOIN {stormticket} AS sti
   ON sti.vid=n.vid WHERE n.status=1 AND n.type='stormticket' AND sti.organization_nid=%d AND sti.project_nid=%d AND sti.task_nid=%d ORDER BY title ";
   $s = stormticket_access_sql($s);
@@ -238,6 +286,7 @@
   $_SESSION['stormteammember_list_filter']['organization_nid'] = $form_state['values']['organization_nid'];
   $_SESSION['stormteammember_list_filter']['project_nid'] = $form_state['values']['project_nid'];
   $_SESSION['stormteammember_list_filter']['task_nid'] = $form_state['values']['task_nid'];
+  $_SESSION['stormteammember_list_filter']['person_nid'] = $form_state['values']['person_nid'];
   $_SESSION['stormteammember_list_filter']['ticket_nid'] = $form_state['values']['ticket_nid'];
   $_SESSION['stormteammember_list_filter']['itemsperpage'] = $form_state['values']['itemsperpage'];
 }
@@ -370,6 +419,12 @@
       $p = node_load($teammember->project_nid);
       $teammember->organization_nid = $p->organization_nid;
     }
+     if (array_key_exists('person_nid', $_GET) && !$teammember->person_nid) {
+      $teammember->person_nid = $_GET['person_nid'];
+      $p = node_load($teammember->person_nid);
+      $teammember->organization_nid = $p->organization_nid;
+    }
+
     if (array_key_exists('task_nid', $_GET) && !$teammember->task_nid) {
       $teammember->task_nid = $_GET['task_nid'];
       $t = node_load($teammember->task_nid);
@@ -390,6 +445,9 @@
     if ($_SESSION['stormteammember_list_filter']['project_nid'] && !$teammember->project_nid) {
       $teammember->project_nid = $_SESSION['stormteammember_list_filter']['project_nid'];
     }
+    if ($_SESSION['stormteammember_list_filter']['person_nid'] && !$teammember->person_nid) {
+      $teammember->person_nid = $_SESSION['stormteammember_list_filter']['person_nid'];
+    }
     if ($_SESSION['stormteammember_list_filter']['task_nid'] && !$teammember->task_nid) {
       $teammember->task_nid = $_SESSION['stormteammember_list_filter']['task_nid'];
     }
@@ -398,6 +456,7 @@
     }
     if (array_key_exists('organization_nid', $_GET)) $teammember->organization_nid = $_GET['organization_nid'];
     if (array_key_exists('project_nid', $_GET)) $teammember->project_nid = $_GET['project_nid'];
+    if (array_key_exists('person_nid', $_GET)) $teammember->person_nid = $_GET['person_nid'];
     if (array_key_exists('task_nid', $_GET)) $teammember->task_nid = $_GET['task_nid'];
     if (array_key_exists('ticket_nid', $_GET)) $teammember->ticket_nid = $_GET['ticket_nid'];
 
diff -Naur stormteammember/stormteammember.theme.inc stormteammemberNew/stormteammember.theme.inc
--- stormteammember/stormteammember.theme.inc	2009-02-15 10:03:35.000000000 +0100
+++ stormteammemberNew/stormteammember.theme.inc	2009-07-01 02:59:43.000000000 +0200
@@ -16,6 +16,7 @@
       l($teammember->project_title, 'node/'. $teammember->project_nid),
       l($teammember->task_title, 'node/'. $teammember->task_nid),
       l($teammember->ticket_title, 'node/'. $teammember->ticket_nid),
+      l($teammember->person_title, 'node/'. $teammember->person_nid),
       array(
         'data' => storm_icon_edit('storm/teammembers/edit/'. $teammember->tid, $i, $_GET) .'&nbsp;'.  storm_icon_delete('storm/teammembers/delete/'. $teammember->tid, $i, $_GET),
         'class' => 'storm_list_operations',
@@ -78,6 +79,7 @@
         t('Organization', array(), $language),
         t('Project', array(), $language),
         t('Title', array(), $language),
+	t('Person', array(), $language),
         t('Date', array(), $language),
         t('Duration (hours)', array(), $language));
       $total_duration = 0;
@@ -86,6 +88,7 @@
           $teammember->organization_title,
           $teammember->project_title,
           $teammember->title,
+	  $teammember->person_title,
           format_date($teammember->trackingdate, 'small'),
           array('data' => sprintf('%.2f', $teammember->duration), 'align' => 'right'),
         );
@@ -98,6 +101,7 @@
       $header = array(
         t('Project', array(), $language),
         t('Title', array(), $language),
+	t('Person', array(), $language),
         t('Date', array(), $language),
         t('Duration (hours)', array(), $language));
       $total_duration = 0;
@@ -105,6 +109,7 @@
         $rows[] = array(
           $teammember->project_title,
           $teammember->title,
+	  $teammember->person_title,
           format_date($teammember->trackingdate, 'small'),
           array('data' => sprintf('%.2f', $teammember->duration), 'align' => 'right'),
         );
@@ -119,6 +124,7 @@
         t('Project', array(), $language),
         t('Task', array(), $language),
         t('Title', array(), $language),
+	t('Person', array(), $language),
         t('Date', array(), $language),
         t('Duration (hours)', array(), $language));
       $total_duration = 0;
@@ -127,6 +133,7 @@
           $teammember->project_title,
           $teammember->task_title,
           $teammember->title,
+	  $teammember->person_title,
           format_date($teammember->trackingdate, 'small'),
           array('data' => sprintf('%.2f', $teammember->duration), 'align' => 'right'),
         );
@@ -142,6 +149,7 @@
       $header = array(
         t('Task', array(), $language),
         t('Title', array(), $language),
+	t('Person', array(), $language),
         t('Date', array(), $language),
         t('Duration (hours)', array(), $language));
       $total_duration = 0;
@@ -149,6 +157,7 @@
         $rows[] = array(
           $teammember->task_title,
           $teammember->title,
+	  $teammember->person_title,
           format_date($teammember->trackingdate, 'small'),
           array('data' => sprintf('%.2f', $teammember->duration), 'align' => 'right'),
         );
