|  | @@ -171,7 +171,12 @@ class chado_views_handler_filter_fk extends views_handler_filter {
 | 
	
		
			
				|  |  |    
 | 
	
		
			
				|  |  |    function get_select_options() {
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -    $name_field = 'common_name';
 | 
	
		
			
				|  |  | +    if (isset($this->options['display_column'])) {
 | 
	
		
			
				|  |  | +      $name_field = $this->options['display_column'];
 | 
	
		
			
				|  |  | +    } 
 | 
	
		
			
				|  |  | +    else {
 | 
	
		
			
				|  |  | +      $name_field = 'name';
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  |          
 | 
	
		
			
				|  |  |      // Using a "Loose Index Scan" to get a list of all the unique values for
 | 
	
		
			
				|  |  |      // the name in the table referenced by the foreign key constraint.
 | 
	
	
		
			
				|  | @@ -236,7 +241,7 @@ class chado_views_handler_filter_fk extends views_handler_filter {
 | 
	
		
			
				|  |  |        ),
 | 
	
		
			
				|  |  |        '#default_value' => $this->options['values_form_type'],
 | 
	
		
			
				|  |  |      );
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | +    
 | 
	
		
			
				|  |  |      // @todo: implement.
 | 
	
		
			
				|  |  |      //$form['show_all'] = array(
 | 
	
		
			
				|  |  |        //'#type' => 'checkbox',
 | 
	
	
		
			
				|  | @@ -260,6 +265,23 @@ class chado_views_handler_filter_fk extends views_handler_filter {
 | 
	
		
			
				|  |  |        '#default_value' => $this->options['select_optional'],
 | 
	
		
			
				|  |  |      );
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +    // Allow the user to select which column to display to the user.
 | 
	
		
			
				|  |  | +    // For example, if the foreign key points to the organism table you might want to
 | 
	
		
			
				|  |  | +    // display the abbreviation or common name to the user.
 | 
	
		
			
				|  |  | +    $table_defn = chado_get_schema($this->definition['foreign_key']['right_table']);
 | 
	
		
			
				|  |  | +    $options = array();
 | 
	
		
			
				|  |  | +    foreach ($table_defn['fields'] as $name => $details) {
 | 
	
		
			
				|  |  | +      $options[$name] = $name;
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +    $form['display_column'] = array(
 | 
	
		
			
				|  |  | +      '#type' => 'select',
 | 
	
		
			
				|  |  | +      '#title' => 'Display Column',
 | 
	
		
			
				|  |  | +      '#description' => t('Specify which column from the parent table you would like to
 | 
	
		
			
				|  |  | +        display to the user.'),
 | 
	
		
			
				|  |  | +      '#options' => $options,
 | 
	
		
			
				|  |  | +      '#default_value' => $this->options['display_column'],
 | 
	
		
			
				|  |  | +    );
 | 
	
		
			
				|  |  | +    
 | 
	
		
			
				|  |  |      $form['max_length'] = array(
 | 
	
		
			
				|  |  |        '#type' => 'textfield',
 | 
	
		
			
				|  |  |        '#title' => t('Max Width'),
 | 
	
	
		
			
				|  | @@ -267,11 +289,6 @@ class chado_views_handler_filter_fk extends views_handler_filter {
 | 
	
		
			
				|  |  |        '#default_value' => $this->options['max_length'],
 | 
	
		
			
				|  |  |      );
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -    $form['note'] = array(
 | 
	
		
			
				|  |  | -      '#type' => 'markup',
 | 
	
		
			
				|  |  | -      '#value' => t('<strong><font color="red">Note:</font></strong> If another filter exists for the same table then ' . 'the values shown in the drop box will only include those from rows that are not filtered.'),
 | 
	
		
			
				|  |  | -    );
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  |      return $form;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |    }
 | 
	
	
		
			
				|  | @@ -283,21 +300,11 @@ class chado_views_handler_filter_fk extends views_handler_filter {
 | 
	
		
			
				|  |  |      $this->options['values_form_type'] = $form_state['values']['options']['values_form_type'];
 | 
	
		
			
				|  |  |      $this->options['select_multiple'] = $form_state['values']['options']['select_multiple'];
 | 
	
		
			
				|  |  |      $this->options['select_optional'] = $form_state['values']['options']['select_optional'];
 | 
	
		
			
				|  |  | +    $this->options['display_column'] = $form_state['values']['options']['display_column'];
 | 
	
		
			
				|  |  |      $this->options['max_length'] = $form_state['values']['options']['max_length'];
 | 
	
		
			
				|  |  |      $this->options['show_all'] = $form_state['values']['options']['show_all'];
 | 
	
		
			
				|  |  |    }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -  /**
 | 
	
		
			
				|  |  | -   * {@inheritdoc}
 | 
	
		
			
				|  |  | -   */
 | 
	
		
			
				|  |  | -  function extra_options_options() {
 | 
	
		
			
				|  |  | -    $this->options['values_form_type'] = 'textfield';
 | 
	
		
			
				|  |  | -    $this->options['select_multiple'] = FALSE;
 | 
	
		
			
				|  |  | -    $this->options['select_optional'] = FALSE;
 | 
	
		
			
				|  |  | -    $this->options['max_length'] = 40;
 | 
	
		
			
				|  |  | -    $this->options['show_all'] = FALSE;
 | 
	
		
			
				|  |  | -  }
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  |    /**
 | 
	
		
			
				|  |  |     * {@inheritdoc}
 | 
	
		
			
				|  |  |     */
 | 
	
	
		
			
				|  | @@ -323,6 +330,21 @@ class chado_views_handler_filter_fk extends views_handler_filter {
 | 
	
		
			
				|  |  |        'bool' => TRUE,
 | 
	
		
			
				|  |  |        'export' => TRUE,
 | 
	
		
			
				|  |  |      );
 | 
	
		
			
				|  |  | +    
 | 
	
		
			
				|  |  | +    // display column.
 | 
	
		
			
				|  |  | +    $table_defn = chado_get_schema($this->definition['foreign_key']['right_table']);
 | 
	
		
			
				|  |  | +    $fields = array_keys($table_defn['fields']);
 | 
	
		
			
				|  |  | +    $name_fields = preg_grep('/name/', $fields);
 | 
	
		
			
				|  |  | +    if ($name_fields) {
 | 
	
		
			
				|  |  | +      $default = array_pop($name_fields);
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +    else {
 | 
	
		
			
				|  |  | +      $default = array_pop($fields);
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +    $options['display_column'] = array(
 | 
	
		
			
				|  |  | +      'export' => TRUE,
 | 
	
		
			
				|  |  | +      'default' => $default,
 | 
	
		
			
				|  |  | +    );
 | 
	
		
			
				|  |  |      $options['max_length'] = array(
 | 
	
		
			
				|  |  |        'default' => 40,
 | 
	
		
			
				|  |  |        'export' => TRUE,
 |