Index: drupalorg_project/drupalorg_project.module
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/drupalorg/drupalorg_project/drupalorg_project.module,v
retrieving revision 1.24
diff -u -r1.24 drupalorg_project.module
--- drupalorg_project/drupalorg_project.module	18 Aug 2009 17:48:20 -0000	1.24
+++ drupalorg_project/drupalorg_project.module	11 Feb 2010 17:51:24 -0000
@@ -210,7 +210,14 @@
   }
     
   // Deprecate the "license" field, as it must always be GPLv2+ anyway.
-  if ($form_id == 'project_project_node_form') {
+  if ($form_id == 'project_project_node_form') { 
+    if (!empty($form['taxonomy'])) {
+      foreach (array_keys($form['taxonomy']) as $vid) {
+        if (is_numeric($vid) && $tid = variable_get('drupalorg_project_tid_'. $vid, NULL)) {          
+          $form['taxonomy'][$vid]['#attributes']['class'] = 'related-tid-'. $tid;
+        }
+      }
+    }
     if (! $form['project']['license']['#default_value']) {
        $form['project']['license'] = array(
         '#type' => 'item',
@@ -723,3 +730,39 @@
   $recent_updates .= '<p>'. l(t('More commit messages...'), 'cvs') .'</p>';
   $vars['tab_content_cvs'] = $recent_updates;
 }
+
+/**
+ * Implementation of hook_form_FORM_ID_alter().
+ */
+function drupalorg_project_form_taxonomy_form_vocabulary_alter(&$form, &$form_state) {
+  $tree = taxonomy_get_tree(_project_get_vid());
+  $top_level = array('');
+  foreach ($tree as $i => $term) {
+    if ($term->parents[0] == 0) {
+      $top_level[$term->tid] = $term->name;
+    }
+  }
+  $form['settings']['drupalorg_project_tid'] = array(
+    '#title' => t('Associated project taxonomy term'),
+    '#type' => 'select',
+    '#options' => $top_level,
+    '#default_value' => isset($form['vid']['#value']) ? variable_get('drupalorg_project_tid_'. $form['vid']['#value'], NULL) : NULL,
+  );
+}
+
+/**
+ * Implementation of hook_taxonomy().
+ */
+function drupalorg_project_taxonomy($op, $type, $array = NULL) {
+  if ($type == 'vocabulary' && isset($array['drupalorg_project_tid'])) {
+    switch($op) {
+      case 'insert':
+      case 'update':
+        variable_set('drupalorg_project_tid_'. $array['vid'], $array['drupalorg_project_tid']);
+        break;
+      case 'delete':
+        variable_del('drupalorg_project_tid_'. $array['vid']);
+        break;
+    }
+  }
+}
\ No newline at end of file
