Kaynağa Gözat

Chado Node API: Bug Fixes 1) Subject & Object were reversed in display; 2) use a unique id instead of rank to ensure all relationships are displayed (rank doesn't work b/c Fred is_paternal_parent_of Max and Max is_paternal_parent_of Lui might have the same rank)

Lacey Sanderson 11 yıl önce
ebeveyn
işleme
346189b453

+ 19 - 10
tripal_core/api/tripal_core.chado_nodes.relationships.api.inc

@@ -183,9 +183,10 @@ function chado_add_node_form_relationships(&$form, &$form_state, $details) {
       tripal_set_message($message, TRIPAL_WARNING);
       tripal_report_error('tcprops_form', TRIPAL_ERROR, "Please provide either a
         'cv_name' or 'cv_id' as an option for adding relationship to the form", array());
+
+      return;
     }
 
-    return;
   }
 
   $form_state['rebuild'] = TRUE;
@@ -278,14 +279,18 @@ function chado_add_node_form_relationships(&$form, &$form_state, $details) {
   $form['relationships'] = array(
     '#type' => 'fieldset',
     '#title' => t($details['fieldset_title']),
-    '#description' => t('You may add relationships between this %nodetype and other
+    '#prefix' => "<div id='relationships-fieldset'>",
+    '#suffix' => '</div>',
+    '#weight'      => 10
+  );
+
+  $form['relationships']['descrip'] = array(
+    '#type' => 'item',
+    '#markup' => t('You may add relationships between this %nodetype and other
       %nodetype_plural by entering the details below.  You may add
       as many relationships as desired by clicking the add button on the right.  To
       remove a relationship, click the remove button. ' . $details['additional_instructions'],
       array('%nodetype' => $details['nodetype'], '%nodetype_plural' => $details['nodetype_plural'])),
-    '#prefix' => "<div id='relationships-fieldset'>",
-    '#suffix' => '</div>',
-    '#weight'      => 10
   );
 
   $form['relationships']['admin_message'] = array(
@@ -381,7 +386,11 @@ function chado_add_node_form_relationships(&$form, &$form_state, $details) {
   foreach ($existing_rels as $relationship) {
     if (array_key_exists($relationship->type_id, $type_options)) {
 
-      $rank = (isset($relationship->rank)) ? $relationship->rank : 0;
+      // We're using a unique id as a rank placeholder to ensure all relationships are shown
+      // We can't use the actual rank b/c there can be two relationships with the same type
+      // and rank as long as the subject_id and object_id are switched. For example, you can
+      // have Fred is_paternal_parent_of Max and Max is_paternal_parent_of Lui (both rank=0)
+      $rank = uniqid();
 
       $form['relationships']['relationship_table'][$relationship->type_id]['#type'] = 'markup';
       $form['relationships']['relationship_table'][$relationship->type_id]['#type'] = '';
@@ -649,7 +658,7 @@ function chado_add_node_form_relationships_add_button_submit(&$form, &$form_stat
       'object_name' => $form_state['values']['relationship_table']['new']['object_name'],
       'subject_id' => $form_state['node']->{$details['base_table']}->{$details['base_foreign_key']},
       'subject_name' => $name,
-      'rank' => '0',
+      'rank' => uniqid(),
     );
     // we don't want the new element to pick up the values from the previous element so wipe them out
     unset($form_state['input']['relationship_table']['new']['object_id']);
@@ -663,7 +672,7 @@ function chado_add_node_form_relationships_add_button_submit(&$form, &$form_stat
       'object_name' => $name,
       'subject_id' => $form_state['values']['relationship_table']['new']['subject_id'],
       'subject_name' => $form_state['values']['relationship_table']['new']['subject_name'],
-      'rank' => '0',
+      'rank' => uniqid(),
     );
     // we don't want the new element to pick up the values from the previous element so wipe them out
     unset($form_state['input']['relationship_table']['new']['subject_id']);
@@ -779,9 +788,9 @@ function theme_chado_add_node_form_relationships_table($variables) {
   $details = unserialize($element['details']['#value']);
 
   $header = array(
-    'object_name' => t('Object ' . $details['base_name_field']),
-    'type_name' => t('Type'),
     'subject_name' => t('Subject ' . $details['base_name_field']),
+    'type_name' => t('Type'),
+    'object_name' => t('Object ' . $details['base_name_field']),
     'rel_action' => t('Action')
   );