diff -Narup primary_term.orig/primary_term_context_condition_primary_term.inc primary_term/primary_term_context_condition_primary_term.inc
--- primary_term.orig/primary_term_context_condition_primary_term.inc	1969-12-31 18:00:00.000000000 -0600
+++ primary_term/primary_term_context_condition_primary_term.inc	2010-03-15 18:45:25.000000000 -0500
@@ -0,0 +1,37 @@
+<?php
+// $Id$
+
+class primary_term_context_condition_primary_term extends context_condition_node {
+  function condition_values() {
+    $values = array();
+    if (module_exists('taxonomy')) {
+      foreach (taxonomy_get_vocabularies() as $vocab) {
+        if (empty($vocab->tags)) {
+          foreach (taxonomy_get_tree($vocab->vid) as $term) {
+            $values[$term->tid] = $term->name;
+          }
+        }
+      }
+    }
+    return $values;
+  }
+
+  function condition_form($context) {
+    $form = parent::condition_form($context);
+    $form['#type'] = 'select';
+    $form['#options'] = taxonomy_form_all();
+    $form['#size'] = 12;
+    $form['#multiple'] = TRUE;
+    return $form;
+  }
+
+  function execute($node, $op) {
+    $map = context_condition_map();
+    if (!empty($map['primary_term']) && $node->primary_term->tid) {
+      foreach ($this->get_contexts($node->primary_term->tid) as $context) {
+        $this->condition_met($context, $node->primary_term->tid);
+      }
+    }
+  }
+}
+?>
diff -Narup primary_term.orig/primary_term.module primary_term/primary_term.module
--- primary_term.orig/primary_term.module	2010-03-15 17:40:12.000000000 -0500
+++ primary_term/primary_term.module	2010-03-15 18:45:09.000000000 -0500
@@ -73,6 +73,17 @@ function primary_term_nodeapi(&$node, $o
       $node->primaryterm = $tid;
       $node->primary_term = $term;
       break;
+        
+    case 'view':
+      if (module_exists('context') && $page) {
+        $object = menu_get_object();
+        if (isset($object->nid) && $object->nid === $node->nid) {
+          if ($plugin = context_get_plugin('condition', 'primary_term')) {
+            $plugin->execute($node, 'view');
+          }
+        }
+      }
+      break;
   }
 }
 
@@ -208,3 +219,34 @@ function primary_term_views_data() {
   );
   return $tables;
 }
+
+/* Context module integration */
+function primary_term_ctools_plugin_api($module, $api) {
+  if ($module == 'context' && $api == 'plugins') {
+    return array('version' => 3);
+  }
+}
+
+function primary_term_context_plugins() {
+  $plugins = array();
+  $plugins['primary_term_context_condition_primary_term'] = array(
+    'handler' => array(
+      'path' => drupal_get_path('module', 'primary_term'),
+      'file' => 'primary_term_context_condition_primary_term.inc',
+      'class' => 'primary_term_context_condition_primary_term',
+      'parent' => 'context_condition_node',
+    ),
+  );
+  return $plugins;
+}
+
+function primary_term_context_registry() {
+  return array(
+    'conditions' => array(
+      'primary_term' => array(
+        'title' => t('Primary Term'),
+        'plugin' => 'primary_term_context_condition_primary_term',
+      ),
+    ),
+  );
+}
