| 
					
				 | 
			
			
				@@ -105,6 +105,7 @@ class chado_linker__relationship extends TripalField { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       'required' => FALSE, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       'settings' => array( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         'auto_attach' => FALSE, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        'child_relationship_types' => '', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         'relationship_types' => '', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       ), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       'widget' => array( 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -369,7 +370,6 @@ class chado_linker__relationship extends TripalField { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         'method' => 'replace' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       ), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     ); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-     
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     if ($cv_id) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       $options = array();       
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       $widget['type_name'] = array( 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -878,9 +878,18 @@ class chado_linker__relationship extends TripalField { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         following value is set.' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     ); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    $element['child_relationship_types'] = array( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      '#type' => 'textfield', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      '#title' => 'Child Relationship Types', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      '#description' => 'Provide a term that all of its child terms will be available as   
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        relationship types.', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      '#default_value' => $instance['settings']['child_relationship_types'], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      '#autocomplete_path' => "admin/tripal/storage/chado/auto_name/cvterm/" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    ); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+     
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     $element['relationship_types'] = array( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       '#type' => 'textarea', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      '#title' => 'Relationship Types', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      '#title' => 'Specific Relationship Types', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       '#description' => 'Provide terms separated by a new line. The term provided should be  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         unique and distinguishable by the name.', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       '#default_value' => $instance['settings']['relationship_types'], 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -894,22 +903,35 @@ class chado_linker__relationship extends TripalField { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   public static function instanceSettingsFormValidate($field, $instance, $form, &$form_state) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     //dpm($form);dpm($form_state); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    $value = $form_state['values']['instance']['settings']['relationship_types']; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    $rel_types = explode(PHP_EOL, $value); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    $settings = $form_state['values']['instance']['settings']; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     // Make sure the supplied types are valid cvterms 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    foreach($rel_types AS $type) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      // Ignore empty lines 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      if (trim($type) == '') { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        continue; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    if (isset($settings['relationship_types'])) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      $rel_types = explode(PHP_EOL, $settings['relationship_types']); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      foreach($rel_types AS $type) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        // Ignore empty lines 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if (trim($type) == '') { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          continue; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        $term = tripal_get_cvterm(array('name' => trim($type))); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        // Don't save the form  if a term can not be found or it matches more than one cvterm 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if (!isset($term->cvterm_id)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          form_set_error( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            "instance][settings][relationship_types",  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            t("The term '@type' can not be found or matches more than one term.", array('@type' => $type)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          ); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      $term = tripal_get_cvterm(array('name' => trim($type))); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      // Don't save the form  if a term can not be found or it matches more than one cvterm 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    // Make sure child relationship types are using a valid cvterm 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    if (isset($settings['child_relationship_types'])) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      $supertype = $settings['child_relationship_types']; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      $term = tripal_get_cvterm(array('name' => trim($supertype))); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       if (!isset($term->cvterm_id)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         form_set_error( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-          "instance][settings][relationship_types",  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-          t("The term '@type' can not be found or matches more than one term.", array('@type' => $type)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        ); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            "instance][settings][child_relationship_types", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            t("The term '@type' can not be found or matches more than one term.", array('@type' => $supertype)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            ); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   } 
			 |