Browse Source

CV: Updated menu & cv/cvterm add/edit forms to work with default admin views, fixed some bugs in default admin views & cleaned out duplicated buggy code from tripal_cv_admin.inc

Lacey Sanderson 11 years ago
parent
commit
842f838866

+ 43 - 40
tripal_cv/includes/cv_form.inc

@@ -1,4 +1,4 @@
-<?php 
+<?php
 /**
  * Purpose: Provides the actual "Select CV" form on the Update/Delete Controlled
  *   Vocabulary page. This form also triggers the edit javascript
@@ -12,8 +12,11 @@ function tripal_cv_cv_edit_form($form, &$form_state) {
   $cv_id = 0;
   if (array_key_exists('values', $form_state)) {
     $cv_id = $form_state['values']['cv_id'];
-  }    
-  
+  }
+  elseif (isset($form_state['build_info']['args'][0])) {
+    $cv_id = $form_state['build_info']['args'][0];
+  }
+
   // get a list of db from chado for user to choose
   $sql = "SELECT * FROM {cv} WHERE NOT name = 'tripal' ORDER BY name ";
   $results = chado_query($sql);
@@ -35,15 +38,15 @@ function tripal_cv_cv_edit_form($form, &$form_state) {
       'event'    => 'change',
       'method'   => 'replace',
     ),
-    '#default_value' => $cv_id, 
+    '#default_value' => $cv_id,
   );
 
-        
+
   // if we don't have a db_id then we can  return the form, otherwise
   // add in the other fields
   if ($cv_id) {
     tripal_cv_add_cv_form_fields($form, $form_state, $cv_id);
-        
+
     $form['update'] = array(
       '#type'         => 'submit',
       '#value'        => t('Update'),
@@ -51,7 +54,7 @@ function tripal_cv_cv_edit_form($form, &$form_state) {
     $form['delete'] = array(
       '#type'         => 'submit',
       '#value'        => t('Delete'),
-      '#attributes'   => array('onclick' => 'if(!confirm("Really Delete?")){return false;}'), 
+      '#attributes'   => array('onclick' => 'if(!confirm("Really Delete?")){return false;}'),
     );
   }
   else {
@@ -62,21 +65,21 @@ function tripal_cv_cv_edit_form($form, &$form_state) {
       '#prefix' => '<div id="cv-edit-div">',
       '#suffix' => '</div>',
     );
-  } 
+  }
   return $form;
 }
 /**
- * 
+ *
  * @param $form
  * @param $form_state
- * 
+ *
  * @ingroup tripal_db
  */
 function tripal_cv_cv_add_form($form, $form_state) {
-  
+
   // add in the form fields to this form
   tripal_cv_add_cv_form_fields($form, $form_state);
-  
+
   $form['add'] = array(
     '#type'         => 'submit',
     '#value'        => t('Add'),
@@ -85,11 +88,11 @@ function tripal_cv_cv_add_form($form, $form_state) {
   return $form;
 }
 /**
- * 
+ *
  * @param $form
  * @param $form_state
  * @param $cv_id
- * 
+ *
  * @ingroup tripal_db
  */
 function tripal_cv_add_cv_form_fields(&$form, $form_state, $cv_id = NULL) {
@@ -100,17 +103,17 @@ function tripal_cv_add_cv_form_fields(&$form, $form_state, $cv_id = NULL) {
   if ($cv_id) {
     $values = array('cv_id' => $cv_id);
     $result = tripal_core_chado_select('cv', array('*'), $values);
-    $cv = $result[0]; 
+    $cv = $result[0];
     $default_name = $cv->name;
-    $default_desc = $cv->definition; 
-  }   
-  
+    $default_desc = $cv->definition;
+  }
+
   // add a fieldset for the Drupal Schema API
   $form['fields'] = array(
     '#type' => 'fieldset',
     '#title' => 'Controlled Vocabulary Details',
     '#collapsible' => 0,
-  );      
+  );
 
   $form['fields']['name']= array(
     '#type'          => 'textfield',
@@ -118,7 +121,7 @@ function tripal_cv_add_cv_form_fields(&$form, $form_state, $cv_id = NULL) {
     '#description'   => t('Please enter the name for this vocabulary.'),
     '#required'      => TRUE,
     '#default_value' => $default_name,
-    '#maxlength'     => 255,  
+    '#maxlength'     => 255,
   );
 
   $form['fields']['definition']= array(
@@ -135,44 +138,44 @@ function tripal_cv_add_cv_form_fields(&$form, $form_state, $cv_id = NULL) {
  * Validation fucntion for tripal_cv_cv_add_form
  * @param $form
  * @param $form_state
- * 
+ *
  * @ingroup tripal_cv
  */
 function tripal_cv_cv_add_form_validate($form, &$form_state) {
-  tripal_cv_form_fields_validate($form, $form_state); 
+  tripal_cv_form_fields_validate($form, $form_state);
 }
 /**
  * Validation fucntion for tripal_cv_cv_edit_form
  * @param unknown_type $form
  * @param unknown_type $form_state
- * 
+ *
  * @ingroup tripal_cv
  */
 function tripal_cv_cv_edit_form_validate($form, &$form_state) {
-  tripal_cv_form_fields_validate($form, $form_state); 
+  tripal_cv_form_fields_validate($form, $form_state);
 }
 /**
  * Genetic validation form for shared fields of both the edit and add forms
  * @param $form
  * @param $form_state
- * 
+ *
  * @ingroup tripal_cv
  */
 function tripal_cv_form_fields_validate($form, &$form_state) {
   $name =  array_key_exists('name', $form_state['values'])       ? trim($form_state['values']['name']) : '';
   $desc =  array_key_exists('definition', $form_state['values']) ? trim($form_state['values']['definition']) : '';
   $cv_id = array_key_exists('cv_id', $form_state['values'])      ? trim($form_state['values']['cv_id']) : '';
-  
-   
+
+
   // make sure the cv name is unique
   $values = array('name' => $name);
-  $results = tripal_core_chado_select('cv', array('cv_id'), $values);   
+  $results = tripal_core_chado_select('cv', array('cv_id'), $values);
   if (count($results) > 0 and $results[0]->cv_id != $cv_id) {
     form_set_error('name', 'The vocabulary name must be unique');
   }
 }
 /**
- * 
+ *
  * @param $form
  * @param $form_state
  */
@@ -191,10 +194,10 @@ function tripal_cv_cv_add_form_submit($form, &$form_state) {
   }
   else {
     drupal_set_message(t("Failed to add controlled vocabulary."));
-  }     
+  }
 }
 /**
- * 
+ *
  * @param unknown_type $form
  * @param unknown_type $form_state
  */
@@ -203,12 +206,12 @@ function tripal_cv_cv_edit_form_submit($form, &$form_state) {
   $desc  = array_key_exists('definition', $form_state['values']) ? trim($form_state['values']['definition']) : '';
   $cv_id = array_key_exists('cv_id', $form_state['values'])      ? trim($form_state['values']['cv_id']) : '';
   $op    = array_key_exists('op', $form_state['values'])         ? trim($form_state['values']['op']) : '';
-  
+
   $values = array(
     'name' => $name,
     'definition' => $desc,
   );
-  if (strcmp($op, 'Update')==0) {      
+  if (strcmp($op, 'Update')==0) {
     $match = array('cv_id' => $cv_id);
     $success = tripal_core_chado_update('cv', $match, $values);
     if ($success) {
@@ -235,25 +238,25 @@ function tripal_cv_cv_edit_form_submit($form, &$form_state) {
  * @ingroup tripal_cv
  */
 function tripal_cv_edit_form_ajax($form, $form_state) {
-  
+
   $elements = array();
-  
-  // add in the form fields and the buttons 
+
+  // add in the form fields and the buttons
   if (array_key_exists('cv_id', $form_state['values'])) {
     $elements['fields'] = $form['fields'];
     $elements['update'] = $form['update'];
     $elements['delete'] = $form['delete'];
   }
-  
+
    // add back in the cv-edit-div that is used for the next round of AJAX
   $elements['fields']['#prefix'] =  '<div id="cv-edit-div">';
   $elements['fields']['#suffix'] =  '</div">';
-  
+
   // reset the values for the fields to the defaults
   $elements['fields']['name']['#value']        = $elements['fields']['name']['#default_value'];
   $elements['fields']['definition']['#value']  = $elements['fields']['definition']['#default_value'];
-  
+
   //drupal_set_message('<pre>' . print_r($elements, TRUE) . '</pre>', "status");
-  
+
   return $elements;
 }

+ 109 - 94
tripal_cv/includes/cvterm_form.inc

@@ -1,7 +1,7 @@
-<?php 
+<?php
 
 /**
- * 
+ *
  * @param $form
  * @param $form_state
  */
@@ -20,16 +20,28 @@ function tripal_cv_cvterm_edit_form($form, &$form_state) {
     $cv_id = $form_state['storage']['cv_id'];
     $cvterm_name = $form_state['storage']['name'];
     $cvterm_id = $form_state['storage']['cvterm_id'];
-  }  
+  }
   // get the cv if form was submitted via AJAX
   $cvterm = '';
   if (array_key_exists('values', $form_state)) {
-    $cv_id = $form_state['values']['cv_id'];   
+    $cv_id = $form_state['values']['cv_id'];
     if (array_key_exists('cvterm', $form_state['values'])) {
       $cvterm = $form_state['values']['cvterm'];
-    }    
-  }   
-    
+    }
+  }
+  elseif (isset($form_state['build_info']['args'][0])) {
+    $cv_id = $form_state['build_info']['args'][0];
+    $cvterm_id = $form_state['build_info']['args'][1];
+    if ($form_state['build_info']['args'][1]) {
+      $result = db_select('chado.cvterm','c')
+        ->fields('c', array('name'))
+        ->condition('c.cvterm_id',$cvterm_id)
+        ->execute();
+      $cvterm_name = $result->fetchObject()->name;
+      $step = 1;
+    }
+  }
+
   // get a list of CVs
   $cvs = array();
   $sql = "SELECT * FROM {cv} WHERE NOT name = 'tripal' ORDER BY name ";
@@ -37,7 +49,7 @@ function tripal_cv_cvterm_edit_form($form, &$form_state) {
   $cvs[] = 'Select a vocabulary';
   foreach ($results as $cv) {
     $cvs[$cv->cv_id] = $cv->name;
-  }    
+  }
   $form['cv_id'] = array(
     '#title' => t('Controlled Vocabulary (Ontology) Name'),
     '#type' => 'select',
@@ -50,11 +62,11 @@ function tripal_cv_cvterm_edit_form($form, &$form_state) {
        'event'   => 'change',
        'method'  => 'replace',
        'event'    => 'change',
-    ),    
+    ),
   );
-    
+
   if ($cv_id and $step == 0) {
-    
+
     $form['name']= array(
       '#type'          => 'textfield',
       '#title'         => t("Term Name"),
@@ -68,16 +80,16 @@ function tripal_cv_cvterm_edit_form($form, &$form_state) {
       '#value'         => 'continue',
     );
   }
-  elseif ($step == 1) {    
-       
+  elseif ($step == 1) {
+
     tripal_cv_add_cvterm_form_fields($form, $form_state, $cv_id, $cvterm_name);
-    
+
     // when editing there are certain fields the user should not change for a term
     // let's mark those as disabled
     $form['cv_id']['#disabled'] = TRUE;
     $form['fields']['db_id']['#disabled'] = TRUE;
     $form['fields']['accession']['#disabled'] = TRUE;
-    
+
     // add in the div for replacing the fields if needed
     $form['fields']['#prefix'] = '<div id="cvterm-edit-div">';
     $form['fields']['#suffix'] = '</div>';
@@ -87,7 +99,7 @@ function tripal_cv_cvterm_edit_form($form, &$form_state) {
       '#type' => 'hidden',
       '#value' =>  $cvterm_id,
     );
-    
+
     $form['update'] = array(
       '#type'         => 'submit',
       '#value'        => t('Update'),
@@ -95,10 +107,10 @@ function tripal_cv_cvterm_edit_form($form, &$form_state) {
     $form['delete'] = array(
       '#type'         => 'submit',
       '#value'        => t('Delete'),
-      '#attributes'   => array('onclick' => 'if(!confirm("Really Delete?")){return false;}'), 
-    );    
-  } 
-  
+      '#attributes'   => array('onclick' => 'if(!confirm("Really Delete?")){return false;}'),
+    );
+  }
+
   if ($step == 0) {
     // if we don't have a cv_id then this is the first time the form has
     // benn loaded and we need to create the div where ajax replacement elements get stored
@@ -111,16 +123,19 @@ function tripal_cv_cvterm_edit_form($form, &$form_state) {
   return $form;
 }
 /**
- * 
+ *
  * @param $form
  * @param $form_state
  */
 function tripal_cv_cvterm_add_form($form, &$form_state) {
   $cv_id = 0;
   if (array_key_exists('values', $form_state)) {
-    $cv_id = $form_state['values']['cv_id'];   
+    $cv_id = $form_state['values']['cv_id'];
   }
-  
+  elseif (isset($form_state['build_info']['args'][0])) {
+    $cv_id = $form_state['build_info']['args'][0];
+  }
+
   // get a list of CVs
   $cvs = array();
   $sql = "SELECT * FROM {cv} WHERE NOT name = 'tripal' ORDER BY name ";
@@ -128,7 +143,7 @@ function tripal_cv_cvterm_add_form($form, &$form_state) {
   $cvs[] = 'Select a vocabulary';
   foreach ($results as $cv) {
     $cvs[$cv->cv_id] = $cv->name;
-  }    
+  }
   $form['cv_id'] = array(
     '#title' => t('Controlled Vocabulary (Ontology) Name'),
     '#type' => 'select',
@@ -137,21 +152,21 @@ function tripal_cv_cvterm_add_form($form, &$form_state) {
     '#default_value' => $cv_id,
   );
   tripal_cv_add_cvterm_form_fields($form, $form_state);
-  
+
   $form['add'] = array(
     '#type'         => 'submit',
     '#value'        => t('Add Term'),
   );
-  
+
   return $form;
 }
 
 /**
- * 
+ *
  * @param $form
  * @param $form_state
  * @param $cv_id
- * 
+ *
  * @ingroup tripal_db
  */
 function tripal_cv_add_cvterm_form_fields(&$form, $form_state, $cv_id = 0, $cvterm_name = '') {
@@ -168,47 +183,47 @@ function tripal_cv_add_cvterm_form_fields(&$form, $form_state, $cv_id = 0, $cvte
     $values = array('cv_id' => $cv_id, 'name' => $cvterm_name);
     $cvterm = tripal_core_generate_chado_var('cvterm', $values);
     $name = $cvterm->name;
-    $definition = $cvterm->definition; 
+    $definition = $cvterm->definition;
     $is_relationship = $cvterm->is_relationshiptype;
     $is_obsolete = $cvterm->is_obsolete;
     $db_id = $cvterm->dbxref_id->db_id->db_id;
     $accession = $cvterm->dbxref_id->accession;
-  }    
-  
+  }
+
   // add a fieldset for the Drupal Schema API
   $form['fields'] = array(
     '#type' => 'fieldset',
     '#title' => 'Term Details',
     '#collapsible' => 0,
-  );      
-  
-  
+  );
+
+
   $form['fields']['name']= array(
     '#type'          => 'textfield',
     '#title'         => t("Term Name"),
     '#default_value' => $name,
     '#required'      => TRUE,
   );
-  
+
   $form['fields']['definition']= array(
     '#type'          => 'textarea',
     '#title'         => t('Description'),
     '#description'   => t('Please enter a description for this term'),
     '#default_value' => $definition,
   );
-  
+
   $form['fields']['is_relationship'] = array(
     '#type'          => 'checkbox',
     '#title'         => t('This term describes a relationship?'),
     '#default_value' => $is_relationship,
   );
-  
+
   $form['fields']['is_obsolete'] = array(
     '#type'          => 'checkbox',
     '#title'         => t('This term is obsolete?'),
     '#default_value' => $is_obsolete,
   );
-  
+
   $values = array();
   $columns = array('db_id', 'name');
   $options = array('order_by' => array('name' => 'ASC'));
@@ -228,22 +243,22 @@ function tripal_cv_add_cvterm_form_fields(&$form, $form_state, $cv_id = 0, $cvte
     '#default_value' => $db_id,
     '#required' => TRUE,
   );
-  
+
   $form['fields']['accession']= array(
     '#type'          => 'textfield',
     '#title'         => t("Accession"),
-    '#description'   => t('If this term has an existing accession (unique identifier) in the database 
+    '#description'   => t('If this term has an existing accession (unique identifier) in the database
        please enter that here.  If the accession is numeric with a database prefix (e.g. GO:003023), please
-       enter just the numeric value.  The database prefix will be appended whenever the term is displayed. 
-       If the accession is not numeric then enter it as is.  If no value is provied, the term name 
+       enter just the numeric value.  The database prefix will be appended whenever the term is displayed.
+       If the accession is not numeric then enter it as is.  If no value is provied, the term name
        provided above will be used as the accession.'),
     '#required'      => TRUE,
     '#default_value' => $accession,
-  );     
+  );
 }
 
 /**
- * 
+ *
  * @param $form
  * @param $form_state
  */
@@ -253,14 +268,14 @@ function tripal_cv_cvterm_edit_form_validate($form, &$form_state) {
   $name = array_key_exists('name', $form_state['values']) ? $form_state['values']['name'] : '';
   $cvterm_id = array_key_exists('cvterm_id', $form_state['values']) ? $form_state['values']['cvterm_id'] : '';
   $accession = array_key_exists('accession', $form_state['values']) ? $form_state['values']['accession'] : '';
-  
+
   $step = $form_state['storage']['step'];
-   
+
   // make sure the cv term name is unique for this vocabulary
   if ($step == 1) {
     $values = array('name' => $name, 'cv_id' => $cv_id);
     $results = tripal_core_chado_select('cvterm', array('cvterm_id'), $values);
-    foreach ($results as $r) {   
+    foreach ($results as $r) {
       if ($r->cvterm_id != $cvterm_id) {
         form_set_error('name', 'The term name must be unique for this vocabulary. Another term with this name already exists.');
       }
@@ -268,7 +283,7 @@ function tripal_cv_cvterm_edit_form_validate($form, &$form_state) {
   }
 }
 /**
- * 
+ *
  * @param $form
  * @param $form_state
  */
@@ -277,7 +292,7 @@ function tripal_cv_cvterm_add_form_validate($form, &$form_state) {
   $db_id = array_key_exists('db_id', $form_state['values']) ? $form_state['values']['db_id'] : '';
   $name = array_key_exists('name', $form_state['values']) ? $form_state['values']['name'] : '';
   $accession = array_key_exists('accession', $form_state['values']) ? $form_state['values']['accession'] : '';
-    
+
   $values = array('cv_id' => $cv_id);
   $results = tripal_core_chado_select('cv', array('name'), $values);
   if (!$results or count($results) == 0) {
@@ -290,20 +305,20 @@ function tripal_cv_cvterm_add_form_validate($form, &$form_state) {
   if (!$results or count($results) == 0) {
     form_set_error('db_id', 'The database name does not exist');
   }
-  
+
   // make sure the cv term name is unique for this vocabulary
   $values = array('name' => $name, 'cv_id' => $cv_id);
-  $results = tripal_core_chado_select('cvterm', array('cvterm_id'), $values);   
+  $results = tripal_core_chado_select('cvterm', array('cvterm_id'), $values);
   if (count($results) > 0) {
     form_set_error('name', 'The term name must be unique for this vocabulary. Another term with this name already exists.');
   }
-  
+
   // make sure this accession is unique for the database
   $values = array('accession' => $accession, 'db_id' => $db_id);
-  $results = tripal_core_chado_select('dbxref', array('dbxref_id'), $values);   
+  $results = tripal_core_chado_select('dbxref', array('dbxref_id'), $values);
   if (count($results) > 0 ) {
     form_set_error('accession', 'The accession is not uniuqe for this vocabulary\'s database.');
-  }  
+  }
 
 }
 
@@ -314,85 +329,85 @@ function tripal_cv_cvterm_add_form_validate($form, &$form_state) {
  * @ingroup tripal_cv
  */
 function tripal_cv_cvterm_edit_form_submit($form, &$form_state) {
-  
+
   $cv_id = array_key_exists('cv_id', $form_state['values']) ? $form_state['values']['cv_id'] : '';
   $name = array_key_exists('name', $form_state['values']) ? $form_state['values']['name'] : '';
   $definition = array_key_exists('definition', $form_state['values']) ? $form_state['values']['definition'] : '';
   $is_relationship = array_key_exists('is_relationship', $form_state['values']) ? $form_state['values']['is_relationship'] : '';
   $is_obsolete = array_key_exists('is_obsolete', $form_state['values']) ? $form_state['values']['is_obsolete'] : '';
   $cvterm_id = array_key_exists('cvterm_id', $form_state['values']) ? $form_state['values']['cvterm_id'] : '';
-  
+
   $db_id = array_key_exists('db_id', $form_state['values']) ? $form_state['values']['db_id'] : '';
   $accession = array_key_exists('accession', $form_state['values']) ? $form_state['values']['accession'] : '';
-  
+
   $op    = array_key_exists('op', $form_state['values'])         ? trim($form_state['values']['op']) : '';
-  
-  
+
+
   $step = $form_state['storage']['step'];
 
   switch ($step) {
     case 0:  // a cvterm name has been selected
       $cv_id = array_key_exists('cv_id', $form_state['values']) ? trim($form_state['values']['cv_id']) : '';
       $name  = array_key_exists('name', $form_state['values'])  ? trim($form_state['values']['name'])  : '';
-      
+
       // get the original cvterm_id
       $values = array('name' => $name, 'cv_id' => $cv_id);
-      $results = tripal_core_chado_select('cvterm', array('cvterm_id'), $values);  
-      $cvterm = $results[0]; 
-    
+      $results = tripal_core_chado_select('cvterm', array('cvterm_id'), $values);
+      $cvterm = $results[0];
+
       $form_state['storage']['cv_id'] = $cv_id;
       $form_state['storage']['name'] = $name;
       $form_state['storage']['step'] = 1;
       $form_state['storage']['cvterm_id'] = $cvterm->cvterm_id;
       $form_state['rebuild'] = TRUE;
       break;
-      
-    case 1:  // update/delete button has been clicked          
-      
+
+    case 1:  // update/delete button has been clicked
+
       if ($op == 'Update') {
         // get the cv
         $values = array('cv_id' => $cv_id);
         $results = tripal_core_chado_select('cv', array('name'), $values);
         $cv = $results[0];
-        
+
         // get the db
         $values = array('db_id' => $db_id);
         $results = tripal_core_chado_select('db', array('name'), $values);
         $db = $results[0];
-        
+
         // now add the term
-        $term = array(    
+        $term = array(
           'name' => $name,
           'namespace' => $cv->name,
           'id' => $accession,
           'def' => $definition,
           'is_obsolete' => $is_obsolete,
-        );  
-        
+        );
+
         $cvterm = tripal_cv_add_cvterm($term, $cv->name, $is_relationship, TRUE, $db->name);
         if ($cvterm) {
           drupal_set_message('Term updated successfully.');
-        } 
+        }
         else {
-          drupal_set_message('Could not add term. Check Drupal recent logs for error messages.', 'error');  
+          drupal_set_message('Could not add term. Check Drupal recent logs for error messages.', 'error');
         }
       }
       if ($op == 'Delete') {
         $values = array('cvterm_id' => $cvterm_id);
         $success = tripal_core_chado_delete('cvterm', $values);
         if ($success) {
-          drupal_set_message('Term deleted successfully.');  
-        } 
+          drupal_set_message('Term deleted successfully.');
+        }
         else {
-          drupal_set_message('Could not delete term term. Check Drupal recent logs for error messages.', 'error');  
-        }             
+          drupal_set_message('Could not delete term term. Check Drupal recent logs for error messages.', 'error');
+        }
       }
       break;
-  }      
+  }
 }
 
 /**
- * 
+ *
  * @param unknown_type $form
  * @param unknown_type $form_state
  */
@@ -402,36 +417,36 @@ function tripal_cv_cvterm_add_form_submit($form, &$form_state) {
   $definition = array_key_exists('definition', $form_state['values']) ? $form_state['values']['definition'] : '';
   $is_relationship = array_key_exists('is_relationship', $form_state['values']) ? $form_state['values']['is_relationship'] : '';
   $is_obsolete = array_key_exists('is_obsolete', $form_state['values']) ? $form_state['values']['is_obsolete'] : '';
-  
+
   $db_id = array_key_exists('db_id', $form_state['values']) ? $form_state['values']['db_id'] : '';
   $accession = array_key_exists('accession', $form_state['values']) ? $form_state['values']['accession'] : '';
-  
+
   // get the database
   $values = array('db_id' => $db_id);
   $results = tripal_core_chado_select('db', array('name'), $values);
   $db = $results[0];
-      
+
   // get the cv
   $values = array('cv_id' => $cv_id);
   $results = tripal_core_chado_select('cv', array('name'), $values);
   $cv = $results[0];
 
   // now add the term
-  $term = array(    
+  $term = array(
     'name' => $name,
     'namespace' => $cv->name,
     'id' => $accession,
     'def' => $definition,
     'is_obsolete' => $is_obsolete,
-  );  
-      
+  );
+
   $cvterm = tripal_cv_add_cvterm($term, $cv->name, $is_relationship, TRUE, $db->name);
   if ($cvterm) {
     drupal_set_message('Term added successfully.');
-  } 
+  }
   else {
-    drupal_set_message('Could not add term. Check Drupal recent logs for error messages.', 'error');  
-  }    
+    drupal_set_message('Could not add term. Check Drupal recent logs for error messages.', 'error');
+  }
 }
 /**
  * Ajax callback for the tripal_cv_form
@@ -440,14 +455,14 @@ function tripal_cv_cvterm_add_form_submit($form, &$form_state) {
 function tripal_cv_cvterm_edit_form_ajax($form, $form_state) {
 
   $elements = array();
-  
+
   $elements['name'] = $form['name'];
-  $elements['continue'] = $form['continue'];   
-  
+  $elements['continue'] = $form['continue'];
+
   // add back in the cv-edit-div that is used for the next round of AJAX
   $elements['name']['#prefix'] =  '<div id="cvterm-edit-div">';
-  $elements['name']['#suffix'] =  '</div">';  
-  
-    
+  $elements['name']['#suffix'] =  '</div">';
+
+
   return $elements;
 }

+ 1 - 570
tripal_cv/includes/tripal_cv_admin.inc

@@ -37,573 +37,4 @@ function tripal_cv_admin_cv_listing() {
   }
 
   return $output;
-}
-
-/**
- * Purpose: Provides the form for Updating and Deleteing existing
- *   chado controlled vocabularies (See chado cv table)
- *
- * @ingroup tripal_cv
- *
-function tripal_cv_edit_page() {
-  $output .= drupal_get_form('tripal_cv_select_form');
-  $output .= '<div id="cv-edit-div">Please select a vocabulary above to view or edit</div>';
-
-  return $output;
-}
-*/
-
-/**
- * Purpose: Provides the actual "Select CV" form on the Update/Delete Controlled
- *   Vocabulary page. This form also triggers the edit javascript
- * @todo Modify this form to use Drupal AJAX
- *
- * @ingroup tripal_cv
- *
-function tripal_cv_select_form() {
-
-  // get a list of db from chado for user to choose
-  $sql = "SELECT * FROM {cv} WHERE NOT name = 'tripal' ORDER BY name ";
-  $results = chado_query($sql);
-
-  $cvs = array();
-  $cvs[] = '';
-  while ($cv = db_fetch_object($results)) {
-    $cvs[$cv->cv_id] = $cv->name;
-  }
-
-  $form['cvid'] = array(
-    '#title' => t('Controlled Vocabulary/Ontology Name'),
-    '#type' => 'select',
-    '#options' => $cvs,
-    '#ahah' => array(
-      'path' => 'admin/tripal/tripal_cv/cv/edit/js',
-      'wrapper' => 'cv-edit-div',
-      'effect' => 'fade',
-      'event' => 'change',
-      'method' => 'replace',
-    ),
-  );
-
-  return $form;
-}
-*/
-
-/**
- * Purpose: The edit controlled vocabulary javascript
- *
- * @ingroup tripal_cv
- *
-function tripal_ajax_cv_edit() {
-
-  // get the database id, build the form and then return the JSON object
-  $cvid = filter_xss($_POST['cvid']);
-  $form = drupal_get_form('tripal_cv_edit_form', $cvid);
-  drupal_json(array('status' => TRUE, 'data' => $form));
-
-}
-*/
-
-/**
- * Purpose: Provides a form to allow updating/deleteing of controlled vocabularies
- *
- * @ingroup tripal_cv
- *
-function tripal_cv_edit_form(&$form_state = NULL, $cvid = NULL) {
-
-  $sql = "SELECT * FROM {cv} WHERE cv_id = :cv_id ";
-  $cv = chado_query($sql, array(':cv_id' => $cvid));
-  $cv = $cv->fetch_object();
-
-  // set the default values.  If there is a value set in the
-  // form_state then let's use that, otherwise, we'll pull
-  // the values from the database
-  $default_db = $form_state['values']['name'];
-  $default_desc = $form_state['values']['description'];
-  $default_url = $form_state['values']['url'];
-  $default_urlprefix = $form_state['values']['urlprefix'];
-  if (!$default_db) {
-    $default_cv = $cv->name;
-  }
-  if (!$default_desc) {
-    $default_desc = $cv->definition;
-  }
-
-  $form['cvid'] = array(
-    '#type' => 'hidden',
-    '#value' => $cvid
-  );
-
-  $form['name']= array(
-    '#type'          => 'textfield',
-    '#title'         => t("Controlled Vocabulary name"),
-    '#description'   => t('Please enter the name for this vocabulary.'),
-    '#required'      => FALSE,
-    '#default_value' => $default_cv,
-    '#weight'        => 1
-  );
-
-  $form['definition']= array(
-    '#type'          => 'textarea',
-    '#title'         => t('Description'),
-    '#description'   => t('Please enter a description for this vocabulary'),
-    '#default_value' => $default_desc,
-    '#weight'        => 2
-  );
-
-  $form['update'] = array(
-    '#type'         => 'submit',
-    '#value'        => t('Update'),
-    '#weight'       => 5,
-    '#executes_submit_callback' => TRUE,
-  );
-  $form['delete'] = array(
-    '#type'         => 'submit',
-    '#value'        => t('Delete'),
-    '#weight'       => 6,
-    '#executes_submit_callback' => TRUE,
-  );
-
-  $form['#redirect'] = 'admin/tripal/tripal_cv';
-
-
-  return $form;
-}
-*/
-
-/**
- * Purpose: The submit function of the update/delete controlled vocabulary form
- *
- * @ingroup tripal_cv
- *
-function tripal_cv_edit_form_submit($form, &$form_state) {
-
-  $name =  $form_state['values']['name'];
-  $desc =  $form_state['values']['definition'];
-  $cvid =  $form_state['values']['cvid'];
-  $op   =  $form_state['values']['op'];
-
-  if (strcmp($op, 'Update') == 0) {
-    $sql = "
-       UPDATE {cv} SET
-         name = :name,
-         definition = :description
-       WHERE cv_id = :cv_id
-    ";
-    $db = chado_query($sql, array(':name' => $name, ':description' => $desc, ':cv_id' => $cvid));
-    if ($db) {
-      drupal_set_message(t("Controlled vocabulary updated"));
-    }
-    else {
-      drupal_set_message(t("Failed to update controlled vocabulary."), 'error');
-    }
-  }
-  if (strcmp($op, 'Delete')==0) {
-    $sql = "
-       DELETE FROM {cv}
-       WHERE cv_id = :cv_id
-    ";
-    $db = chado_query($sql, array(':cv_id' => $cvid));
-    if ($db) {
-      drupal_set_message(t("Controlled vocabulary deleted"));
-    }
-    else {
-      drupal_set_message(t("Failed to delete controlled vocabulary."), 'error');
-    }
-  }
-
-}
-*/
-
-/**
- * Purpose: Provides the Add controlled vocabulary form
- *
-  * @ingroup tripal_cv
- *
-function tripal_cv_add_form(&$form_state = NULL) {
-
-  $form['cvid'] = array(
-    '#type' => 'hidden',
-    '#value' => $cvid
-  );
-
-  $form['name']= array(
-    '#type'          => 'textfield',
-    '#title'         => t("Controlled Vocabulary name"),
-    '#description'   => t('Please enter the name for this vocabulary.  This field will be ignored if an OBO file or URL is provided above'),
-    '#required'      => FALSE,
-    '#default_value' => $default_cv,
-    '#weight'        => 1
-  );
-
-  $form['definition']= array(
-    '#type'          => 'textarea',
-    '#title'         => t('Description'),
-    '#description'   => t('Please enter a description for this vocabulary'),
-    '#default_value' => $default_desc,
-    '#weight'        => 2
-  );
-
-  $form['add'] = array(
-    '#type'         => 'submit',
-    '#value'        => t('Add'),
-    '#weight'       => 5,
-    '#executes_submit_callback' => TRUE,
-  );
-
-  $form['#redirect'] = 'admin/tripal/tripal_cv';
-
-  return $form;
-}
-*/
-/**
- * Purpose: The submit function for the add controlled vocabulary form
- *
- * @ingroup tripal_cv
- *
-function tripal_cv_add_form_submit($form, &$form_state) {
-
-  $name =  $form_state['values']['name'];
-  $desc =  $form_state['values']['definition'];
-
-  $sql = "
-    INSERT INTO {cv}
-     (name,definition)
-    VALUES
-     (:name, :description)
-  ";
-  $db = chado_query($sql, array(':name' => $name, ':description' => $desc));
-  if ($db) {
-    drupal_set_message(t("Controlled vocabulary added"));
-  }
-  else {
-    drupal_set_message(t("Failed to add controlled vocabulary."), 'error');
-  }
-
-}
-*/
-/**
- * Purpose: Provides the form that allows adding of terms to an existing
- *   controlled vocabulary
- *
-  * @ingroup tripal_cv
- *
-function tripal_cv_cvterm_form(&$form_state, $action = 'add') {
-  tripal_core_ahah_init_form();
-
-  $form = array();
-
-  // get defaults
-  $cv_id = $form_state['values']['cv_id'] ? $form_state['values']['cv_id'] : FALSE;
-  $name  = $form_state['values']['name'] ? $form_state['values']['name'] : '';
-
-  // if we have a cv_id and a term name then get the rest of the term details
-  if ($cv_id and $name) {
-     $values = array(
-       'cv_id' => $cv_id,
-       'name' => $name,
-     );
-     $results = tripal_core_chado_select('cvterm', array('*'), $values);
-     if (!$results or count($results) == 0) {
-       // we can't find the cvterm so reset the name to blank
-       $name = '';
-     }
-     else {
-       $cvterm = $results[0];
-       $definition = $cvterm->definition;
-       $is_relationshiptype = $cvterm->is_relationshiptype;
-       $is_obsolete = $cvterm->is_obsolete;
-
-       // now get the database
-       $values = array('dbxref_id' => $cvterm->dbxref_id);
-       $results = tripal_core_chado_select('dbxref', array('*'), $values);
-       $dbxref = $results[0];
-       $accession = $dbxref->accession;
-       $db_id = $dbxref->db_id;
-     }
-  }
-
-  $values = array();
-  $columns = array('cv_id', 'name');
-  $options = array('order_by' => array('name' => 'ASC'));
-  $results = tripal_core_chado_select('cv', $columns, $values, $options);
-  $cvs = array();
-  $cvs[] = '';
-  foreach ($results as $cv) {
-    $cvs[$cv->cv_id] = $cv->name;
-  }
-
-  $form['wrapper-top'] = array(
-    '#type' => 'markup',
-    '#value' => '<div id="cvterm-form">',
-  );
-
-  $form['form_action'] = array(
-    '#type' => 'hidden',
-    '#value' => $action,
-  );
-
-  $form['cv_id'] = array(
-    '#title' => t('Controlled Vocabulary (Ontology) Name'),
-    '#type' => 'select',
-    '#options' => $cvs,
-    '#required' => TRUE,
-    '#default_value' => $cv_id,
-    '#ahah' => array(
-       'path'    => 'admin/tripal/tripal_cv/cvterm/ahah',
-       'wrapper' => 'cvterm-form',
-       'event'   => 'change',
-       'method'  => 'replace',
-    ),
-  );
-
-  if ($cv_id) {
-    $form['add_cvterm'] = array(
-      '#type'           => 'fieldset',
-      '#title'          => t('Term Details'),
-      '#prefix'         => '<div id="cvterm-add-div">',
-      '#suffix'         => '</div>'
-    );
-    $description = t('Please enter the name for this vocabulary term.');
-    if ($action == 'edit') {
-      $description = t('Enter the name of the term to edit.  This field will update automatically as you type. Click outside of the box after entering the term.');
-    }
-    $form['add_cvterm']['name']= array(
-      '#type'          => 'textfield',
-      '#title'         => t("Term Name"),
-      '#description'   => $description,
-      '#default_value' => $name,
-      '#required'      => TRUE,
-    );
-    if ($action == 'edit') {
-      if ($name) {
-        $form['add_cvterm']['name']['#attributes'] = array('readonly' => 'readonly');
-        $form['add_cvterm']['name']['#description'] = 'The term name cannot be changed. If the name is incorrect, please create a new term and make this one as obsolete.';
-      }
-      else {
-        $form['add_cvterm']['name']['#autocomplete_path'] = "admin/tripal/tripal_cv/cvterm/auto_name/$cv_id";
-        $form['add_cvterm']['name']['#ahah'] = array(
-           'path'    => 'admin/tripal/tripal_cv/cvterm/ahah',
-           'wrapper' => 'cvterm-form',
-           'method'  => 'replace',
-        );
-      }
-    }
-
-    if ($action == 'add' or $name) {
-
-
-      $form['add_cvterm']['definition']= array(
-        '#type'          => 'textarea',
-        '#title'         => t('Description'),
-        '#description'   => t('Please enter a description for this term'),
-        '#default_value' => $definition,
-      );
-
-      $form['add_cvterm']['is_relationshiptype'] = array(
-        '#type'          => 'checkbox',
-        '#title'         => t('This term describes a relationship?'),
-        '#default_value' => $is_relationshiptype,
-      );
-
-      $form['add_cvterm']['is_obsolete'] = array(
-        '#type'          => 'checkbox',
-        '#title'         => t('This term is obsolete?'),
-        '#default_value' => $is_obsolete,
-      );
-
-      $values = array();
-      $columns = array('db_id', 'name');
-      $options = array('order_by' => array('name' => 'ASC'));
-      $results = tripal_core_chado_select('db', $columns, $values, $options);
-      $dbs = array();
-      $dbs[] = '';
-      foreach ($results as $db) {
-        $dbs[$db->db_id] = $db->name;
-      }
-      $form['add_cvterm']['db_id'] = array(
-        '#type'         => 'select',
-        '#title'         => t('Database'),
-        '#description'   => t('All terms must be assocated with an external database.
-                            Please select the external database to associate with
-                            this term'),
-        '#options'      => $dbs,
-        '#default_value' => $db_id,
-        '#required' => TRUE,
-      );
-      if ($action == 'edit') {
-        // we don't want to allow the user to change the database on an edit.
-        $form['add_cvterm']['db_id']['#disabled'] = TRUE;
-        $form['add_cvterm']['db_id']['#description'] = 'The database to which this term belongs cannot be changed.';
-      }
-
-      $form['add_cvterm']['accession']= array(
-        '#type'          => 'textfield',
-        '#title'         => t("Accession"),
-        '#description'   => t('If this term has an existing accession (unique identifier) in the database
-           please enter that here.  If the accession is numeric with a database prefix (e.g. GO:003023), please
-           enter just the numeric value.  The database prefix will be appended whenever the term is displayed.
-           If the accession is not numeric then enter it as is.  If no value is provied, the term name
-           provided above will be used as the accession.'),
-        '#required'      => FALSE,
-        '#default_value' => $accession,
-      );
-      if ($action == 'edit') {
-        $form['add_cvterm']['accession']['#attributes'] = array('readonly' => 'readonly');
-        $form['add_cvterm']['accession']['#description'] = 'Cannot change the term accession.';
-      }
-      $button_text = 'Add Term';
-      if ($action == 'edit') {
-        $button_text = 'Update Term';
-      }
-      $form['add_cvterm']['submit'] = array(
-        '#type'  => 'submit',
-        '#value' => $button_text,
-      );
-    } // end if name selected (or action == 'add')
-  } //end of if cv selected
-
-
-  $form['wrapper-bottom'] = array(
-    '#type' => 'markup',
-    '#value' => '</div>',
-  );
-
-  return $form;
-}
-*/
-
-/**
- * Purpose: Validates the input for adding a cvterm
- *
-  * @ingroup tripal_cv
- *
-function tripal_cv_cvterm_form_validate($form, &$form_state) {
-
-  // Ensure that submit does not get called unless the AHAH in the form was called
-  if (!empty($form_state['ahah_submission'])) {
-    return;
-  }
-
-}
-*/
-/**
- * Purpose: Adds terms to an existing controlled vocabulary
- *
- * @ingroup tripal_cv
- *
-function tripal_cv_cvterm_form_submit($form, &$form_state) {
-
-  // Ensure the AHAH in the form was called
-  if (!empty($form_state['ahah_submission'])) {
-    return;
-  }
-
-  // get the database
-  $values = array('db_id' => $form_state['values']['db_id']);
-  $results = tripal_core_chado_select('db', array('name'), $values);
-  if (!$results or count($results) == 0) {
-    drupal_set_message(t('Unable to add term.  Cannot find the database.'), 'error');
-    return;
-  }
-  $db = $results[0];
-
-  // get the cv
-  $values = array('cv_id' => $form_state['values']['cv_id']);
-  $results = tripal_core_chado_select('cv', array('name'), $values);
-  if (!$results or count($results) == 0) {
-    drupal_set_message(t('Unable to add term.  Cannot find the vocabulary.'), 'error');
-    return;
-  }
-  $cv = $results[0];
-
-  // get the accession for this term
-  $accession = $form_state['values']['accession'];
-  if (!$accession) {
-    $accession = $form_state['values']['name'];
-  }
-  if (is_numeric($accession)) {
-    $accession = $db->name . ":" . $accession;
-  }
-
-
-  $update = 0;
-  if ($form_state['values']['form_action'] == 'edit') {
-    $update = 1;
-  }
-
-  // now add the term
-  $term = array(
-    'name' => $form_state['values']['name'],
-    'namespace' => $cv->name,
-    'id' => $accession,
-    'def' => $form_state['values']['definition'],
-    'is_obsolete' => $form_state['values']['is_obsolete'],
-  );
-
-  $is_relationship = $form_state['values']['is_relationshiptype'];
-  $cvterm = tripal_cv_add_cvterm($term, $cv->name, $is_relationship, $update, $db->name);
-  if ($cvterm) {
-    if (!$update) {
-      drupal_set_message('Term added successfully.');
-    }
-    else {
-      drupal_set_message('Term updated successfully.');
-    }
-  }
-  else {
-    drupal_set_message('Could not add term. Check Drupal recent logs for error messages.', 'error');
-  }
-
-}
-*/
-/**
- * Purpose: This function gets called when the selecting of a cv from
- *   the select list triggers it. This function simply rebuilds the form
- *   with new information. No elements are created here
- *
- * @ingroup tripal_cv
- *
-function tripal_cv_cvterm_callback() {
-  $status = TRUE;
-
-  // prepare and render the form
-  $form = tripal_core_ahah_prepare_form();
-  $data = drupal_render($form);
-
-  // bind javascript events to the new objects that will be returned
-  // so that AHAH enabled elements will work.
-  $settings = tripal_core_ahah_bind_events();
-
-  // return the updated JSON
-  drupal_json(
-    array(
-      'status'   => $status,
-      'data'     => $data,
-      'settings' => $settings,
-    )
-  );
-}
-*/
-/**
- * Cvterm path form submit
- *
- * @ingroup tripal_cv
- *
-function tripal_cv_cvtermpath_form_submit($form, &$form_state) {
-  global $user;
-
-  $cvid =  $form_state['values']['cvid'];
-
-  // first get the controlled vocabulary name:
-  $cv = chado_query("SELECT * FROM {cv} WHERE cv_id = :cv_id", array(':cv_id' => $cvid));
-  $cv = $cv->fetch_object();
-
-  // Submit a job to update cvtermpath
-  $job_args = array($cvid);
-  if ($form_state['values']['op'] == t('Update cvtermpath')) {
-    tripal_add_job("Update cvtermpath: $cv->name", 'tripal_cv',
-       'tripal_cv_update_cvtermpath', $job_args, $user->uid);
-  }
-}
-*/
+}

+ 13 - 5
tripal_cv/tripal_cv.module

@@ -89,17 +89,17 @@ function tripal_cv_menu() {
   /*
    * Menu items for adding and editing CVs
    */
-  $items['admin/tripal/chado/tripal_cv/edit_cv'] = array(
+  $items['admin/tripal/chado/tripal_cv/cv/edit/%'] = array(
     'title' => 'Edit a Controlled Vocabulary',
     'description' => 'Edit the details such as name and description for an existing controlled vocabulary.',
     'page callback' => 'drupal_get_form',
-    'page arguments' => array('tripal_cv_cv_edit_form'),
+    'page arguments' => array('tripal_cv_cv_edit_form', 6),
     'access callback' => 'user_access',
     'access arguments' => array('administer controlled vocabularies'),
     'type' => MENU_CALLBACK,
   );
 
-  $items['admin/tripal/chado/tripal_cv/add_cv'] = array(
+  $items['admin/tripal/chado/tripal_cv/cv/add'] = array(
     'title' => 'Add a Controlled Vocabulary',
     'description' => 'Manually a new controlled vocabulary.',
     'page callback' => 'drupal_get_form',
@@ -112,6 +112,14 @@ function tripal_cv_menu() {
   /*
    * Menu items for adding and editing CVterms
    */
+  $items['admin/tripal/chado/tripal_cv/cv/%/cvterm/add'] = array(
+    'title' => 'Add a Controlled Vocabulary Term',
+    'description' => 'Add a new controlled vocabulary term.',
+    'page callback' => 'drupal_get_form',
+    'page arguments' => array('tripal_cv_cvterm_add_form',5),
+    'access arguments' => array('administer controlled vocabularies'),
+    'type' => MENU_CALLBACK,
+  );
   $items['admin/tripal/chado/tripal_cv/cvterm/add'] = array(
     'title' => 'Add a Controlled Vocabulary Term',
     'description' => 'Add a new controlled vocabulary term.',
@@ -120,11 +128,11 @@ function tripal_cv_menu() {
     'access arguments' => array('administer controlled vocabularies'),
     'type' => MENU_CALLBACK,
   );
-  $items['admin/tripal/chado/tripal_cv/cvterm/edit/%'] = array(
+  $items['admin/tripal/chado/tripal_cv/cv/%/cvterm/edit/%'] = array(
     'title' => 'Edit a Controlled Vocabulary Term',
     'description' => 'Edit an existing controlled vocabulary term.',
     'page callback' => 'drupal_get_form',
-    'page arguments' => array('tripal_cv_cvterm_edit_form'),
+    'page arguments' => array('tripal_cv_cvterm_edit_form',5,8),
     'access arguments' => array('administer controlled vocabularies'),
     'type' => MENU_CALLBACK,
   );

+ 394 - 350
tripal_cv/tripal_cv.views_default.inc

@@ -21,159 +21,182 @@ function tripal_cv_views_default_views() {
  */
 function tripal_cv_defaultview_admin_cvs_listing() {
 
-  $view = new view();
-  $view->name = 'tripal_cv_admin_cvs';
-  $view->description = 'A listing of all controlled vocabularies';
-  $view->tag = 'tripal admin';
-  $view->base_table = 'cv';
-  $view->human_name = 'CVs Admin';
-  $view->core = 6;
-  $view->api_version = '3.0';
-  $view->disabled = FALSE; /* Edit this to true to make a default view disabled initially */
+$view = new view();
+$view->name = 'tripal_cv_admin_cvs';
+$view->description = 'A listing of all controlled vocabularies';
+$view->tag = 'tripal admin';
+$view->base_table = 'cv';
+$view->human_name = 'CVs Admin';
+$view->core = 6;
+$view->api_version = '3.0';
+$view->disabled = FALSE; /* Edit this to true to make a default view disabled initially */
 
-  /* Display: Defaults */
-  $handler = $view->new_display('default', 'Defaults', 'default');
-  $handler->display->display_options['title'] = 'Controlled Vocabularies';
-  $handler->display->display_options['use_more_always'] = FALSE;
-  $handler->display->display_options['access']['type'] = 'perm';
-  $handler->display->display_options['access']['perm'] = 'administer controlled vocabularies';
-  $handler->display->display_options['cache']['type'] = 'none';
-  $handler->display->display_options['query']['type'] = 'views_query';
-  $handler->display->display_options['exposed_form']['type'] = 'basic';
-  $handler->display->display_options['pager']['type'] = 'full';
-  $handler->display->display_options['pager']['options']['items_per_page'] = '25';
-  $handler->display->display_options['pager']['options']['offset'] = '0';
-  $handler->display->display_options['pager']['options']['id'] = '0';
-  $handler->display->display_options['pager']['options']['quantity'] = '9';
-  $handler->display->display_options['style_plugin'] = 'table';
-  $handler->display->display_options['style_options']['grouping'] = '';
-  $handler->display->display_options['style_options']['columns'] = array(
-    'name' => 'name',
-    'definition' => 'definition',
-    'nothing' => 'nothing',
-  );
-  $handler->display->display_options['style_options']['default'] = 'name';
-  $handler->display->display_options['style_options']['info'] = array(
-    'name' => array(
-      'sortable' => 1,
-      'separator' => '',
-    ),
-    'definition' => array(
-      'sortable' => 0,
-      'separator' => '',
-    ),
-    'nothing' => array(
-      'separator' => '',
-    ),
-  );
-  /* Header: Global: Text area */
-  $handler->display->display_options['header']['text']['id'] = 'text';
-  $handler->display->display_options['header']['text']['table'] = 'views';
-  $handler->display->display_options['header']['text']['field'] = 'area';
-  $handler->display->display_options['header']['text']['label'] = 'Add Cv';
-  $handler->display->display_options['header']['text']['empty'] = TRUE;
-  $handler->display->display_options['header']['text']['content'] = '<ul class="action-links">
-          <li><a href="tripal_cv/add_cv">Add Vocabulary</a></li>
+/* Display: Defaults */
+$handler = $view->new_display('default', 'Defaults', 'default');
+$handler->display->display_options['title'] = 'Controlled Vocabularies';
+$handler->display->display_options['use_more_always'] = FALSE;
+$handler->display->display_options['access']['type'] = 'perm';
+$handler->display->display_options['access']['perm'] = 'administer controlled vocabularies';
+$handler->display->display_options['cache']['type'] = 'none';
+$handler->display->display_options['query']['type'] = 'views_query';
+$handler->display->display_options['exposed_form']['type'] = 'basic';
+$handler->display->display_options['pager']['type'] = 'full';
+$handler->display->display_options['pager']['options']['items_per_page'] = '25';
+$handler->display->display_options['pager']['options']['offset'] = '0';
+$handler->display->display_options['pager']['options']['id'] = '0';
+$handler->display->display_options['pager']['options']['quantity'] = '9';
+$handler->display->display_options['style_plugin'] = 'table';
+$handler->display->display_options['style_options']['grouping'] = '';
+$handler->display->display_options['style_options']['columns'] = array(
+  'name' => 'name',
+  'definition' => 'definition',
+  'nothing' => 'nothing',
+);
+$handler->display->display_options['style_options']['default'] = 'name';
+$handler->display->display_options['style_options']['info'] = array(
+  'name' => array(
+    'sortable' => 1,
+    'separator' => '',
+  ),
+  'definition' => array(
+    'sortable' => 0,
+    'separator' => '',
+  ),
+  'nothing' => array(
+    'separator' => '',
+  ),
+);
+/* Header: Global: Text area */
+$handler->display->display_options['header']['text']['id'] = 'text';
+$handler->display->display_options['header']['text']['table'] = 'views';
+$handler->display->display_options['header']['text']['field'] = 'area';
+$handler->display->display_options['header']['text']['label'] = 'Add Cv';
+$handler->display->display_options['header']['text']['empty'] = TRUE;
+$handler->display->display_options['header']['text']['content'] = '<ul class="action-links">
+          <li><a href="tripal_cv/cv/add">Add Vocabulary</a></li>
           <li><a href="tripal_cv/obo_loader">Load Ontology</a></li>
      </ul>';
-  $handler->display->display_options['header']['text']['format'] = 'full_html';
-  /* No results behavior: Global: Text area */
-  $handler->display->display_options['empty']['text']['id'] = 'area';
-  $handler->display->display_options['empty']['text']['table'] = 'views';
-  $handler->display->display_options['empty']['text']['field'] = 'area';
-  $handler->display->display_options['empty']['text']['content'] = 'No controlled vocabularies match the supplied criteria.';
-  $handler->display->display_options['empty']['text']['format'] = '2';
-  /* Field: Chado Cv: Cv Id */
-  $handler->display->display_options['fields']['cv_id']['id'] = 'cv_id';
-  $handler->display->display_options['fields']['cv_id']['table'] = 'cv';
-  $handler->display->display_options['fields']['cv_id']['field'] = 'cv_id';
-  $handler->display->display_options['fields']['cv_id']['exclude'] = TRUE;
-  $handler->display->display_options['fields']['cv_id']['separator'] = '';
-  /* Field: Chado Cv: Name */
-  $handler->display->display_options['fields']['name']['id'] = 'name';
-  $handler->display->display_options['fields']['name']['table'] = 'cv';
-  $handler->display->display_options['fields']['name']['field'] = 'name';
-  /* Field: Chado Cv: Definition */
-  $handler->display->display_options['fields']['definition']['id'] = 'definition';
-  $handler->display->display_options['fields']['definition']['table'] = 'cv';
-  $handler->display->display_options['fields']['definition']['field'] = 'definition';
-  /* Field: Global: Custom text */
-  $handler->display->display_options['fields']['nothing_1']['id'] = 'nothing_1';
-  $handler->display->display_options['fields']['nothing_1']['table'] = 'views';
-  $handler->display->display_options['fields']['nothing_1']['field'] = 'nothing';
-  $handler->display->display_options['fields']['nothing_1']['label'] = 'Edit Link';
-  $handler->display->display_options['fields']['nothing_1']['exclude'] = TRUE;
-  $handler->display->display_options['fields']['nothing_1']['alter']['text'] = 'edit';
-  $handler->display->display_options['fields']['nothing_1']['alter']['make_link'] = TRUE;
-  $handler->display->display_options['fields']['nothing_1']['alter']['path'] = 'tripal_cv/edit_cv/[cv_id]';
-  /* Field: Global: Custom text */
-  $handler->display->display_options['fields']['nothing']['id'] = 'nothing';
-  $handler->display->display_options['fields']['nothing']['table'] = 'views';
-  $handler->display->display_options['fields']['nothing']['field'] = 'nothing';
-  $handler->display->display_options['fields']['nothing']['label'] = 'View Terms link';
-  $handler->display->display_options['fields']['nothing']['exclude'] = TRUE;
-  $handler->display->display_options['fields']['nothing']['alter']['text'] = 'View Terms';
-  $handler->display->display_options['fields']['nothing']['alter']['make_link'] = TRUE;
-  $handler->display->display_options['fields']['nothing']['alter']['path'] = 'admin/tripal/tripal_cv/list_cvterms?cv%5B%5D=[name]';
-  $handler->display->display_options['fields']['nothing']['hide_alter_empty'] = TRUE;
-  /* Field: Global: Custom text */
-  $handler->display->display_options['fields']['nothing_2']['id'] = 'nothing_2';
-  $handler->display->display_options['fields']['nothing_2']['table'] = 'views';
-  $handler->display->display_options['fields']['nothing_2']['field'] = 'nothing';
-  $handler->display->display_options['fields']['nothing_2']['label'] = '';
-  $handler->display->display_options['fields']['nothing_2']['alter']['text'] = '[nothing_1]<br />
-  [nothing]';
-  $handler->display->display_options['fields']['nothing_2']['element_class'] = 'short-column';
-  $handler->display->display_options['fields']['nothing_2']['element_label_class'] = 'short-column';
-  $handler->display->display_options['fields']['nothing_2']['element_label_colon'] = FALSE;
-  /* Sort criterion: Chado Cv: Name */
-  $handler->display->display_options['sorts']['name']['id'] = 'name';
-  $handler->display->display_options['sorts']['name']['table'] = 'cv';
-  $handler->display->display_options['sorts']['name']['field'] = 'name';
-  /* Filter criterion: Chado Cv: Name */
-  $handler->display->display_options['filters']['name']['id'] = 'name';
-  $handler->display->display_options['filters']['name']['table'] = 'cv';
-  $handler->display->display_options['filters']['name']['field'] = 'name';
-  $handler->display->display_options['filters']['name']['operator'] = 'contains';
-  $handler->display->display_options['filters']['name']['group'] = '0';
-  $handler->display->display_options['filters']['name']['exposed'] = TRUE;
-  $handler->display->display_options['filters']['name']['expose']['operator_id'] = 'name_op';
-  $handler->display->display_options['filters']['name']['expose']['label'] = 'Name Contains';
-  $handler->display->display_options['filters']['name']['expose']['operator'] = 'name_op';
-  $handler->display->display_options['filters']['name']['expose']['identifier'] = 'name';
-  $handler->display->display_options['filters']['name']['expose']['remember_roles'] = array(
-    2 => '2',
-    1 => 0,
-    3 => 0,
-  );
-  /* Filter criterion: Chado Cv: Definition */
-  $handler->display->display_options['filters']['definition']['id'] = 'definition';
-  $handler->display->display_options['filters']['definition']['table'] = 'cv';
-  $handler->display->display_options['filters']['definition']['field'] = 'definition';
-  $handler->display->display_options['filters']['definition']['operator'] = 'contains';
-  $handler->display->display_options['filters']['definition']['group'] = '0';
-  $handler->display->display_options['filters']['definition']['exposed'] = TRUE;
-  $handler->display->display_options['filters']['definition']['expose']['operator_id'] = 'definition_op';
-  $handler->display->display_options['filters']['definition']['expose']['label'] = 'Definition Contains';
-  $handler->display->display_options['filters']['definition']['expose']['operator'] = 'definition_op';
-  $handler->display->display_options['filters']['definition']['expose']['identifier'] = 'definition';
-  $handler->display->display_options['filters']['definition']['expose']['remember_roles'] = array(
-    2 => '2',
-    1 => 0,
-    3 => 0,
-  );
+$handler->display->display_options['header']['text']['format'] = 'full_html';
+/* No results behavior: Global: Text area */
+$handler->display->display_options['empty']['text']['id'] = 'area';
+$handler->display->display_options['empty']['text']['table'] = 'views';
+$handler->display->display_options['empty']['text']['field'] = 'area';
+$handler->display->display_options['empty']['text']['content'] = 'No controlled vocabularies match the supplied criteria.';
+$handler->display->display_options['empty']['text']['format'] = '2';
+/* Field: Chado Cv: Cv Id */
+$handler->display->display_options['fields']['cv_id']['id'] = 'cv_id';
+$handler->display->display_options['fields']['cv_id']['table'] = 'cv';
+$handler->display->display_options['fields']['cv_id']['field'] = 'cv_id';
+$handler->display->display_options['fields']['cv_id']['exclude'] = TRUE;
+$handler->display->display_options['fields']['cv_id']['separator'] = '';
+/* Field: Chado Cv: Name */
+$handler->display->display_options['fields']['name']['id'] = 'name';
+$handler->display->display_options['fields']['name']['table'] = 'cv';
+$handler->display->display_options['fields']['name']['field'] = 'name';
+/* Field: Chado Cv: Definition */
+$handler->display->display_options['fields']['definition']['id'] = 'definition';
+$handler->display->display_options['fields']['definition']['table'] = 'cv';
+$handler->display->display_options['fields']['definition']['field'] = 'definition';
+/* Field: Global: Custom text */
+$handler->display->display_options['fields']['nothing_1']['id'] = 'nothing_1';
+$handler->display->display_options['fields']['nothing_1']['table'] = 'views';
+$handler->display->display_options['fields']['nothing_1']['field'] = 'nothing';
+$handler->display->display_options['fields']['nothing_1']['label'] = 'Edit Link';
+$handler->display->display_options['fields']['nothing_1']['exclude'] = TRUE;
+$handler->display->display_options['fields']['nothing_1']['alter']['text'] = 'edit';
+$handler->display->display_options['fields']['nothing_1']['alter']['make_link'] = TRUE;
+$handler->display->display_options['fields']['nothing_1']['alter']['path'] = 'admin/tripal/chado/tripal_cv/cv/edit/[cv_id]';
+/* Field: Global: Custom text */
+$handler->display->display_options['fields']['nothing']['id'] = 'nothing';
+$handler->display->display_options['fields']['nothing']['table'] = 'views';
+$handler->display->display_options['fields']['nothing']['field'] = 'nothing';
+$handler->display->display_options['fields']['nothing']['label'] = 'View Terms link';
+$handler->display->display_options['fields']['nothing']['exclude'] = TRUE;
+$handler->display->display_options['fields']['nothing']['alter']['text'] = 'View Terms';
+$handler->display->display_options['fields']['nothing']['alter']['make_link'] = TRUE;
+$handler->display->display_options['fields']['nothing']['alter']['path'] = 'admin/tripal/chado/tripal_cv/cvterms?cv=[name]';
+$handler->display->display_options['fields']['nothing']['hide_alter_empty'] = TRUE;
+/* Field: Global: Custom text */
+$handler->display->display_options['fields']['nothing_3']['id'] = 'nothing_3';
+$handler->display->display_options['fields']['nothing_3']['table'] = 'views';
+$handler->display->display_options['fields']['nothing_3']['field'] = 'nothing';
+$handler->display->display_options['fields']['nothing_3']['label'] = 'Add term';
+$handler->display->display_options['fields']['nothing_3']['exclude'] = TRUE;
+$handler->display->display_options['fields']['nothing_3']['alter']['text'] = 'Add Term';
+$handler->display->display_options['fields']['nothing_3']['alter']['make_link'] = TRUE;
+$handler->display->display_options['fields']['nothing_3']['alter']['path'] = 'admin/tripal/chado/tripal_cv/cv/[cv_id]/cvterm/add';
+/* Field: Global: Custom text */
+$handler->display->display_options['fields']['nothing_2']['id'] = 'nothing_2';
+$handler->display->display_options['fields']['nothing_2']['table'] = 'views';
+$handler->display->display_options['fields']['nothing_2']['field'] = 'nothing';
+$handler->display->display_options['fields']['nothing_2']['label'] = '';
+$handler->display->display_options['fields']['nothing_2']['alter']['text'] = '[nothing_1]<br />
+  [nothing]   [nothing_3]';
+$handler->display->display_options['fields']['nothing_2']['element_class'] = 'short-column';
+$handler->display->display_options['fields']['nothing_2']['element_label_class'] = 'short-column';
+$handler->display->display_options['fields']['nothing_2']['element_label_colon'] = FALSE;
+/* Sort criterion: Chado Cv: Name */
+$handler->display->display_options['sorts']['name']['id'] = 'name';
+$handler->display->display_options['sorts']['name']['table'] = 'cv';
+$handler->display->display_options['sorts']['name']['field'] = 'name';
+/* Filter criterion: Chado Cv: Name */
+$handler->display->display_options['filters']['name']['id'] = 'name';
+$handler->display->display_options['filters']['name']['table'] = 'cv';
+$handler->display->display_options['filters']['name']['field'] = 'name';
+$handler->display->display_options['filters']['name']['operator'] = 'contains';
+$handler->display->display_options['filters']['name']['group'] = '0';
+$handler->display->display_options['filters']['name']['exposed'] = TRUE;
+$handler->display->display_options['filters']['name']['expose']['operator_id'] = 'name_op';
+$handler->display->display_options['filters']['name']['expose']['label'] = 'Name Contains';
+$handler->display->display_options['filters']['name']['expose']['operator'] = 'name_op';
+$handler->display->display_options['filters']['name']['expose']['identifier'] = 'name';
+$handler->display->display_options['filters']['name']['expose']['remember_roles'] = array(
+  2 => '2',
+  1 => 0,
+  3 => 0,
+);
+/* Filter criterion: Chado Cv: Definition */
+$handler->display->display_options['filters']['definition']['id'] = 'definition';
+$handler->display->display_options['filters']['definition']['table'] = 'cv';
+$handler->display->display_options['filters']['definition']['field'] = 'definition';
+$handler->display->display_options['filters']['definition']['operator'] = 'contains';
+$handler->display->display_options['filters']['definition']['group'] = '0';
+$handler->display->display_options['filters']['definition']['exposed'] = TRUE;
+$handler->display->display_options['filters']['definition']['expose']['operator_id'] = 'definition_op';
+$handler->display->display_options['filters']['definition']['expose']['label'] = 'Definition Contains';
+$handler->display->display_options['filters']['definition']['expose']['operator'] = 'definition_op';
+$handler->display->display_options['filters']['definition']['expose']['identifier'] = 'definition';
+$handler->display->display_options['filters']['definition']['expose']['remember_roles'] = array(
+  2 => '2',
+  1 => 0,
+  3 => 0,
+);
 
-  /* Display: Page */
-  $handler = $view->new_display('page', 'Page', 'page_1');
-  $handler->display->display_options['path'] = 'admin/tripal/chado/tripal_cv/cvs';
-  $handler->display->display_options['menu']['type'] = 'default tab';
-  $handler->display->display_options['menu']['title'] = 'Vocabularies';
-  $handler->display->display_options['menu']['description'] = 'A listing of all controlled vocabularies';
-  $handler->display->display_options['menu']['weight'] = '-10';
-  $handler->display->display_options['menu']['name'] = 'management';
-  $handler->display->display_options['menu']['context'] = 0;
-  $handler->display->display_options['menu']['context_only_inline'] = 0;
-  $handler->display->display_options['tab_options']['weight'] = '0';
+  /** MANUALLY ADD since filter handler no exporting correctly */
+  $handler->display->display_options['filters']['name']['expose']['values_form_type'] = 'textfield';
+  $handler->display->display_options['filters']['name']['expose']['select_multiple'] = FALSE;
+  $handler->display->display_options['filters']['name']['expose']['select_optional'] = FALSE;
+  $handler->display->display_options['filters']['name']['expose']['max_length'] = 40;
+
+/* Display: Page */
+$handler = $view->new_display('page', 'Page', 'page_1');
+$handler->display->display_options['path'] = 'admin/tripal/chado/tripal_cv/cvs';
+$handler->display->display_options['menu']['type'] = 'default tab';
+$handler->display->display_options['menu']['title'] = 'Vocabularies';
+$handler->display->display_options['menu']['description'] = 'A listing of all controlled vocabularies';
+$handler->display->display_options['menu']['weight'] = '-10';
+$handler->display->display_options['menu']['name'] = 'management';
+$handler->display->display_options['menu']['context'] = 0;
+$handler->display->display_options['menu']['context_only_inline'] = 0;
+$handler->display->display_options['tab_options']['weight'] = '0';
+
+
+  /** MANUALLY ADD since filter handler no exporting correctly
+  $handler->display->display_options['filters']['name']['expose']['values_form_type'] = 'textfield';
+  $handler->display->display_options['filters']['name']['expose']['select_multiple'] = FALSE;
+  $handler->display->display_options['filters']['name']['expose']['select_optional'] = FALSE;
+  $handler->display->display_options['filters']['name']['expose']['max_length'] = 40;
+  */
 
   return $view;
 }
@@ -183,217 +206,238 @@ function tripal_cv_defaultview_admin_cvs_listing() {
  */
 function tripal_cv_defaultview_admin_cvterms_listing() {
 
-  $view = new view();
-  $view->name = 'tripal_cv_admin_cvterms';
-  $view->description = 'A listing of all controlled vocabulary terms filtered by controlled vocabulary';
-  $view->tag = 'tripal admin';
-  $view->base_table = 'cvterm';
-  $view->human_name = 'CV Terms Admin';
-  $view->core = 0;
-  $view->api_version = '3.0';
-  $view->disabled = FALSE; /* Edit this to true to make a default view disabled initially */
+$view = new view();
+$view->name = 'tripal_cv_admin_cvterms';
+$view->description = 'A listing of all controlled vocabulary terms filtered by controlled vocabulary';
+$view->tag = 'tripal admin';
+$view->base_table = 'cvterm';
+$view->human_name = 'CV Terms Admin';
+$view->core = 0;
+$view->api_version = '3.0';
+$view->disabled = FALSE; /* Edit this to true to make a default view disabled initially */
 
-  /* Display: Defaults */
-  $handler = $view->new_display('default', 'Defaults', 'default');
-  $handler->display->display_options['title'] = 'Controlled Vocabulary Terms';
-  $handler->display->display_options['use_more_always'] = FALSE;
-  $handler->display->display_options['access']['type'] = 'perm';
-  $handler->display->display_options['access']['perm'] = 'administer controlled vocabularies';
-  $handler->display->display_options['cache']['type'] = 'none';
-  $handler->display->display_options['query']['type'] = 'views_query';
-  $handler->display->display_options['exposed_form']['type'] = 'basic';
-  $handler->display->display_options['pager']['type'] = 'full';
-  $handler->display->display_options['pager']['options']['items_per_page'] = '25';
-  $handler->display->display_options['pager']['options']['offset'] = '0';
-  $handler->display->display_options['pager']['options']['id'] = '0';
-  $handler->display->display_options['pager']['options']['quantity'] = '9';
-  $handler->display->display_options['style_plugin'] = 'table';
-  $handler->display->display_options['style_options']['grouping'] = '';
-  $handler->display->display_options['style_options']['columns'] = array(
-    'name_1' => 'name_1',
-    'name' => 'name',
-    'definition' => 'definition',
-    'is_obsolete' => 'is_obsolete',
-    'is_relationshiptype' => 'is_relationshiptype',
-  );
-  $handler->display->display_options['style_options']['default'] = '-1';
-  $handler->display->display_options['style_options']['info'] = array(
-    'name_1' => array(
-      'sortable' => 1,
-      'separator' => '',
-    ),
-    'name' => array(
-      'sortable' => 1,
-      'separator' => '',
-    ),
-    'definition' => array(
-      'sortable' => 0,
-      'separator' => '',
-    ),
-    'is_obsolete' => array(
-      'sortable' => 1,
-      'separator' => '',
-    ),
-    'is_relationshiptype' => array(
-      'sortable' => 1,
-      'separator' => '',
-    ),
-  );
-  /* Header: Global: Text area */
-  $handler->display->display_options['header']['text']['id'] = 'text';
-  $handler->display->display_options['header']['text']['table'] = 'views';
-  $handler->display->display_options['header']['text']['field'] = 'area';
-  $handler->display->display_options['header']['text']['label'] = 'Add cvterm';
-  $handler->display->display_options['header']['text']['empty'] = TRUE;
-  $handler->display->display_options['header']['text']['content'] = '<ul class="action-links">
+/* Display: Defaults */
+$handler = $view->new_display('default', 'Defaults', 'default');
+$handler->display->display_options['title'] = 'Controlled Vocabulary Terms';
+$handler->display->display_options['use_more_always'] = FALSE;
+$handler->display->display_options['access']['type'] = 'perm';
+$handler->display->display_options['access']['perm'] = 'administer controlled vocabularies';
+$handler->display->display_options['cache']['type'] = 'none';
+$handler->display->display_options['query']['type'] = 'views_query';
+$handler->display->display_options['exposed_form']['type'] = 'basic';
+$handler->display->display_options['pager']['type'] = 'full';
+$handler->display->display_options['pager']['options']['items_per_page'] = '25';
+$handler->display->display_options['pager']['options']['offset'] = '0';
+$handler->display->display_options['pager']['options']['id'] = '0';
+$handler->display->display_options['pager']['options']['quantity'] = '9';
+$handler->display->display_options['style_plugin'] = 'table';
+$handler->display->display_options['style_options']['grouping'] = '';
+$handler->display->display_options['style_options']['columns'] = array(
+  'name_1' => 'name_1',
+  'name' => 'name',
+  'definition' => 'definition',
+  'is_obsolete' => 'is_obsolete',
+  'is_relationshiptype' => 'is_relationshiptype',
+);
+$handler->display->display_options['style_options']['default'] = '-1';
+$handler->display->display_options['style_options']['info'] = array(
+  'name_1' => array(
+    'sortable' => 1,
+    'separator' => '',
+  ),
+  'name' => array(
+    'sortable' => 1,
+    'separator' => '',
+  ),
+  'definition' => array(
+    'sortable' => 0,
+    'separator' => '',
+  ),
+  'is_obsolete' => array(
+    'sortable' => 1,
+    'separator' => '',
+  ),
+  'is_relationshiptype' => array(
+    'sortable' => 1,
+    'separator' => '',
+  ),
+);
+/* Header: Global: Text area */
+$handler->display->display_options['header']['text']['id'] = 'text';
+$handler->display->display_options['header']['text']['table'] = 'views';
+$handler->display->display_options['header']['text']['field'] = 'area';
+$handler->display->display_options['header']['text']['label'] = 'Add cvterm';
+$handler->display->display_options['header']['text']['empty'] = TRUE;
+$handler->display->display_options['header']['text']['content'] = '<ul class="action-links">
         <li><a href="cvterm/add">Add Term</a></li>
    </ul>';
-  $handler->display->display_options['header']['text']['format'] = 'full_html';
-  /* No results behavior: Global: Text area */
-  $handler->display->display_options['empty']['text']['id'] = 'area';
-  $handler->display->display_options['empty']['text']['table'] = 'views';
-  $handler->display->display_options['empty']['text']['field'] = 'area';
-  $handler->display->display_options['empty']['text']['content'] = 'There are no terms associated with the selected controlled vocabulary. Please select a different vocabulary from the list above.';
-  $handler->display->display_options['empty']['text']['format'] = '1';
-  /* Field: Chado Cv: Name */
-  $handler->display->display_options['fields']['name_1']['id'] = 'name_1';
-  $handler->display->display_options['fields']['name_1']['table'] = 'cv';
-  $handler->display->display_options['fields']['name_1']['field'] = 'name';
-  $handler->display->display_options['fields']['name_1']['label'] = 'Vocabulary';
-  $handler->display->display_options['fields']['name_1']['alter']['make_link'] = TRUE;
-  $handler->display->display_options['fields']['name_1']['alter']['path'] = 'cvs?name=[name_1]';
-  /* Field: Chado Cvterm: Cvterm Id */
-  $handler->display->display_options['fields']['cvterm_id']['id'] = 'cvterm_id';
-  $handler->display->display_options['fields']['cvterm_id']['table'] = 'cvterm';
-  $handler->display->display_options['fields']['cvterm_id']['field'] = 'cvterm_id';
-  $handler->display->display_options['fields']['cvterm_id']['exclude'] = TRUE;
-  $handler->display->display_options['fields']['cvterm_id']['separator'] = '';
-  /* Field: Chado Cvterm: Name */
-  $handler->display->display_options['fields']['name']['id'] = 'name';
-  $handler->display->display_options['fields']['name']['table'] = 'cvterm';
-  $handler->display->display_options['fields']['name']['field'] = 'name';
-  /* Field: Chado Cvterm: Definition */
-  $handler->display->display_options['fields']['definition']['id'] = 'definition';
-  $handler->display->display_options['fields']['definition']['table'] = 'cvterm';
-  $handler->display->display_options['fields']['definition']['field'] = 'definition';
-  $handler->display->display_options['fields']['definition']['element_class'] = 'wide-column';
-  $handler->display->display_options['fields']['definition']['element_label_class'] = 'wide-column';
-  /* Field: Chado Cvterm: Is Obsolete */
-  $handler->display->display_options['fields']['is_obsolete']['id'] = 'is_obsolete';
-  $handler->display->display_options['fields']['is_obsolete']['table'] = 'cvterm';
-  $handler->display->display_options['fields']['is_obsolete']['field'] = 'is_obsolete';
-  $handler->display->display_options['fields']['is_obsolete']['label'] = 'Obsolete?';
-  $handler->display->display_options['fields']['is_obsolete']['alter']['alter_text'] = TRUE;
-  $handler->display->display_options['fields']['is_obsolete']['alter']['text'] = 'Yes';
-  $handler->display->display_options['fields']['is_obsolete']['element_class'] = 'short-column';
-  $handler->display->display_options['fields']['is_obsolete']['element_label_class'] = 'short-column';
-  $handler->display->display_options['fields']['is_obsolete']['empty'] = 'No';
-  $handler->display->display_options['fields']['is_obsolete']['empty_zero'] = TRUE;
-  $handler->display->display_options['fields']['is_obsolete']['separator'] = '';
-  /* Field: Chado Cvterm: Is Relationshiptype */
-  $handler->display->display_options['fields']['is_relationshiptype']['id'] = 'is_relationshiptype';
-  $handler->display->display_options['fields']['is_relationshiptype']['table'] = 'cvterm';
-  $handler->display->display_options['fields']['is_relationshiptype']['field'] = 'is_relationshiptype';
-  $handler->display->display_options['fields']['is_relationshiptype']['label'] = 'Relation-ship?';
-  $handler->display->display_options['fields']['is_relationshiptype']['alter']['alter_text'] = TRUE;
-  $handler->display->display_options['fields']['is_relationshiptype']['alter']['text'] = 'Yes';
-  $handler->display->display_options['fields']['is_relationshiptype']['element_class'] = 'short-column';
-  $handler->display->display_options['fields']['is_relationshiptype']['element_label_class'] = 'short-column';
-  $handler->display->display_options['fields']['is_relationshiptype']['empty'] = 'No';
-  $handler->display->display_options['fields']['is_relationshiptype']['empty_zero'] = TRUE;
-  $handler->display->display_options['fields']['is_relationshiptype']['separator'] = '';
-  /* Field: Global: Custom text */
-  $handler->display->display_options['fields']['nothing']['id'] = 'nothing';
-  $handler->display->display_options['fields']['nothing']['table'] = 'views';
-  $handler->display->display_options['fields']['nothing']['field'] = 'nothing';
-  $handler->display->display_options['fields']['nothing']['label'] = 'Edit Link';
-  $handler->display->display_options['fields']['nothing']['exclude'] = TRUE;
-  $handler->display->display_options['fields']['nothing']['alter']['text'] = 'edit';
-  $handler->display->display_options['fields']['nothing']['alter']['make_link'] = TRUE;
-  $handler->display->display_options['fields']['nothing']['alter']['path'] = 'admin/tripal/chado/tripal_cv/cvterm/edit/[cvterm_id]';
-  /* Field: Global: Custom text */
-  $handler->display->display_options['fields']['nothing_1']['id'] = 'nothing_1';
-  $handler->display->display_options['fields']['nothing_1']['table'] = 'views';
-  $handler->display->display_options['fields']['nothing_1']['field'] = 'nothing';
-  $handler->display->display_options['fields']['nothing_1']['label'] = '';
-  $handler->display->display_options['fields']['nothing_1']['alter']['text'] = '[nothing]';
-  $handler->display->display_options['fields']['nothing_1']['element_class'] = 'short-column';
-  $handler->display->display_options['fields']['nothing_1']['element_label_class'] = 'short-column';
-  $handler->display->display_options['fields']['nothing_1']['element_label_colon'] = FALSE;
-  /* Sort criterion: Chado Cv: Name */
-  $handler->display->display_options['sorts']['name']['id'] = 'name';
-  $handler->display->display_options['sorts']['name']['table'] = 'cv';
-  $handler->display->display_options['sorts']['name']['field'] = 'name';
-  /* Sort criterion: Chado Cvterm: Name */
-  $handler->display->display_options['sorts']['name_1']['id'] = 'name_1';
-  $handler->display->display_options['sorts']['name_1']['table'] = 'cvterm';
-  $handler->display->display_options['sorts']['name_1']['field'] = 'name';
-  /* Filter criterion: Chado Cv: Name */
-  $handler->display->display_options['filters']['name']['id'] = 'name';
-  $handler->display->display_options['filters']['name']['table'] = 'cv';
-  $handler->display->display_options['filters']['name']['field'] = 'name';
-  $handler->display->display_options['filters']['name']['value'] = 'All';
-  $handler->display->display_options['filters']['name']['group'] = '0';
-  $handler->display->display_options['filters']['name']['exposed'] = TRUE;
-  $handler->display->display_options['filters']['name']['expose']['operator_id'] = 'name_op';
-  $handler->display->display_options['filters']['name']['expose']['label'] = 'Vocabulary';
-  $handler->display->display_options['filters']['name']['expose']['operator'] = 'name_op';
-  $handler->display->display_options['filters']['name']['expose']['identifier'] = 'cv';
+$handler->display->display_options['header']['text']['format'] = 'full_html';
+/* No results behavior: Global: Text area */
+$handler->display->display_options['empty']['text']['id'] = 'area';
+$handler->display->display_options['empty']['text']['table'] = 'views';
+$handler->display->display_options['empty']['text']['field'] = 'area';
+$handler->display->display_options['empty']['text']['content'] = 'There are no terms associated with the selected controlled vocabulary. Please select a different vocabulary from the list above.';
+$handler->display->display_options['empty']['text']['format'] = '1';
+/* Field: Chado Cv: Cv Id */
+$handler->display->display_options['fields']['cv_id']['id'] = 'cv_id';
+$handler->display->display_options['fields']['cv_id']['table'] = 'cv';
+$handler->display->display_options['fields']['cv_id']['field'] = 'cv_id';
+$handler->display->display_options['fields']['cv_id']['exclude'] = TRUE;
+$handler->display->display_options['fields']['cv_id']['separator'] = '';
+/* Field: Chado Cv: Name */
+$handler->display->display_options['fields']['name_1']['id'] = 'name_1';
+$handler->display->display_options['fields']['name_1']['table'] = 'cv';
+$handler->display->display_options['fields']['name_1']['field'] = 'name';
+$handler->display->display_options['fields']['name_1']['label'] = 'Vocabulary';
+$handler->display->display_options['fields']['name_1']['alter']['make_link'] = TRUE;
+$handler->display->display_options['fields']['name_1']['alter']['path'] = 'admin/tripal/chado/tripal_cv/cvs?name=[name_1]';
+/* Field: Chado Cvterm: Cvterm Id */
+$handler->display->display_options['fields']['cvterm_id']['id'] = 'cvterm_id';
+$handler->display->display_options['fields']['cvterm_id']['table'] = 'cvterm';
+$handler->display->display_options['fields']['cvterm_id']['field'] = 'cvterm_id';
+$handler->display->display_options['fields']['cvterm_id']['exclude'] = TRUE;
+$handler->display->display_options['fields']['cvterm_id']['separator'] = '';
+/* Field: Chado Cvterm: Name */
+$handler->display->display_options['fields']['name']['id'] = 'name';
+$handler->display->display_options['fields']['name']['table'] = 'cvterm';
+$handler->display->display_options['fields']['name']['field'] = 'name';
+/* Field: Chado Cvterm: Definition */
+$handler->display->display_options['fields']['definition']['id'] = 'definition';
+$handler->display->display_options['fields']['definition']['table'] = 'cvterm';
+$handler->display->display_options['fields']['definition']['field'] = 'definition';
+$handler->display->display_options['fields']['definition']['element_class'] = 'wide-column';
+$handler->display->display_options['fields']['definition']['element_label_class'] = 'wide-column';
+/* Field: Chado Cvterm: Is Obsolete */
+$handler->display->display_options['fields']['is_obsolete']['id'] = 'is_obsolete';
+$handler->display->display_options['fields']['is_obsolete']['table'] = 'cvterm';
+$handler->display->display_options['fields']['is_obsolete']['field'] = 'is_obsolete';
+$handler->display->display_options['fields']['is_obsolete']['label'] = 'Obsolete?';
+$handler->display->display_options['fields']['is_obsolete']['alter']['alter_text'] = TRUE;
+$handler->display->display_options['fields']['is_obsolete']['alter']['text'] = 'Yes';
+$handler->display->display_options['fields']['is_obsolete']['element_class'] = 'short-column';
+$handler->display->display_options['fields']['is_obsolete']['element_label_class'] = 'short-column';
+$handler->display->display_options['fields']['is_obsolete']['empty'] = 'No';
+$handler->display->display_options['fields']['is_obsolete']['empty_zero'] = TRUE;
+$handler->display->display_options['fields']['is_obsolete']['separator'] = '';
+/* Field: Chado Cvterm: Is Relationshiptype */
+$handler->display->display_options['fields']['is_relationshiptype']['id'] = 'is_relationshiptype';
+$handler->display->display_options['fields']['is_relationshiptype']['table'] = 'cvterm';
+$handler->display->display_options['fields']['is_relationshiptype']['field'] = 'is_relationshiptype';
+$handler->display->display_options['fields']['is_relationshiptype']['label'] = 'Relation-ship?';
+$handler->display->display_options['fields']['is_relationshiptype']['alter']['alter_text'] = TRUE;
+$handler->display->display_options['fields']['is_relationshiptype']['alter']['text'] = 'Yes';
+$handler->display->display_options['fields']['is_relationshiptype']['element_class'] = 'short-column';
+$handler->display->display_options['fields']['is_relationshiptype']['element_label_class'] = 'short-column';
+$handler->display->display_options['fields']['is_relationshiptype']['empty'] = 'No';
+$handler->display->display_options['fields']['is_relationshiptype']['empty_zero'] = TRUE;
+$handler->display->display_options['fields']['is_relationshiptype']['separator'] = '';
+/* Field: Global: Custom text */
+$handler->display->display_options['fields']['nothing']['id'] = 'nothing';
+$handler->display->display_options['fields']['nothing']['table'] = 'views';
+$handler->display->display_options['fields']['nothing']['field'] = 'nothing';
+$handler->display->display_options['fields']['nothing']['label'] = 'Edit Link';
+$handler->display->display_options['fields']['nothing']['exclude'] = TRUE;
+$handler->display->display_options['fields']['nothing']['alter']['text'] = 'edit';
+$handler->display->display_options['fields']['nothing']['alter']['make_link'] = TRUE;
+$handler->display->display_options['fields']['nothing']['alter']['path'] = 'admin/tripal/chado/tripal_cv/cv/[cv_id]/cvterm/edit/[cvterm_id]';
+/* Field: Global: Custom text */
+$handler->display->display_options['fields']['nothing_1']['id'] = 'nothing_1';
+$handler->display->display_options['fields']['nothing_1']['table'] = 'views';
+$handler->display->display_options['fields']['nothing_1']['field'] = 'nothing';
+$handler->display->display_options['fields']['nothing_1']['label'] = '';
+$handler->display->display_options['fields']['nothing_1']['alter']['text'] = '[nothing]';
+$handler->display->display_options['fields']['nothing_1']['element_class'] = 'short-column';
+$handler->display->display_options['fields']['nothing_1']['element_label_class'] = 'short-column';
+$handler->display->display_options['fields']['nothing_1']['element_label_colon'] = FALSE;
+/* Sort criterion: Chado Cv: Name */
+$handler->display->display_options['sorts']['name']['id'] = 'name';
+$handler->display->display_options['sorts']['name']['table'] = 'cv';
+$handler->display->display_options['sorts']['name']['field'] = 'name';
+/* Sort criterion: Chado Cvterm: Name */
+$handler->display->display_options['sorts']['name_1']['id'] = 'name_1';
+$handler->display->display_options['sorts']['name_1']['table'] = 'cvterm';
+$handler->display->display_options['sorts']['name_1']['field'] = 'name';
+/* Filter criterion: Chado Cv: Name */
+$handler->display->display_options['filters']['name']['id'] = 'name';
+$handler->display->display_options['filters']['name']['table'] = 'cv';
+$handler->display->display_options['filters']['name']['field'] = 'name';
+$handler->display->display_options['filters']['name']['value'] = 'All';
+$handler->display->display_options['filters']['name']['group'] = '0';
+$handler->display->display_options['filters']['name']['exposed'] = TRUE;
+$handler->display->display_options['filters']['name']['expose']['operator_id'] = 'name_op';
+$handler->display->display_options['filters']['name']['expose']['label'] = 'Vocabulary';
+$handler->display->display_options['filters']['name']['expose']['operator'] = 'name_op';
+$handler->display->display_options['filters']['name']['expose']['identifier'] = 'cv';
+$handler->display->display_options['filters']['name']['expose']['remember_roles'] = array(
+  2 => '2',
+  1 => 0,
+  3 => 0,
+);
+/* Filter criterion: Chado Cvterm: Name */
+$handler->display->display_options['filters']['name_1']['id'] = 'name_1';
+$handler->display->display_options['filters']['name_1']['table'] = 'cvterm';
+$handler->display->display_options['filters']['name_1']['field'] = 'name';
+$handler->display->display_options['filters']['name_1']['operator'] = 'contains';
+$handler->display->display_options['filters']['name_1']['group'] = '0';
+$handler->display->display_options['filters']['name_1']['exposed'] = TRUE;
+$handler->display->display_options['filters']['name_1']['expose']['operator_id'] = '';
+$handler->display->display_options['filters']['name_1']['expose']['label'] = 'Name Contains';
+$handler->display->display_options['filters']['name_1']['expose']['identifier'] = 'name';
+$handler->display->display_options['filters']['name_1']['expose']['remember_roles'] = array(
+  2 => '2',
+  1 => 0,
+  3 => 0,
+);
+/* Filter criterion: Chado Cvterm: Definition */
+$handler->display->display_options['filters']['definition']['id'] = 'definition';
+$handler->display->display_options['filters']['definition']['table'] = 'cvterm';
+$handler->display->display_options['filters']['definition']['field'] = 'definition';
+$handler->display->display_options['filters']['definition']['operator'] = 'contains';
+$handler->display->display_options['filters']['definition']['group'] = '0';
+$handler->display->display_options['filters']['definition']['exposed'] = TRUE;
+$handler->display->display_options['filters']['definition']['expose']['operator_id'] = 'definition_op';
+$handler->display->display_options['filters']['definition']['expose']['label'] = 'Definition Contains';
+$handler->display->display_options['filters']['definition']['expose']['operator'] = 'definition_op';
+$handler->display->display_options['filters']['definition']['expose']['identifier'] = 'definition';
+$handler->display->display_options['filters']['definition']['expose']['remember_roles'] = array(
+  2 => '2',
+  1 => 0,
+  3 => 0,
+);
+
+/** MANUALLY ADDED since filter handler no exporting correctly */
   $handler->display->display_options['filters']['name']['expose']['values_form_type'] = 'select';
   $handler->display->display_options['filters']['name']['expose']['select_multiple'] = FALSE;
   $handler->display->display_options['filters']['name']['expose']['select_optional'] = TRUE;
   $handler->display->display_options['filters']['name']['expose']['max_length'] = 40;
-  $handler->display->display_options['filters']['name']['expose']['remember_roles'] = array(
-    2 => '2',
-    1 => 0,
-    3 => 0,
-  );
-  /* Filter criterion: Chado Cvterm: Name */
-  $handler->display->display_options['filters']['name_1']['id'] = 'name_1';
-  $handler->display->display_options['filters']['name_1']['table'] = 'cvterm';
-  $handler->display->display_options['filters']['name_1']['field'] = 'name';
-  $handler->display->display_options['filters']['name_1']['operator'] = 'contains';
-  $handler->display->display_options['filters']['name_1']['group'] = '0';
-  $handler->display->display_options['filters']['name_1']['exposed'] = TRUE;
-  $handler->display->display_options['filters']['name_1']['expose']['operator_id'] = '';
-  $handler->display->display_options['filters']['name_1']['expose']['label'] = 'Name Contains';
-  $handler->display->display_options['filters']['name_1']['expose']['identifier'] = 'name';
-  $handler->display->display_options['filters']['name']['expose']['values_form_type'] = 'textfield';
+
+  $handler->display->display_options['filters']['name_1']['expose']['values_form_type'] = 'textfield';
+  $handler->display->display_options['filters']['name_1']['expose']['select_multiple'] = FALSE;
+  $handler->display->display_options['filters']['name_1']['expose']['select_optional'] = FALSE;
+  $handler->display->display_options['filters']['name_1']['expose']['max_length'] = 40;
+
+/* Display: Page */
+$handler = $view->new_display('page', 'Page', 'page_1');
+$handler->display->display_options['path'] = 'admin/tripal/chado/tripal_cv/cvterms';
+$handler->display->display_options['menu']['type'] = 'tab';
+$handler->display->display_options['menu']['title'] = 'Terms';
+$handler->display->display_options['menu']['description'] = 'A listing of a controlled vocabulary terms for a given vocabulary';
+$handler->display->display_options['menu']['weight'] = '-8';
+$handler->display->display_options['menu']['name'] = 'management';
+$handler->display->display_options['menu']['context'] = 0;
+$handler->display->display_options['menu']['context_only_inline'] = 0;
+
+  /** MANUALLY ADD since filter handler no exporting correctly
+  $handler->display->display_options['filters']['name']['expose']['values_form_type'] = 'select';
   $handler->display->display_options['filters']['name']['expose']['select_multiple'] = FALSE;
-  $handler->display->display_options['filters']['name']['expose']['select_optional'] = FALSE;
+  $handler->display->display_options['filters']['name']['expose']['select_optional'] = TRUE;
   $handler->display->display_options['filters']['name']['expose']['max_length'] = 40;
-  $handler->display->display_options['filters']['name_1']['expose']['remember_roles'] = array(
-    2 => '2',
-    1 => 0,
-    3 => 0,
-  );
-  /* Filter criterion: Chado Cvterm: Definition */
-  $handler->display->display_options['filters']['definition']['id'] = 'definition';
-  $handler->display->display_options['filters']['definition']['table'] = 'cvterm';
-  $handler->display->display_options['filters']['definition']['field'] = 'definition';
-  $handler->display->display_options['filters']['definition']['operator'] = 'contains';
-  $handler->display->display_options['filters']['definition']['group'] = '0';
-  $handler->display->display_options['filters']['definition']['exposed'] = TRUE;
-  $handler->display->display_options['filters']['definition']['expose']['operator_id'] = 'definition_op';
-  $handler->display->display_options['filters']['definition']['expose']['label'] = 'Definition Contains';
-  $handler->display->display_options['filters']['definition']['expose']['operator'] = 'definition_op';
-  $handler->display->display_options['filters']['definition']['expose']['identifier'] = 'definition';
-  $handler->display->display_options['filters']['definition']['expose']['remember_roles'] = array(
-    2 => '2',
-    1 => 0,
-    3 => 0,
-  );
 
-  /* Display: Page */
-  $handler = $view->new_display('page', 'Page', 'page_1');
-  $handler->display->display_options['path'] = 'admin/tripal/chado/tripal_cv/cvterms';
-  $handler->display->display_options['menu']['type'] = 'tab';
-  $handler->display->display_options['menu']['title'] = 'Terms';
-  $handler->display->display_options['menu']['description'] = 'A listing of a controlled vocabulary terms for a given vocabulary';
-  $handler->display->display_options['menu']['weight'] = '-8';
-  $handler->display->display_options['menu']['name'] = 'management';
-  $handler->display->display_options['menu']['context'] = 0;
-  $handler->display->display_options['menu']['context_only_inline'] = 0;
+  $handler->display->display_options['filters']['name_1']['expose']['values_form_type'] = 'textfield';
+  $handler->display->display_options['filters']['name_1']['expose']['select_multiple'] = FALSE;
+  $handler->display->display_options['filters']['name_1']['expose']['select_optional'] = FALSE;
+  $handler->display->display_options['filters']['name_1']['expose']['max_length'] = 40;
+  */
 
   return $view;
 }