|
@@ -200,9 +200,12 @@ function chado_add_node_form_dbxrefs(&$form, &$form_state, $details) {
|
|
|
else {
|
|
|
$existing_dbxrefs = chado_query(
|
|
|
"SELECT
|
|
|
- db.name as db_name, db.db_id as db_id,
|
|
|
- dbxref.dbxref_id, dbxref.accession as accession,
|
|
|
- dbxref.description as description, dbxref.version
|
|
|
+ db.name as db_name,
|
|
|
+ db.db_id as db_id,
|
|
|
+ dbxref.dbxref_id,
|
|
|
+ dbxref.accession as accession,
|
|
|
+ dbxref.description as description,
|
|
|
+ dbxref.version
|
|
|
FROM {dbxref} dbxref
|
|
|
LEFT JOIN {db} db ON db.db_id = dbxref.db_id
|
|
|
LEFT JOIN {".$details['linking_table']."} linking_table ON linking_table.dbxref_id = dbxref.dbxref_id
|
|
@@ -218,7 +221,7 @@ function chado_add_node_form_dbxrefs(&$form, &$form_state, $details) {
|
|
|
* '[db_id]-[version]' => array(
|
|
|
* 'db_id' => [the db.db_id value]
|
|
|
* 'db_name' => [the db.name value]
|
|
|
- * 'dbxref_id' => [the dbxref.dbxref_id value, or NULL if it doesn't yet exists],
|
|
|
+ * 'dbxref_id' => [the dbxref.dbxref_id value, or temporary value if it doesn't yet exists],
|
|
|
* 'version' => [the dbxref.version value],
|
|
|
* 'accession' => [the dbxref.accession value],
|
|
|
* ),
|
|
@@ -246,59 +249,53 @@ function chado_add_node_form_dbxrefs(&$form, &$form_state, $details) {
|
|
|
|
|
|
if (array_key_exists($dbxref->db_id, $db_options)) {
|
|
|
|
|
|
- /* Since the dbxref version is part of the unique constraint, when it is
|
|
|
- * empty we need to use something in the key to indicate this case. Otherwise,
|
|
|
- * you wouldn't be able to select those elements from the array
|
|
|
- * (ie: $form['addtl_dbxrefs']['dbxref_table'][9999][''] doesn't work as
|
|
|
- * expected whereas $form['addtl_dbxrefs']['dbxref_table'][9999][NONE]
|
|
|
- * is much better)
|
|
|
- */
|
|
|
- $version = (!empty($dbxref->version)) ? $dbxref->version : 'NONE';
|
|
|
+ $form['addtl_dbxrefs']['dbxref_table'][$dbxref->db_id]['#type'] = 'markup';
|
|
|
+ $form['addtl_dbxrefs']['dbxref_table'][$dbxref->db_id]['#value'] = '';
|
|
|
|
|
|
- $form['addtl_dbxrefs']['dbxref_table'][$dbxref->db_id] = array(
|
|
|
+ $form['addtl_dbxrefs']['dbxref_table'][$dbxref->db_id][$dbxref->dbxref_id] = array(
|
|
|
'#type' => 'markup',
|
|
|
'#value' => ''
|
|
|
);
|
|
|
|
|
|
- $form['addtl_dbxrefs']['dbxref_table'][$dbxref->db_id][$version] = array(
|
|
|
- '#type' => 'markup',
|
|
|
- '#value' => ''
|
|
|
- );
|
|
|
-
|
|
|
- $form['addtl_dbxrefs']['dbxref_table'][$dbxref->db_id][$version]['db_id'] = array(
|
|
|
+ $form['addtl_dbxrefs']['dbxref_table'][$dbxref->db_id][$dbxref->dbxref_id]['db_id'] = array(
|
|
|
'#type' => 'hidden',
|
|
|
'#value' => $dbxref->db_id
|
|
|
);
|
|
|
|
|
|
- $form['addtl_dbxrefs']['dbxref_table'][$dbxref->db_id][$version]['accession'] = array(
|
|
|
+ $form['addtl_dbxrefs']['dbxref_table'][$dbxref->db_id][$dbxref->dbxref_id]['accession'] = array(
|
|
|
'#type' => 'hidden',
|
|
|
'#value' => $dbxref->accession
|
|
|
);
|
|
|
|
|
|
- $form['addtl_dbxrefs']['dbxref_table'][$dbxref->db_id][$version]['dbxref_id'] = array(
|
|
|
+ $form['addtl_dbxrefs']['dbxref_table'][$dbxref->db_id][$dbxref->dbxref_id]['version'] = array(
|
|
|
+ '#type' => 'hidden',
|
|
|
+ '#value' => $dbxref->version,
|
|
|
+ );
|
|
|
+
|
|
|
+ $form['addtl_dbxrefs']['dbxref_table'][$dbxref->db_id][$dbxref->dbxref_id]['dbxref_id'] = array(
|
|
|
'#type' => 'hidden',
|
|
|
'#value' => $dbxref->dbxref_id
|
|
|
);
|
|
|
|
|
|
- $form['addtl_dbxrefs']['dbxref_table'][$dbxref->db_id][$version]['db'] = array(
|
|
|
+ $form['addtl_dbxrefs']['dbxref_table'][$dbxref->db_id][$dbxref->dbxref_id]['db'] = array(
|
|
|
'#type' => 'markup',
|
|
|
'#markup' => $dbxref->db_name
|
|
|
);
|
|
|
|
|
|
- $form['addtl_dbxrefs']['dbxref_table'][$dbxref->db_id][$version]['dbxref_version'] = array(
|
|
|
+ $form['addtl_dbxrefs']['dbxref_table'][$dbxref->db_id][$dbxref->dbxref_id]['dbxref_version'] = array(
|
|
|
'#type' => 'markup',
|
|
|
'#markup' => $dbxref->version,
|
|
|
);
|
|
|
|
|
|
- $form['addtl_dbxrefs']['dbxref_table'][$dbxref->db_id][$version]['dbxref_accession'] = array(
|
|
|
+ $form['addtl_dbxrefs']['dbxref_table'][$dbxref->db_id][$dbxref->dbxref_id]['dbxref_accession'] = array(
|
|
|
'#type' => 'markup',
|
|
|
'#markup' => $dbxref->accession
|
|
|
);
|
|
|
// remove button
|
|
|
- $form['addtl_dbxrefs']['dbxref_table'][$dbxref->db_id][$version]['dbxref_action'] = array(
|
|
|
+ $form['addtl_dbxrefs']['dbxref_table'][$dbxref->db_id][$dbxref->dbxref_id]['dbxref_action'] = array(
|
|
|
'#type' => 'submit',
|
|
|
'#value' => t('Remove'),
|
|
|
- '#name' => "dbxrefs_remove-".$dbxref->db_id.'-'.$version,
|
|
|
+ '#name' => "dbxrefs_remove-".$dbxref->db_id.'-'.$dbxref->dbxref_id,
|
|
|
'#ajax' => array(
|
|
|
'callback' => "chado_add_node_form_subtable_ajax_update",
|
|
|
'wrapper' => 'tripal-generic-edit-addtl_dbxrefs-table',
|
|
@@ -313,7 +310,7 @@ function chado_add_node_form_dbxrefs(&$form, &$form_state, $details) {
|
|
|
// from the chado_additional_dbxrefs array. In order to keep validate errors
|
|
|
// from the node form validate and Drupal required errors for non-dbxref fields
|
|
|
// preventing the user from removing dbxrefs we set the #limit_validation_errors below
|
|
|
- '#validate' => array('chado_add_node_form_subtables_add_button_validate'),
|
|
|
+ '#validate' => array('chado_add_node_form_subtables_remove_button_validate'),
|
|
|
'#submit' => array('chado_add_node_form_subtables_remove_button_submit'),
|
|
|
// Limit the validation of the form upon clicking this button to the dbxref_table tree
|
|
|
// No other fields will be validated (ie: no fields from the main form or any other api
|
|
@@ -404,6 +401,7 @@ function chado_add_node_form_dbxrefs_add_button_validate($form, &$form_state) {
|
|
|
if (empty($form_state['values']['dbxref_table']['new']['dbxref_accession'])) {
|
|
|
form_set_error('dbxref_table][new][dbxref_accession','You must enter the accession before attempting to add a new database reference.');
|
|
|
}
|
|
|
+
|
|
|
}
|
|
|
|
|
|
/**
|
|
@@ -426,12 +424,11 @@ function chado_add_node_form_dbxrefs_add_button_submit($form, &$form_state) {
|
|
|
$dbxref = array(
|
|
|
'db_id' => $form_state['values']['dbxref_table']['new']['db'],
|
|
|
'db_name' => $form_state['values']['dbxref_table']['new']['db_name'],
|
|
|
- 'dbxref_id' => NULL,
|
|
|
+ 'dbxref_id' => 'TEMP' . uniqid(),
|
|
|
'version' => $form_state['values']['dbxref_table']['new']['dbxref_version'],
|
|
|
'accession' => $form_state['values']['dbxref_table']['new']['dbxref_accession'],
|
|
|
);
|
|
|
- $version = (!empty($dbxref['version'])) ? $dbxref['version'] : 'NONE';
|
|
|
- $key = $dbxref['db_id'] . '-' . $version;
|
|
|
+ $key = $dbxref['db_id'] . '-' . $dbxref['dbxref_id'];
|
|
|
$form_state['chado_additional_dbxrefs'][$key] = (object) $dbxref;
|
|
|
|
|
|
|
|
@@ -484,7 +481,7 @@ function chado_add_node_form_dbxrefs_remove_button_submit(&$form, &$form_state)
|
|
|
* '[db_id]-[version]' => array(
|
|
|
* 'db_id' => [the db.db_id value]
|
|
|
* 'db_name' => [the db.name value]
|
|
|
- * 'dbxref_id' => [the dbxref.dbxref_id value, or NULL if it doesn't yet exists],
|
|
|
+ * 'dbxref_id' => [the dbxref.dbxref_id value, or temporary value if it doesn't yet exists],
|
|
|
* 'version' => [the dbxref.version value],
|
|
|
* 'accession' => [the dbxref.accession value],
|
|
|
* ),
|
|
@@ -507,8 +504,7 @@ function chado_add_node_form_dbxrefs_create_dbxref_formstate_array($form, &$form
|
|
|
'version' => $element['dbxref_version']['#markup'],
|
|
|
'accession' => $element['dbxref_accession']['#markup'],
|
|
|
);
|
|
|
- $version = (!empty($dbxref['version'])) ? $dbxref['version'] : 'NONE';
|
|
|
- $key = $dbxref['db_id'] . '-' . $version;
|
|
|
+ $key = $dbxref['db_id'] . '-' . $dbxref['dbxref_id'];
|
|
|
$form_state['chado_additional_dbxrefs'][$key] = (object) $dbxref;
|
|
|
}
|
|
|
}
|
|
@@ -583,8 +579,8 @@ function chado_retrieve_node_form_dbxrefs($node) {
|
|
|
if (isset($node->dbxref_table)) {
|
|
|
foreach ($node->dbxref_table as $db_id => $elements) {
|
|
|
if ($db_id != 'new') {
|
|
|
- foreach ($elements as $version => $dbxref) {
|
|
|
- $dbxref_id = (!empty($dbxref['dbxref_id'])) ? $dbxref['dbxref_id'] : 'NONE';
|
|
|
+ foreach ($elements as $dbxref_id => $dbxref) {
|
|
|
+ $version = (!empty($dbxref['version'])) ? $dbxref['version'] : 'NONE';
|
|
|
$dbxrefs[$db_id][$version][$dbxref_id] = $dbxref['accession'];
|
|
|
}
|
|
|
}
|
|
@@ -631,7 +627,7 @@ function chado_update_node_form_dbxrefs($node, $details, $retrieved_dbxrefs = FA
|
|
|
foreach ($versions as $version => $elements) {
|
|
|
foreach ($elements as $dbxref_id => $accession) {
|
|
|
// If there is no dbxref then we have to create that first
|
|
|
- if ($dbxref_id == 'NONE') {
|
|
|
+ if (preg_match('/^TEMP/',$dbxref_id)) {
|
|
|
$version = ($version == 'NONE') ? '' : $version;
|
|
|
$success = tripal_insert_dbxref(array(
|
|
|
'db_id' => $db_id,
|