--- storm/storm.theme.inc	2009-07-13 16:06:38.000000000 +0100
+++ storm-527768-6/storm.theme.inc	2009-07-24 12:33:11.000000000 +0100
@@ -194,3 +194,108 @@ function theme_storm_dashboard() {
   $o .= '</div>';
   return $o;
 }
+
+function theme_storm_link($destination_module, $source_module, $node_nid, $weight) {
+  switch ($source_module) {
+ 
+   case "stormorganization":
+      $params_key = 'organization_nid';
+      break;
+
+    case "stormproject":
+      $params_key = 'project_nid';
+      break;
+
+    case "stormtask":
+      $params_key = 'task_nid';
+      break;
+
+    case "stormticket":
+      $params_key = 'ticket_nid';
+      break;
+  }
+
+  switch ($destination_module) {
+    case "stormexpense":
+      $user_access_check = 'Storm expense: access';
+      $list_text = 'Expenses';
+      $list_path = 'storm/expenses/';
+      $add_icon_type = 'stormexpense';
+      $dt_id = 'stormexpenses';
+      break;
+
+    case "storminvoice":
+      $user_access_check = 'Storm invoice: access';
+      $list_text = 'Invoices';
+      $list_path = 'storm/invoices/';
+      $add_icon_type = 'storminvoice';
+      $dt_id = 'storminvoices';
+      break;
+
+    case "stormnote":
+      $user_access_check = 'Storm note: access';
+      $list_text = 'Notes';
+      $list_path = 'storm/notes/';
+      $add_icon_type = 'stormnote';
+      $dt_id = 'stormnotes';
+      break;
+
+    case "stormperson":
+      $user_access_check = 'Storm person: access';
+      $list_text = 'People';
+      $list_path = 'storm/people/';
+      $add_icon_type = 'stormperson';
+      $dt_id = 'stormpeople';
+      break;
+
+    case "stormproject":
+      $user_access_check = 'Storm project: access';
+      $list_text = 'Projects';
+      $list_path = 'storm/projects/';
+      $add_icon_type = 'stormproject';
+      $dt_id = 'stormprojects';
+      break;
+
+    case "stormtask":
+      $user_access_check = 'Storm task: access';
+      $list_text = 'Tasks';
+      $list_path = 'storm/tasks/';
+      $add_icon_type = 'stormtask';
+      $dt_id = 'stormtasks';
+      break;
+
+    case "stormticket":
+      $user_access_check = 'Storm ticket: access';
+      $list_text = 'Tickets';
+      $list_path = 'storm/tickets/';
+      $add_icon_type = 'stormticket';
+      $dt_id = 'stormtickets';
+      break;
+
+    case "stormtimetracking":
+      $user_access_check = 'Storm timetracking: access';
+      $list_text = 'Timetrackings';
+      $list_path = 'storm/timetrackings/';
+      $add_icon_type = 'stormtimetracking';
+      $node_links_key = 'timetrackings';
+      $dt_id = 'stormtimetrackings';
+
+      break;
+  }
+
+  if (module_exists($destination_module) && user_access($user_access_check)) {
+    $v = l(t($list_text), $list_path, array('query' => array($params_key => $node_nid)));
+
+    $i->type = $add_icon_type;
+    $params = $_GET;
+    $params[$params_key] = $node_nid;
+    $v .= storm_icon_add_node($i, $params);
+
+    return array(
+      '#prefix' => '<dt id="'. $dt_id .'" class="stormcomponent">',
+      '#suffix' => '</dt>',
+      '#value' => $v,
+      '#weight' => $weight,
+    );
+  }
+}
\ No newline at end of file
