|
@@ -21,6 +21,8 @@ class sbo__relationship_widget extends ChadoFieldWidget {
|
|
|
$field_column = $this->instance['settings']['chado_column'];
|
|
|
$base_table = $this->instance['settings']['base_table'];
|
|
|
|
|
|
+ // @debug dpm($this, 'this');
|
|
|
+
|
|
|
// Get the FK column that links to the base table.
|
|
|
$base_table = $this->instance['settings']['base_table'];
|
|
|
$schema = chado_get_schema($field_table);
|
|
@@ -79,23 +81,34 @@ class sbo__relationship_widget extends ChadoFieldWidget {
|
|
|
// If the field already has a value then it will come through the $items
|
|
|
// array. This happens when editing an existing record.
|
|
|
if (count($items) > 0 and array_key_exists($delta, $items)) {
|
|
|
- // Check for element values that correspond to fields in the Chado table.
|
|
|
- $record_id = tripal_get_field_item_keyval($items, $delta, 'chado-' . $field_table . '__' . $pkey, $record_id);
|
|
|
- $subject_id = tripal_get_field_item_keyval($items, $delta, 'chado-' . $field_table . '__' . $subject_id_key, $subject_id);
|
|
|
- $object_id = tripal_get_field_item_keyval($items, $delta, 'chado-' . $field_table . '__' . $object_id_key, $object_id);
|
|
|
+
|
|
|
+ // Sometimes empty/initialized items are getting through.
|
|
|
+ // To determine if it this one of them, the type_id must always be there.
|
|
|
$type_id = tripal_get_field_item_keyval($items, $delta, 'chado-' . $field_table . '__type_id', $type_id);
|
|
|
- // Not all Chado tables have a value and rank. So we'll only get
|
|
|
- // those if applicable.
|
|
|
- if (array_key_exists('value', $schema['fields'])) {
|
|
|
- $value = tripal_get_field_item_keyval($items, $delta, 'chado-' . $field_table . '__value', $value);
|
|
|
- }
|
|
|
- if (array_key_exists('rank', $schema['fields'])) {
|
|
|
- $rank = tripal_get_field_item_keyval($items, $delta, 'chado-' . $field_table . '__rank', $rank);
|
|
|
+ if (!empty($type_id)) {
|
|
|
+
|
|
|
+ // Check for element values that correspond to fields in the Chado table.
|
|
|
+ $record_id = tripal_get_field_item_keyval($items, $delta, 'chado-' . $field_table . '__' . $pkey, $record_id);
|
|
|
+ $subject_id = tripal_get_field_item_keyval($items, $delta, 'chado-' . $field_table . '__' . $subject_id_key, $subject_id);
|
|
|
+ $object_id = tripal_get_field_item_keyval($items, $delta, 'chado-' . $field_table . '__' . $object_id_key, $object_id);
|
|
|
+ $type_id = tripal_get_field_item_keyval($items, $delta, 'chado-' . $field_table . '__type_id', $type_id);
|
|
|
+
|
|
|
+ // Not all Chado tables have a value and rank. So we'll only get
|
|
|
+ // those if applicable.
|
|
|
+ if (array_key_exists('value', $schema['fields'])) {
|
|
|
+ $value = tripal_get_field_item_keyval($items, $delta, 'chado-' . $field_table . '__value', $value);
|
|
|
+ }
|
|
|
+ if (array_key_exists('rank', $schema['fields'])) {
|
|
|
+ $rank = tripal_get_field_item_keyval($items, $delta, 'chado-' . $field_table . '__rank', $rank);
|
|
|
+ }
|
|
|
+
|
|
|
+ // Get element values added to help support insert/updates.
|
|
|
+ $object_uniquename = tripal_get_field_item_keyval($items, $delta, 'object_name', $object_uniquename);
|
|
|
+ $subject_uniquename = tripal_get_field_item_keyval($items, $delta, 'subject_name', $subject_uniquename);
|
|
|
+ $type = tripal_get_field_item_keyval($items, $delta, 'type_name', $type);
|
|
|
+
|
|
|
+ //@debug dpm(array($subject_id, $type_id, $object_id), 'have an item!');
|
|
|
}
|
|
|
- // Get element values added to help support insert/updates.
|
|
|
- $object_uniquename = tripal_get_field_item_keyval($items, $delta, 'object_name', $object_uniquename);
|
|
|
- $subject_uniquename = tripal_get_field_item_keyval($items, $delta, 'subject_name', $subject_uniquename);
|
|
|
- $type = tripal_get_field_item_keyval($items, $delta, 'type_name', $type);
|
|
|
}
|
|
|
|
|
|
// Check $form_state['values'] to see if an AJAX call set the values.
|
|
@@ -114,6 +127,8 @@ class sbo__relationship_widget extends ChadoFieldWidget {
|
|
|
$object_uniquename = $form_state['values'][$field_name]['und'][$delta]['object_name'];
|
|
|
$subject_uniquename = $form_state['values'][$field_name]['und'][$delta]['subject_name'];
|
|
|
$type = $form_state['values'][$field_name]['und'][$delta]['type_name'];
|
|
|
+
|
|
|
+ //@debug dpm(array($subject_id, $type_id, $object_id), 'have an item (AJAX)!');
|
|
|
}
|
|
|
|
|
|
$widget['#table_name'] = $field_table;
|
|
@@ -306,15 +321,16 @@ class sbo__relationship_widget extends ChadoFieldWidget {
|
|
|
'method' => 'replace'
|
|
|
),
|
|
|
);
|
|
|
+ $widget['type_name'] = array(
|
|
|
+ '#type' => 'textfield',
|
|
|
+ '#title' => t('Relationship Type'),
|
|
|
+ '#size' => 15,
|
|
|
+ '#default_value' => $default_term,
|
|
|
+ '#disabled' => TRUE,
|
|
|
+ '#autocomplete_path' => "admin/tripal/storage/chado/auto_name/cvterm/$cv_id"
|
|
|
+ );
|
|
|
if ($cv_id) {
|
|
|
- $options = array();
|
|
|
- $widget['type_name'] = array(
|
|
|
- '#type' => 'textfield',
|
|
|
- '#title' => t('Relationship Type'),
|
|
|
- '#size' => 15,
|
|
|
- '#default_value' => $default_term,
|
|
|
- '#autocomplete_path' => "admin/tripal/storage/chado/auto_name/cvterm/$cv_id"
|
|
|
- );
|
|
|
+ $widget['type_name']['#disabled'] = FALSE;
|
|
|
}
|
|
|
}
|
|
|
|