Hi Adam
Have you tried
$data['term_node']['tid_purpose'] = array(
  'real field' => 'tid',
....

This tops the
    'group' => t('Taxonomy'),
    'title' => t('Term ID by Purpose'),
    'help' => t('The taxonomy term id, restricted by vocabulary purpose.'),
    'filter' => array(
      'handler' => 'og_vocab_purpose_handler_filter_term_node_tid',
      'hierarchy ta


On Thu, 2010-07-15 at 19:49 -0700, Adam B. Ross wrote:
I am trying to dive into Views Plugin writing, and I suspect I've hit
a deep end.

I'm working on a module which builds on OG Vocabularies, with the aim
of being able to assign a given group vocabulary to a particular
purpose for that group. For example, you could define a "Waterfall"
group vocabulary as a project management field for the group, and in a
different group, use an "Agile" group vocabulary.

As part of my use case, I need to be able to create an Exposed Filter
that will make use of whichever group Vocabulary is assigned to the
Purpose configured in the View itself. I am having trouble wrapping my
head around how to do this.

Using the Taxonomy TID filter, you can select a vocabulary and an
interface widget. I want to select a Purpose and an interface widget,
have it do nothing except as an exposed filter, and then a View
displayed in a given group will route it's widget to the configured
vocabulary.

(Still working out how to describe this functionality.)

At this point, I'm defining my handler like so:

function og_vocab_purpose_views_data_alter(&$data) {
  // This handler is dependent on Spaces OG.
  if (!module_exists('spaces_og')) {
    return array();
  }
  $data['term_node']['tid_purpose'] = array(
    'group' => t('Taxonomy'),
    'title' => t('Term ID by Purpose'),
    'help' => t('The taxonomy term id, restricted by vocabulary purpose.'),
    'filter' => array(
      'handler' => 'og_vocab_purpose_handler_filter_term_node_tid',
      'hierarchy table' => 'term_hierarchy',
      'numeric' => TRUE,
      'skip base' => 'term_data',
      'allow empty' => TRUE,
    ),
  );
}

But of course, it then tries to use tid_purpose as an actual field.
Can't use "tid" as that's already taken...

Any pointers on an approach, documentation, or modules with similar
functionality would be greatly appreciated.