|  | @@ -2,12 +2,12 @@
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  /**
 | 
	
		
			
				|  |  |   * @file
 | 
	
		
			
				|  |  | - * This file should contain all Drupal hooks for interacting with nodes. 
 | 
	
		
			
				|  |  | + * This file should contain all Drupal hooks for interacting with nodes.
 | 
	
		
			
				|  |  |   *
 | 
	
		
			
				|  |  |   */
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  /**
 | 
	
		
			
				|  |  | - *  Implementation of hook_node_info().  This hook provides information to drupal 
 | 
	
		
			
				|  |  | + *  Implementation of hook_node_info().  This hook provides information to drupal
 | 
	
		
			
				|  |  |   *  about any node types that are being created by this module. If your module
 | 
	
		
			
				|  |  |   *  does not create any node types then this function is not required.
 | 
	
		
			
				|  |  |   *
 | 
	
	
		
			
				|  | @@ -29,12 +29,12 @@ function tripal_example_node_info() {
 | 
	
		
			
				|  |  |    // coordinating which node belongs to which record in Chado. Therefore,
 | 
	
		
			
				|  |  |    // Tripal maintains tables in the Drupal schema that maps Drupal nodes
 | 
	
		
			
				|  |  |    // to recrords in Chado.  Syncing is the process of creating Drupal nodes
 | 
	
		
			
				|  |  | -  // and linking them to the appropriate record. 
 | 
	
		
			
				|  |  | +  // and linking them to the appropriate record.
 | 
	
		
			
				|  |  |    //  'chado_node_api' => array(
 | 
	
		
			
				|  |  |    //    'base_table' => 'example',       // the base table name (e.g. feature, library, contact)
 | 
	
		
			
				|  |  |    //    'hook_prefix' => 'chado_example',// the node type hook prefix
 | 
	
		
			
				|  |  |    //    'record_type_title' => array(
 | 
	
		
			
				|  |  | -  //      'singular' => t('Library'),    // how to refer to the record 
 | 
	
		
			
				|  |  | +  //      'singular' => t('Library'),    // how to refer to the record
 | 
	
		
			
				|  |  |    //      'plural' => t('Libraries')     // how to refer to the record in plurals
 | 
	
		
			
				|  |  |    //    ),
 | 
	
		
			
				|  |  |    //    'sync_filters' => array(
 | 
	
	
		
			
				|  | @@ -43,7 +43,7 @@ function tripal_example_node_info() {
 | 
	
		
			
				|  |  |    //    ),
 | 
	
		
			
				|  |  |    //  )
 | 
	
		
			
				|  |  |    //);
 | 
	
		
			
				|  |  | -  
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |    return $nodes;
 | 
	
		
			
				|  |  |  }
 | 
	
		
			
				|  |  |  
 | 
	
	
		
			
				|  | @@ -54,13 +54,13 @@ function tripal_example_node_info() {
 | 
	
		
			
				|  |  |   * are set in the chado_example_permissions() hook in the
 | 
	
		
			
				|  |  |   * tripal_example.module file.  This hook is not needed
 | 
	
		
			
				|  |  |   * if no node types were defined in the hook_node_info() hook.
 | 
	
		
			
				|  |  | - * 
 | 
	
		
			
				|  |  | + *
 | 
	
		
			
				|  |  |   * @return
 | 
	
		
			
				|  |  |   * This function should return null if it does not specificially
 | 
	
		
			
				|  |  |   * deny access. This allows for other mechanisms to to deny
 | 
	
		
			
				|  |  |   * or reject access. If the return value is TRUE then access
 | 
	
		
			
				|  |  |   * is granted regardless of any other rules that might be implemented
 | 
	
		
			
				|  |  | - * by other modules.  
 | 
	
		
			
				|  |  | + * by other modules.
 | 
	
		
			
				|  |  |   */
 | 
	
		
			
				|  |  |  function chado_example_node_access($node, $op, $account) {
 | 
	
		
			
				|  |  |    if ($op == 'create') {
 | 
	
	
		
			
				|  | @@ -91,7 +91,7 @@ function chado_example_node_access($node, $op, $account) {
 | 
	
		
			
				|  |  |   * Implementation of hook_form() when a node type of chado_example is defined.
 | 
	
		
			
				|  |  |   * If a node type is not defined then this function is not needed. The table
 | 
	
		
			
				|  |  |   * name in chado for this example module is named 'example' so there is a
 | 
	
		
			
				|  |  | - * corresponding example_id in that table (similar to feature.feature_id, 
 | 
	
		
			
				|  |  | + * corresponding example_id in that table (similar to feature.feature_id,
 | 
	
		
			
				|  |  |   * contact.contact_id, etc).
 | 
	
		
			
				|  |  |   *
 | 
	
		
			
				|  |  |   * @ingroup tripal_example
 | 
	
	
		
			
				|  | @@ -136,9 +136,48 @@ function chado_example_form($node, &$form_state) {
 | 
	
		
			
				|  |  |      // $uniquename   = $form_state['input']['uniquename'];
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |    }
 | 
	
		
			
				|  |  | -  
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |    // add form elements here.
 | 
	
		
			
				|  |  | -  
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +  // PROPERTIES FORM
 | 
	
		
			
				|  |  | +  //---------------------------------------------
 | 
	
		
			
				|  |  | +  // If there is a exampleprop table and you want to allow users to add/remove entries
 | 
	
		
			
				|  |  | +  // from it through your node form then add this section to your own node form
 | 
	
		
			
				|  |  | +  $details = array(
 | 
	
		
			
				|  |  | +    'property_table' => 'exampleprop',      // the name of the prop table
 | 
	
		
			
				|  |  | +    'base_foreign_key' => 'example_id',     // the name of the key in your base chado table
 | 
	
		
			
				|  |  | +    'base_key_value' => $example_id,        // the value of example_id for this record
 | 
	
		
			
				|  |  | +    'cv_name' => 'example_property_types'   // the cv.name of the cv governing exampleprop.type_id
 | 
	
		
			
				|  |  | +  );
 | 
	
		
			
				|  |  | +  // Adds the form elements to your current form
 | 
	
		
			
				|  |  | +  chado_node_properties_form($form, $form_state, $details);
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +  // ADDITIONAL DBXREFS FORM
 | 
	
		
			
				|  |  | +  //---------------------------------------------
 | 
	
		
			
				|  |  | +  // If there is a example_dbxref table and you want to allow users to add/remove entries
 | 
	
		
			
				|  |  | +  // from it through your node form then add this section to your own node form
 | 
	
		
			
				|  |  | +  $details = array(
 | 
	
		
			
				|  |  | +    'linking_table' => 'example_dbxref',  // the name of the _dbxref table
 | 
	
		
			
				|  |  | +    'base_foreign_key' => 'example_id',   // the name of the key in your base chado table
 | 
	
		
			
				|  |  | +    'base_key_value' => $example_id       // the value of example_id for this record
 | 
	
		
			
				|  |  | +  );
 | 
	
		
			
				|  |  | +  // Adds the form elements to your current form
 | 
	
		
			
				|  |  | +  chado_node_additional_dbxrefs_form($form, $form_state, $details);
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +  // RELATIONSHIPS FORM
 | 
	
		
			
				|  |  | +  //---------------------------------------------
 | 
	
		
			
				|  |  | +  // If there is a example_relationship table and you want to allow users to add/remove entries
 | 
	
		
			
				|  |  | +  // from it through your node form then add this section to your own node form
 | 
	
		
			
				|  |  | +  $details = array(
 | 
	
		
			
				|  |  | +    'relationship_table' => 'example_relationship', // the name of the _relationship table
 | 
	
		
			
				|  |  | +    'base_table' => 'example',                      // the name of your chado base table
 | 
	
		
			
				|  |  | +    'base_foreign_key' => 'example_id',             // the name of the key in your base chado table
 | 
	
		
			
				|  |  | +    'base_key_value' => $example_id,                // the value of example_id for this record
 | 
	
		
			
				|  |  | +    'nodetype' => 'example',                        // the human-readable name of your node type
 | 
	
		
			
				|  |  | +    'cv_id' => 'example_relationship_types'         // the cv.name of the cv governing example_relationship.type_id
 | 
	
		
			
				|  |  | +  );
 | 
	
		
			
				|  |  | +  // Adds the form elements to your current form
 | 
	
		
			
				|  |  | +  chado_node_relationships_form($form, $form_state, $details);
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |    // return the form
 | 
	
		
			
				|  |  |    return $form;
 | 
	
	
		
			
				|  | @@ -192,11 +231,11 @@ function chado_example_validate($node, $form, &$form_state) {
 | 
	
		
			
				|  |  |   *  node is inserted into the database. We need it so that we can insert
 | 
	
		
			
				|  |  |   *  appropriate fields as provided by the user into the database. And so that
 | 
	
		
			
				|  |  |   *  we can link the new Drupal node to the data in Chado via the chado_example
 | 
	
		
			
				|  |  | - *  linking table. We can get to this function also during "syncing". 
 | 
	
		
			
				|  |  | - *  With syncing, however, the data already exists in Chado and we do not want 
 | 
	
		
			
				|  |  | + *  linking table. We can get to this function also during "syncing".
 | 
	
		
			
				|  |  | + *  With syncing, however, the data already exists in Chado and we do not want
 | 
	
		
			
				|  |  |   *  to try to re-add it. But we do need to add an entry to the chado_example table
 | 
	
		
			
				|  |  | - *  to link the Drupal node with the data in the 'example' table of Chado. 
 | 
	
		
			
				|  |  | - *  
 | 
	
		
			
				|  |  | + *  to link the Drupal node with the data in the 'example' table of Chado.
 | 
	
		
			
				|  |  | + *
 | 
	
		
			
				|  |  |   *  This function is not required if the hook_node_info() does not define
 | 
	
		
			
				|  |  |   *  any custom node types.
 | 
	
		
			
				|  |  |   *
 | 
	
	
		
			
				|  | @@ -210,7 +249,10 @@ function chado_example_insert($node) {
 | 
	
		
			
				|  |  |    // we can skip adding the example as it is already there, although
 | 
	
		
			
				|  |  |    // we do need to proceed with the rest of the insert
 | 
	
		
			
				|  |  |    if (!property_exists($node, 'example_id')) {
 | 
	
		
			
				|  |  | -    
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    // ADD TO CHADO
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    // * Example Table *
 | 
	
		
			
				|  |  |      // perform the insert using the tripal_core_chado_insert function();
 | 
	
		
			
				|  |  |      //$values = array(
 | 
	
		
			
				|  |  |      //  'uniquename' => $node->uniquename,
 | 
	
	
		
			
				|  | @@ -223,9 +265,43 @@ function chado_example_insert($node) {
 | 
	
		
			
				|  |  |      //  array('%values' => print_r($values, TRUE)), WATCHDOG_WARNING);
 | 
	
		
			
				|  |  |      //  return;
 | 
	
		
			
				|  |  |      //}
 | 
	
		
			
				|  |  | -    
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |      // get the example_id for linking Drupal node with Chado data
 | 
	
		
			
				|  |  |      // $example_id = $example->example_id;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    // Only add to other chado tables if the base record was inserted properly
 | 
	
		
			
				|  |  | +    if ($example_id > 0) {
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +      // * Properties Form *
 | 
	
		
			
				|  |  | +      // If you implemented the properties form in chado_example_form then you need to
 | 
	
		
			
				|  |  | +      // handle inserting these properties into your chado prop table.
 | 
	
		
			
				|  |  | +      // $details = array(
 | 
	
		
			
				|  |  | +      //   'property_table' => 'exampleprop',   // the name of the prop table
 | 
	
		
			
				|  |  | +      //   'base_table' => 'example',           // the name of your chado base table
 | 
	
		
			
				|  |  | +      //   'foreignkey_name' => 'example_id',   // the name of the key in your base table
 | 
	
		
			
				|  |  | +      //   'foreignkey_value' => $example_id    // the value of the example_id key
 | 
	
		
			
				|  |  | +      // );
 | 
	
		
			
				|  |  | +      // chado_node_properties_form_update_properties($node, $details);
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +      // * Additional DBxrefs Form *
 | 
	
		
			
				|  |  | +      // If you implemented the dbxrefs form in chado_example_form then you need to
 | 
	
		
			
				|  |  | +      // handle inserting these database references into your chado _dbxref table.
 | 
	
		
			
				|  |  | +      // $details = array(
 | 
	
		
			
				|  |  | +      //   'linking_table' => 'example_dbxref',   // the name of your _dbxref table
 | 
	
		
			
				|  |  | +      //   'foreignkey_name' => 'example_id',     // the name of the key in your base table
 | 
	
		
			
				|  |  | +      //   'foreignkey_value' => $example_id      // the value of the example_id key
 | 
	
		
			
				|  |  | +      // );
 | 
	
		
			
				|  |  | +      // chado_node_additional_dbxrefs_form_update_dbxrefs($node, $details);
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +      // * Relationships Form *
 | 
	
		
			
				|  |  | +      // If you implemented the relationships form in chado_example_form then you need to
 | 
	
		
			
				|  |  | +      // handle inserting these relationships into your chado _relationship table.
 | 
	
		
			
				|  |  | +      // $details = array(
 | 
	
		
			
				|  |  | +      //   'relationship_table' => 'example_relationship',  // name of the _relationship table
 | 
	
		
			
				|  |  | +      //   'foreignkey_value' => $example_id                // value of the example_id key
 | 
	
		
			
				|  |  | +      // );
 | 
	
		
			
				|  |  | +      // chado_node_relationships_form_update_relationships($node, $details);
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  |    }
 | 
	
		
			
				|  |  |    else {
 | 
	
		
			
				|  |  |      // the node has an example_id so get it for linking Drupal node with Chado data
 | 
	
	
		
			
				|  | @@ -248,7 +324,7 @@ function chado_example_insert($node) {
 | 
	
		
			
				|  |  |   * Implementation of hook_update().  This function runs after the
 | 
	
		
			
				|  |  |   * node has been inserted into the Drupal schema and allows us to
 | 
	
		
			
				|  |  |   * update the record in Chado.
 | 
	
		
			
				|  |  | - * 
 | 
	
		
			
				|  |  | + *
 | 
	
		
			
				|  |  |   *  This function is not required if the hook_node_info() does not define
 | 
	
		
			
				|  |  |   *  any custom node types.
 | 
	
		
			
				|  |  |   *
 | 
	
	
		
			
				|  | @@ -274,15 +350,45 @@ function chado_example_update($node) {
 | 
	
		
			
				|  |  |    //    array('%values' => print_r($values, TRUE)), WATCHDOG_WARNING);
 | 
	
		
			
				|  |  |    //}
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +  // * Properties Form *
 | 
	
		
			
				|  |  | +  // If you implemented the properties form in chado_example_form then you need to
 | 
	
		
			
				|  |  | +  // handle updating these properties into your chado prop table.
 | 
	
		
			
				|  |  | +  // $details = array(
 | 
	
		
			
				|  |  | +  //   'property_table' => 'exampleprop',   // the name of the prop table
 | 
	
		
			
				|  |  | +  //   'base_table' => 'example',           // the name of your chado base table
 | 
	
		
			
				|  |  | +  //   'foreignkey_name' => 'example_id',   // the name of the key in your base table
 | 
	
		
			
				|  |  | +  //   'foreignkey_value' => $example_id    // the value of the example_id key
 | 
	
		
			
				|  |  | +  // );
 | 
	
		
			
				|  |  | +  // chado_node_properties_form_update_properties($node, $details);
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +  // * Additional DBxrefs Form *
 | 
	
		
			
				|  |  | +  // If you implemented the dbxrefs form in chado_example_form then you need to
 | 
	
		
			
				|  |  | +  // handle updating these database references into your chado _dbxref table.
 | 
	
		
			
				|  |  | +  // $details = array(
 | 
	
		
			
				|  |  | +  //   'linking_table' => 'example_dbxref',   // the name of your _dbxref table
 | 
	
		
			
				|  |  | +  //   'foreignkey_name' => 'example_id',     // the name of the key in your base table
 | 
	
		
			
				|  |  | +  //   'foreignkey_value' => $example_id      // the value of the example_id key
 | 
	
		
			
				|  |  | +  // );
 | 
	
		
			
				|  |  | +  // chado_node_additional_dbxrefs_form_update_dbxrefs($node, $details);
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +  // * Relationships Form *
 | 
	
		
			
				|  |  | +  // If you implemented the relationships form in chado_example_form then you need to
 | 
	
		
			
				|  |  | +  // handle updating these relationships into your chado _relationship table.
 | 
	
		
			
				|  |  | +  // $details = array(
 | 
	
		
			
				|  |  | +  //   'relationship_table' => 'example_relationship',  // name of the _relationship table
 | 
	
		
			
				|  |  | +  //   'foreignkey_value' => $example_id                // value of the example_id key
 | 
	
		
			
				|  |  | +  // );
 | 
	
		
			
				|  |  | +  // chado_node_relationships_form_update_relationships($node, $details);
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |  }
 | 
	
		
			
				|  |  |  /**
 | 
	
		
			
				|  |  | - * Implementation of hook_delete().  This function runs after the 
 | 
	
		
			
				|  |  | - * node has been deleted from the Drupal schema and allows us to 
 | 
	
		
			
				|  |  | + * Implementation of hook_delete().  This function runs after the
 | 
	
		
			
				|  |  | + * node has been deleted from the Drupal schema and allows us to
 | 
	
		
			
				|  |  |   * delete the corresponding recrod in Chado.
 | 
	
		
			
				|  |  |   *
 | 
	
		
			
				|  |  |   * This function is not required if the hook_node_info() does not define
 | 
	
		
			
				|  |  |   * any custom node types.
 | 
	
		
			
				|  |  | - *  
 | 
	
		
			
				|  |  | + *
 | 
	
		
			
				|  |  |   * @ingroup tripal_example
 | 
	
		
			
				|  |  |   */
 | 
	
		
			
				|  |  |  function chado_example_delete($node) {
 | 
	
	
		
			
				|  | @@ -317,7 +423,7 @@ function chado_example_delete($node) {
 | 
	
		
			
				|  |  |   * for the feature table, the chado_feature_load() function adds in
 | 
	
		
			
				|  |  |   * a feature object which contains all of the fields and sub objects
 | 
	
		
			
				|  |  |   * for data in tables with foreign key relationships.
 | 
	
		
			
				|  |  | - *  
 | 
	
		
			
				|  |  | + *
 | 
	
		
			
				|  |  |   * This function is not required if the hook_node_info() does not define
 | 
	
		
			
				|  |  |   * any custom node types.
 | 
	
		
			
				|  |  |   *
 | 
	
	
		
			
				|  | @@ -334,17 +440,17 @@ function chado_example_load($nodes) {
 | 
	
		
			
				|  |  |      // build the example variable by using the tripal_core_generate_chado_var() function
 | 
	
		
			
				|  |  |      //$values = array('example_id' => $example_id);
 | 
	
		
			
				|  |  |      //$example = tripal_core_generate_chado_var('example', $values);
 | 
	
		
			
				|  |  | -    
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |      // for fields in the table that are of type 'text' you may want to include those
 | 
	
		
			
				|  |  |      // by default, the tripal_core_generate_chado_var does not include text fields as
 | 
	
		
			
				|  |  |      // they may be very large and including a large text field can slow the page load.
 | 
	
		
			
				|  |  | -    // If you know a text field will never be large and it is important for the 
 | 
	
		
			
				|  |  | -    // other functions that will see the node to have access to a field you can 
 | 
	
		
			
				|  |  | +    // If you know a text field will never be large and it is important for the
 | 
	
		
			
				|  |  | +    // other functions that will see the node to have access to a field you can
 | 
	
		
			
				|  |  |      // include it here using the tripal_core_expand_chado_vars() function.  In most
 | 
	
		
			
				|  |  |      // cases it is probably best to let the end-user decide if text fields should
 | 
	
		
			
				|  |  |      // be included by using this function in the templates.
 | 
	
		
			
				|  |  |      //$example = tripal_core_expand_chado_vars($example, 'field', 'example.residues');
 | 
	
		
			
				|  |  | -        
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |      // add the new example object to this node.
 | 
	
		
			
				|  |  |      //$nodes[$nid]->example = $example;
 | 
	
		
			
				|  |  |    }
 | 
	
	
		
			
				|  | @@ -358,12 +464,12 @@ function chado_example_load($nodes) {
 | 
	
		
			
				|  |  |   * what genus and species is provided. This hook can allow the title to
 | 
	
		
			
				|  |  |   * be set using user supplied data before the node is saved.  In practice
 | 
	
		
			
				|  |  |   * any change can be made to any fields in the node object.
 | 
	
		
			
				|  |  | - * 
 | 
	
		
			
				|  |  | + *
 | 
	
		
			
				|  |  |   * This function is not required. You probably won't need it if you
 | 
	
		
			
				|  |  |   * don't define a custom node type in the hook_node_info() function. But
 | 
	
		
			
				|  |  |   * it is node type agnostic, so you can use this function to change the
 | 
	
		
			
				|  |  |   * contents of any node regardless of it's type.
 | 
	
		
			
				|  |  | - * 
 | 
	
		
			
				|  |  | + *
 | 
	
		
			
				|  |  |   * @ingroup tripal_example
 | 
	
		
			
				|  |  |   */
 | 
	
		
			
				|  |  |  function tripal_example_node_presave($node) {
 | 
	
	
		
			
				|  | @@ -377,7 +483,7 @@ function tripal_example_node_presave($node) {
 | 
	
		
			
				|  |  |  }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  /**
 | 
	
		
			
				|  |  | - * Implementation of hook node_insert().  This function is used 
 | 
	
		
			
				|  |  | + * Implementation of hook node_insert().  This function is used
 | 
	
		
			
				|  |  |   * after any a node is inserted into the database.  It is different
 | 
	
		
			
				|  |  |   * from the hook_insert() function above in that it is called after
 | 
	
		
			
				|  |  |   * any node is saved, regardlesss of it's type. This function is useful
 | 
	
	
		
			
				|  | @@ -388,17 +494,17 @@ function tripal_example_node_presave($node) {
 | 
	
		
			
				|  |  |   * of a node cannot be set in the hook_insert() function. Therefore
 | 
	
		
			
				|  |  |   * the tripal_feature module uses this function to set the url path
 | 
	
		
			
				|  |  |   * of a newly inserted feature node.
 | 
	
		
			
				|  |  | - * 
 | 
	
		
			
				|  |  | + *
 | 
	
		
			
				|  |  |   * This function is not required. You probably won't need it if you
 | 
	
		
			
				|  |  |   * don't define a custom node type in the hook_node_info() function. But
 | 
	
		
			
				|  |  |   * it is node type agnostic, so you can use this function to do any
 | 
	
		
			
				|  |  |   * activity after insert of a node.
 | 
	
		
			
				|  |  | - * 
 | 
	
		
			
				|  |  | + *
 | 
	
		
			
				|  |  |   * @ingroup tripal_example
 | 
	
		
			
				|  |  |   */
 | 
	
		
			
				|  |  |  function tripal_example_node_insert($node) {
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -  // set the URL path after inserting.  We do it here because we do not know the 
 | 
	
		
			
				|  |  | +  // set the URL path after inserting.  We do it here because we do not know the
 | 
	
		
			
				|  |  |    // example_id in the presave and cannot do it in the hook_insert()
 | 
	
		
			
				|  |  |    //switch ($node->type) {
 | 
	
		
			
				|  |  |    //  case 'chado_example':
 | 
	
	
		
			
				|  | @@ -419,7 +525,7 @@ function tripal_example_node_insert($node) {
 | 
	
		
			
				|  |  |    //}
 | 
	
		
			
				|  |  |  }
 | 
	
		
			
				|  |  |  /**
 | 
	
		
			
				|  |  | - * Implementation of hook node_update().  This function is used 
 | 
	
		
			
				|  |  | + * Implementation of hook node_update().  This function is used
 | 
	
		
			
				|  |  |   * after any a node is updated in the database.  It is different
 | 
	
		
			
				|  |  |   * from the hook_update() function above in that it is called after
 | 
	
		
			
				|  |  |   * any node is updated, regardlesss of it's type. This function is useful
 | 
	
	
		
			
				|  | @@ -430,12 +536,12 @@ function tripal_example_node_insert($node) {
 | 
	
		
			
				|  |  |   * of a node cannot be set in the hook_update() function. Therefore
 | 
	
		
			
				|  |  |   * the tripal_feature module uses this function to reset the url path
 | 
	
		
			
				|  |  |   * of an updated feature node.
 | 
	
		
			
				|  |  | - * 
 | 
	
		
			
				|  |  | + *
 | 
	
		
			
				|  |  |   * This function is not required. You probably won't need it if you
 | 
	
		
			
				|  |  |   * don't define a custom node type in the hook_node_info() function. But
 | 
	
		
			
				|  |  |   * it is node type agnostic, so you can use this function to do any
 | 
	
		
			
				|  |  |   * activity after insert of a node.
 | 
	
		
			
				|  |  | - * 
 | 
	
		
			
				|  |  | + *
 | 
	
		
			
				|  |  |   */
 | 
	
		
			
				|  |  |  function tripal_example_node_update($node) {
 | 
	
		
			
				|  |  |  
 | 
	
	
		
			
				|  | @@ -456,12 +562,12 @@ function tripal_example_node_update($node) {
 | 
	
		
			
				|  |  |   * Implementation of hook_node_view().  This function allows you to
 | 
	
		
			
				|  |  |   * add custom content to any node page.  It is node type agnostic.
 | 
	
		
			
				|  |  |   * Here we typically use it to add content to our custom node type or
 | 
	
		
			
				|  |  | - * to other Tripal node types. Typically for Tripal, a content "block" 
 | 
	
		
			
				|  |  | + * to other Tripal node types. Typically for Tripal, a content "block"
 | 
	
		
			
				|  |  |   * (e.g. feature properties, feature dbxref, feature pub) has a corresponding
 | 
	
		
			
				|  |  | - * template file.  Those template files are first defined to Drupal using 
 | 
	
		
			
				|  |  | + * template file.  Those template files are first defined to Drupal using
 | 
	
		
			
				|  |  |   * the hook_theme() function defined in the tripal_example.module file.  Here
 | 
	
		
			
				|  |  | - * we can add items to a node's content by calling those templates as needed. 
 | 
	
		
			
				|  |  | - * 
 | 
	
		
			
				|  |  | + * we can add items to a node's content by calling those templates as needed.
 | 
	
		
			
				|  |  | + *
 | 
	
		
			
				|  |  |   * @ingroup tripal_example
 | 
	
		
			
				|  |  |   */
 | 
	
		
			
				|  |  |  function tripal_example_node_view($node, $view_mode, $langcode) {
 | 
	
	
		
			
				|  | @@ -470,12 +576,12 @@ function tripal_example_node_view($node, $view_mode, $langcode) {
 | 
	
		
			
				|  |  |        // there are different ways a node can be viewed. Primarily Tripal
 | 
	
		
			
				|  |  |        // supports full page view and teaser view.
 | 
	
		
			
				|  |  |        if ($view_mode == 'full') {
 | 
	
		
			
				|  |  | -        // there is always a base template.  This is the template that 
 | 
	
		
			
				|  |  | +        // there is always a base template.  This is the template that
 | 
	
		
			
				|  |  |          // is first shown when the example node type is first displayed
 | 
	
		
			
				|  |  |          //$node->content['tripal_example_base'] = array(
 | 
	
		
			
				|  |  |          //  '#value' => theme('tripal_example_base', array('node' => $node)),
 | 
	
		
			
				|  |  |          //);
 | 
	
		
			
				|  |  | -         
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |          // we can add other templates as well.
 | 
	
		
			
				|  |  |          //$node->content['tripal_example_properties'] = array(
 | 
	
		
			
				|  |  |          //  '#value' => theme('tripal_example_properties', array('node' => $node)),
 |