|
@@ -242,32 +242,44 @@ class chado_linker__relationship extends TripalField {
|
|
|
'#autocomplete_path' => "admin/tripal/storage/chado/auto_name/$base_table",
|
|
|
);
|
|
|
|
|
|
- // Option 3: Custom list of Relationship Types
|
|
|
+ // Getting default values
|
|
|
+ $default_voc = '';
|
|
|
+ if (isset($form_state['field'][$field_name]['und']['instance']['default_value'][0]['vocabulary'])) {
|
|
|
+ $default_voc = $form_state['field'][$field_name]['und']['instance']['default_value'][0]['vocabulary'];
|
|
|
+ }
|
|
|
$default_term = '';
|
|
|
+ if (isset($form_state['field'][$field_name]['und']['instance']['default_value'][0]['type_name'])) {
|
|
|
+ $default_term = $form_state['field'][$field_name]['und']['instance']['default_value'][0]['type_name'];
|
|
|
+ }
|
|
|
+ $default_type_id = '';
|
|
|
+ if (isset($form_state['field'][$field_name]['und']['instance']['default_value'][0]['type_id'])) {
|
|
|
+ $default_type_id = $form_state['field'][$field_name]['und']['instance']['default_value'][0]['type_id'];
|
|
|
+ }
|
|
|
+ // Option 3: Custom list of Relationship Types
|
|
|
$rtype_options = array();
|
|
|
$rtype_options[] = 'Select a Type';
|
|
|
if ($option3_rtypes) {
|
|
|
$rtypes = explode(PHP_EOL, $option3_rtypes);
|
|
|
- foreach($rtypes AS $type) {
|
|
|
+ foreach($rtypes AS $rtype) {
|
|
|
// Ignore empty lines
|
|
|
- if (trim($type) == '') {
|
|
|
+ if (trim($rtype) == '') {
|
|
|
continue;
|
|
|
}
|
|
|
- $term = tripal_get_cvterm(array('name' => trim($type)));
|
|
|
+ $term = tripal_get_cvterm(array('name' => trim($rtype)));
|
|
|
// Try to get term with vocabulary specified
|
|
|
if (!$term) {
|
|
|
- $tmp = explode('|', trim($type), 2);
|
|
|
+ $tmp = explode('|', trim($rtype), 2);
|
|
|
$cv = tripal_get_cv(array('name' => trim($tmp[0])));
|
|
|
- $type = trim($tmp[1]);
|
|
|
- $term = tripal_get_cvterm(array('name' => $type, 'cv_id' => $cv->cv_id));
|
|
|
+ $rtype = trim($tmp[1]);
|
|
|
+ $term = tripal_get_cvterm(array('name' => $rtype, 'cv_id' => $cv->cv_id));
|
|
|
}
|
|
|
$rtype_options[$term->cvterm_id] = $term->name;
|
|
|
}
|
|
|
- $widget['type_name'] = array(
|
|
|
+ $widget['type_id'] = array(
|
|
|
'#type' => 'select',
|
|
|
'#title' => t('Relationship Type'),
|
|
|
'#options' => $rtype_options,
|
|
|
- '#default_value' => $default_term,
|
|
|
+ '#default_value' => $default_type_id,
|
|
|
);
|
|
|
}
|
|
|
// Option 2: Child terms of a selected cvterm
|
|
@@ -310,11 +322,11 @@ class chado_linker__relationship extends TripalField {
|
|
|
while($child = $results->fetchObject()) {
|
|
|
$rtype_options[$child->subject_id] = $child->name;
|
|
|
}
|
|
|
- $widget['type_name'] = array(
|
|
|
+ $widget['type_id'] = array(
|
|
|
'#type' => 'select',
|
|
|
'#title' => t('Relationship Type'),
|
|
|
'#options' => $rtype_options,
|
|
|
- '#default_value' => $default_term,
|
|
|
+ '#default_value' => $default_type_id,
|
|
|
);
|
|
|
}
|
|
|
// Option 1: All terms of selected vocabularies
|
|
@@ -324,11 +336,11 @@ class chado_linker__relationship extends TripalField {
|
|
|
while ($obj = $results->fetchObject()) {
|
|
|
$rtype_options[$obj->cvterm_id] = $obj->name;
|
|
|
}
|
|
|
- $widget['type_name'] = array(
|
|
|
+ $widget['type_id'] = array(
|
|
|
'#type' => 'select',
|
|
|
'#title' => t('Relationship Type'),
|
|
|
'#options' => $rtype_options,
|
|
|
- '#default_value' => $default_term,
|
|
|
+ '#default_value' => $default_type_id,
|
|
|
);
|
|
|
}
|
|
|
// Default option:
|
|
@@ -345,6 +357,9 @@ class chado_linker__relationship extends TripalField {
|
|
|
$default_term = $cvterm->name;
|
|
|
}
|
|
|
}
|
|
|
+ if (!$cv_id) {
|
|
|
+ $cv_id = $default_voc;
|
|
|
+ }
|
|
|
$widget['vocabulary'] = array(
|
|
|
'#type' => 'select',
|
|
|
'#title' => t('Vocabulary'),
|
|
@@ -397,19 +412,20 @@ class chado_linker__relationship extends TripalField {
|
|
|
$subject_id = $item[$field_table . '__subject_id'];
|
|
|
$object_id = $item[ $field_table . '__object_id'];
|
|
|
$type_id = $item[$field_table . '__type_id'];
|
|
|
+ $type_id = $type_id ? $type_id : $item['type_id'];
|
|
|
$type_name = isset($item['type_name']) ? $item['type_name'] : '';
|
|
|
$subject_name = $item['subject_name'];
|
|
|
$object_name = $item['object_name'];
|
|
|
|
|
|
|
|
|
// If the row is empty then just continue, there's nothing to validate.
|
|
|
- if (!$type_name and !$subject_name and !$object_name) {
|
|
|
+ if (!$type_id and !$type_name and !$subject_name and !$object_name) {
|
|
|
continue;
|
|
|
}
|
|
|
|
|
|
// Make sure we have values for all of the fields.
|
|
|
$form_error = FALSE;
|
|
|
- if (!$type_name) {
|
|
|
+ if (!$type_name && !$type_id) {
|
|
|
$errors[$this->field['field_name']][$langcode][$delta][] = array(
|
|
|
'error' => 'chado_linker__relationship',
|
|
|
'message' => t("Please provide the type of relationship."),
|
|
@@ -542,12 +558,13 @@ class chado_linker__relationship extends TripalField {
|
|
|
$subject_id = $item[$field_table . '__subject_id'];
|
|
|
$object_id = $item[ $field_table . '__object_id'];
|
|
|
$type_id = $item[$field_table . '__type_id'];
|
|
|
+ $type_id = $type_id ? $type_id : $item['type_id'];
|
|
|
$type_name = $item['type_name'];
|
|
|
$subject_name = $item['subject_name'];
|
|
|
$object_name = $item['object_name'];
|
|
|
|
|
|
// If the row is empty then skip this one, there's nothing to validate.
|
|
|
- if (!$type_name and !$subject_name and !$object_name) {
|
|
|
+ if (!$type_id and !$type_name and !$subject_name and !$object_name) {
|
|
|
continue;
|
|
|
}
|
|
|
|
|
@@ -1096,6 +1113,9 @@ function theme_chado_linker__relationship_widget($variables) {
|
|
|
<div class=\"chado-linker--relationship-widget-item\">" .
|
|
|
drupal_render($element['type_name']) . "
|
|
|
</div>
|
|
|
+ <div class=\"chado-linker--relationship-widget-item\">" .
|
|
|
+ drupal_render($element['type_id']) . "
|
|
|
+ </div>
|
|
|
<div class=\"chado-linker--relationship-widget-item\">" .
|
|
|
drupal_render($element['object_name']) . "
|
|
|
</div>
|