pub; $pub_id = $pub->pub_id; $d_title = $form_state['values']['pubtitle'] ? $form_state['values']['pubtitle'] : $pub->title; $d_uniquename = $form_state['values']['uniquename'] ? $form_state['values']['uniquename'] : $pub->uniquename; $d_type_id = $form_state['values']['type_id'] ? $form_state['values']['type_id'] : $pub->type_id->cvterm_id; $d_volume = $form_state['values']['volume'] ? $form_state['values']['volume'] : $pub->volume; $d_volumetitle = $form_state['values']['volumetitle'] ? $form_state['values']['volumetitle'] : $pub->volumetitle; $d_series_name = $form_state['values']['series_name'] ? $form_state['values']['series_name'] : $pub->series_name; $d_issue = $form_state['values']['issue'] ? $form_state['values']['issue'] : $pub->issue; $d_pyear = $form_state['values']['pyear'] ? $form_state['values']['pyear'] : $pub->pyear; $d_pages = $form_state['values']['pages'] ? $form_state['values']['pages'] : $pub->pages; $d_miniref = $form_state['values']['miniref'] ? $form_state['values']['miniref'] : $pub->miniref; $d_publisher = $form_state['values']['publisher'] ? $form_state['values']['publisher'] : $pub->publisher; $d_pubplace = $form_state['values']['pubplace'] ? $form_state['values']['pubplace'] : $pub->pubplace; $d_is_obsolete = $form_state['values']['is_obsolete'] ? $form_state['values']['is_obsolete'] : $pub->is_obsolete; // if the obsolete value is set by the database then it is in the form of // 't' or 'f', we need to convert to 1 or 0 $d_is_obsolete = $d_is_obsolete == 't' ? 1 : $d_is_obsolete; $d_is_obsolete = $d_is_obsolete == 'f' ? 0 : $d_is_obsolete; // on AHAH callbacks we want to keep a list of all the properties that have been removed // we'll store this info in a hidden field and retrieve it here $d_removed = $form_state['values']['removed']; // get the number of new fields that have been aded via AHAH callbacks $num_new = $form_state['values']['num_new'] ? $form_state['values']['num_new'] : 0; // initialze default properties array. This is where we store the property defaults $d_properties = array(); // get the list of publication types. In the Tripal publication // ontologies these are all grouped under the term 'Publication Type' // we want the default to be 'Journal Article' $sql = " SELECT CVTS.cvterm_id, CVTS.name FROM {cvtermpath} CVTP INNER JOIN {cvterm} CVTS ON CVTP.subject_id = CVTS.cvterm_id INNER JOIN {cvterm} CVTO ON CVTP.object_id = CVTO.cvterm_id INNER JOIN {cv} ON CVTO.cv_id = CV.cv_id WHERE CV.name = 'tripal_pub' and CVTO.name = 'Publication Type' and NOT CVTS.is_obsolete = 1 ORDER BY CVTS.name ASC "; $results = chado_query($sql); $pub_types = array(); while ($pub_type = db_fetch_object($results)) { $pub_types[$pub_type->cvterm_id] = $pub_type->name; // if we don't have a default type then set the default to be 'Journal Article' if (strcmp($pub_type->name,"Journal Article") == 0 and !$d_type_id) { $d_type_id = $pub_type->cvterm_id; } } // get publication properties list $properties_select = array(); $properties_select[] = 'Select a Property'; $properties_list = array(); $sql = " SELECT DISTINCT CVTS.cvterm_id, CVTS.name, CVTS.definition FROM {cvtermpath} CVTP INNER JOIN {cvterm} CVTS ON CVTP.subject_id = CVTS.cvterm_id INNER JOIN {cvterm} CVTO ON CVTP.object_id = CVTO.cvterm_id INNER JOIN {cv} ON CVTO.cv_id = CV.cv_id WHERE CV.name = 'tripal_pub' and (CVTO.name = 'Publication Details' or CVTS.name = 'Publication Type') and NOT CVTS.is_obsolete = 1 ORDER BY CVTS.name ASC "; $prop_types = chado_query($sql); while ($prop = db_fetch_object($prop_types)) { // the 'Citation' term is special because it serves // both as a property and as the uniquename for the publiation table if ($prop->name != "Citation") { $properties_select[$prop->cvterm_id] = $prop->name; } $properties_list[$prop->cvterm_id] = $prop; } $form['pub_id'] = array( '#type' => 'hidden', '#value' => $pub_id, ); // a drupal title can only be 255 characters, but the Chado title can be much longer. // we use the publication title as the drupal title, but we'll need to truncate it. $form['title'] = array( '#type' => 'hidden', '#value' => substr($d_title, 0, 255), ); $form['pubtitle'] = array( '#type' => 'textarea', '#title' => t('Publication Title'), '#default_value' => $d_title, '#required' => TRUE, ); $form['type_id'] = array( '#type' => 'select', '#title' => t('Publication Type'), '#options' => $pub_types, '#required' => TRUE, '#default_value' => $d_type_id, ); $form['pyear'] = array( '#type' => 'textfield', '#title' => t('Publication Year'), '#default_value' => $d_pyear, '#required' => TRUE, '#size' => 5, ); $form['uniquename'] = array( '#type' => 'textarea', '#title' => t('Citation'), '#default_value' => $d_uniquename, '#description' => t('All publications must have a unique citation. Please enter the full citation for this publication. For PubMed style citations list the last name of the author followed by initials. Each author should be separated by a comma. Next comes the title, followed by the series title (e.g. journal name), publication date (4 digit year, 3 character Month, day), volume, issue and page numbers. You may also use HTML to provide a link in the citation. Below is an example:
Medeiros PM, Ladio AH, Santos AM, Albuquerque UP. Does the selection of medicinal plants by Brazilian local populations 
        suffer taxonomic influence? J Ethnopharmacol. 2013 Apr 19; 146(3):842-52.
'), '#required' => TRUE, ); // add in the properties that are actually stored in the pub table fields. $num_properties = chado_pub_node_form_add_pub_table_props($form, $form_state, $properties_list, $d_properties, $d_removed, $d_volume, $d_volumetitle, $d_issue, $d_pages, $d_series_name); // add in the properties from the pubprop table $num_properties += chado_pub_node_form_add_pubprop_table_props($form, $form_state, $pub_id, $d_properties, $d_removed); // add in any new properties that have been added by the user through an AHAH callback $num_new = chado_pub_node_form_add_new_props($form, $form_state, $d_properties, $d_removed); // add an empty row of field to allow for addition of a new property chado_pub_node_form_add_new_empty_props($form, $properties_select); $form['removed'] = array( '#type' => 'hidden', '#value' => $d_removed, ); $form['num_new'] = array( '#type' => 'hidden', '#value' => $num_new, ); $form['num_properties'] = array( '#type' => 'hidden', '#value' => $num_properties, ); $form['is_obsolete'] = array( '#type' => 'checkbox', '#title' => t('Is Obsolete? (Check for Yes)'), '#required' => TRUE, '#default_value' => $d_is_obsolete, ); return $form; } /* * */ function chado_pub_validate($node, &$form) { // get the submitted values $title = trim($node->pubtitle); $uniquename = trim($node->uniquename); $type_id = trim($node->type_id); $volume = trim($node->volume); $volumetitle = trim($node->volumetitle); $series_name = trim($node->series_name); $issue = trim($node->issue); $pyear = trim($node->pyear); $pages = trim($node->pages); $miniref = trim($node->miniref); $publisher = trim($node->publisher); $pubplace = trim($node->pubplace); $is_obsolete = $node->is_obsolete; $pub_id = $node->pub_id; $num_properties = $node->num_properties; $num_new = $node->num_new; // if this is a delete then don't validate if($node->op == 'Delete') { return; } // make sure the year is four digits if(!preg_match('/^\d{4}$/', $pyear)){ form_set_error('pyear', t('The publication year should be a 4 digit year.')); return; } // get the type of publication $values = array('cvterm_id' => $type_id); $options = array('statement_name' => 'sel_pub_ty'); $cvterm = tripal_core_chado_select('cvterm', array('name'), $values, $options); if (count($cvterm) == 0) { $message = t('Invalid publication type.'); form_set_error('type_id', $message); return; } // get the media name looking at the properties foreach ($node as $element => $value) { // if this is an existing property (either previously in the database or // added via AHAH/AJAX callback) if (preg_match('/^prop_value-(\d+)-(\d+)$/', $element, $matches)) { $prop_type_id = $matches[1]; $prop_type = tripal_cv_get_cvterm_by_id($prop_type_id); if($prop_type->name == 'Conference Name' or $prop_type->name == 'Journal Name') { $series_name = $value; } if($prop_type->name == 'Citation') { $uniquename = $value; } } // if this is a new property (added by this submit of the form) elseif ($element = 'new_id') { $prop_type = tripal_cv_get_cvterm_by_id($value); if($prop_type->name == 'Conference Name' or $prop_type->name == 'Journal Name') { $series_name = $node->new_value; } if($prop_type->name == 'Citation') { $uniquename = $value; } } } $skip_duplicate_check = 0; // if this publication is a Patent then skip the validation below. Patents can have the title // name and year but be different if (strcmp($cvterm[0]->name,'Patent') == 0) { $skip_duplicate_check = 1; } // on an update ($pub_id is set), check to see if there have been changes to fields that // are used to check for duplicates. If not, then no need to check for duplicates if ($pub_id) { // first get the original title, type and year before it was changed $values = array('pub_id' => $pub_id); $columns = array('title', 'pyear', 'type_id', 'series_name'); $options = array('statement_name' => 'sel_pub_id'); $pub = tripal_core_chado_select('pub', $columns, $values, $options); // if the title, type, year or series_name have changed then check the pub // to see if it is a duplicate of another if((strcmp(strtolower($pub[0]->title), strtolower($title)) == 0) and (strcmp(strtolower($pub[0]->series_name), strtolower($series_name)) == 0) and ($pub[0]->type_id == $type_id) and ($pub[0]->year == $pyear)) { $skip_duplicate_check = 1; } } // check to see if a duplicate publication already exists if (!$skip_duplicate_check) { // make sure the publication is unique using the prefereed import duplication check $import_dups_check = variable_get('tripal_pub_import_duplicate_check', 'title_year_media'); switch ($import_dups_check) { case 'title_year': $results = tripal_pub_get_pubs_by_title_type_pyear_series($title, NULL, $pyear, NULL); // make sure we don't capture our pub_id in the list (remove it) foreach ($results as $index => $found_pub_id) { if($found_pub_id == $pub_id){ unset($results[$index]); } } if (count($results) > 0) { $message = t('A publication with this title and publication year, already exists.'); form_set_error('pyear', $message); } break; case 'title_year_type': $results = tripal_pub_get_pubs_by_title_type_pyear_series($title, $cvterm[0]->name, $pyear, NULL); // make sure we don't capture our pub_id in the list (remove it) foreach ($results as $index => $found_pub_id) { if($found_pub_id == $pub_id){ unset($results[$index]); } } if (count($results) > 0) { $message = t('A publication with this title, type and publication year, already exists.'); form_set_error('pyear', $message); } break; case 'title_year_media': $results = tripal_pub_get_pubs_by_title_type_pyear_series($title, NULL, $pyear, $series_name); // make sure we don't capture our pub_id in the list (remove it) foreach ($results as $index => $found_pub_id) { if($found_pub_id == $pub_id){ unset($results[$index]); } } if (count($results) > 0) { $message = t('A publication with this title, media name (e.g. Journal Name) and publication year, already exists.'); form_set_error('pyear', $message); } break; } } // even though we are skipping the duplication checks above we must make sure the uniquename is unique // as that is the offical table constraint else { $results = tripal_pub_get_pub_by_uniquename($uniquename); // make sure we don't capture our pub_id in the list (remove it) foreach ($results as $index => $found_pub_id) { if($found_pub_id == $pub_id){ unset($results[$index]); } } if (count($results) > 0) { $message = t('A publication with this unique citation already exists.'); form_set_error('uniquename', $message); } } } /* * */ function chado_pub_node_form_add_new_empty_props(&$form, $properties_select) { // add one more blank set of property fields $form['properties']['new']["new_id"] = array( '#type' => 'select', '#options' => $properties_select, '#ahah' => array( 'path' => "tripal_pub/properties/description", 'wrapper' => 'tripal-pub-new_value-desc', 'event' => 'change', 'method' => 'replace', ), ); $form['properties']['new']["new_value"] = array( '#type' => 'textarea', '#default_value' => '', '#cols' => 5, '#rows' => $rows, '#description' => '
' ); $form['properties']['new']["add"] = array( '#type' => 'image_button', '#value' => t('Add'), '#src' => drupal_get_path('theme', 'tripal') . '/images/add.png', '#ahah' => array( 'path' => "tripal_pub/properties/add", 'wrapper' => 'tripal-pub-edit-properties-table', 'event' => 'click', 'method' => 'replace', ), '#attributes' => array('onClick' => 'return false;'), ); } /* * */ function chado_pub_node_form_add_new_props(&$form, $form_state, &$d_properties, &$d_removed) { // first, add in all of the new properties that were added through a previous AHAH callback $j = 0; $num_properties++; // we need to find the if ($form_state['values']) { foreach ($form_state['values'] as $element_name => $value) { if (preg_match('/new_value-(\d+)-(\d+)/', $element_name, $matches)) { $new_id = $matches[1]; $rank = $matches[2]; // skip any properties that the user requested to delete through a previous // AHAH callback or through the current AHAH callback if($d_removed["$new_id-$rank"]) { continue; } if($form_state['post']['remove-' . $new_id . '-' . $rank]) { $d_removed["$new_id-$rank"] = 1; continue; } // get this new_id information $cvterm = tripal_core_chado_select('cvterm', array('name', 'definition'), array('cvterm_id' => $new_id)); // add it to the $d_properties array $d_properties[$new_id][$rank]['name'] = $cvterm->name; $d_properties[$new_id][$rank]['id'] = $new_id; $d_properties[$new_id][$rank]['value'] = $value; $d_properties[$new_id][$rank]['definition'] = $cvterm->definition; $num_properties++; // determine how many rows we need in the textarea $rows = 1; if (preg_match('/Abstract/', $cvterm[0]->name)) { $rows = 10; } if ($cvterm[0]->name == 'Authors') { $rows = 2; } // add the new fields $form['properties']['new'][$new_id][$rank]["new_id-$new_id-$rank"] = array( '#type' => 'item', '#value' => $cvterm[0]->name ); $form['properties']['new'][$new_id][$rank]["new_value-$new_id-$rank"] = array( '#type' => 'textarea', '#default_value' => $value, '#cols' => 50, '#rows' => $rows, '#description' => $cvterm->definition, ); $form['properties']['new'][$new_id][$rank]["remove-$new_id-$rank"] = array( '#type' => 'image_button', '#value' => t('Remove'), '#src' => drupal_get_path('theme', 'tripal') . '/images/minus.png', '#ahah' => array( 'path' => "tripal_pub/properties/minus/$new_id/$rank", 'wrapper' => 'tripal-pub-edit-properties-table', 'event' => 'click', 'method' => 'replace', ), '#attributes' => array('onClick' => 'return false;'), ); } } } // second add in any new properties added during this callback if($form_state['post']['add']) { $new_id = $form_state['values']['new_id']; $new_value = $form_state['values']['new_value']; // get the rank by counting the number of entries $rank = count($d_properties[$new_id]); // get this new_id information $cvterm = tripal_core_chado_select('cvterm', array('name', 'definition'), array('cvterm_id' => $new_id)); // add it to the $d_properties array $d_properties[$new_id][$rank]['name'] = $cvterm->name; $d_properties[$new_id][$rank]['id'] = $new_id; $d_properties[$new_id][$rank]['value'] = $value; $d_properties[$new_id][$rank]['definition'] = $cvterm->definition; $num_properties++; // determine how many rows we need in the textarea $rows = 1; if (preg_match('/Abstract/', $cvterm[0]->name)) { $rows = 10; } if ($cvterm[0]->name == 'Authors') { $rows = 2; } // add the new fields $form['properties']['new'][$new_id][$rank]["new_id-$new_id-$rank"] = array( '#type' => 'item', '#value' => $cvterm[0]->name ); $form['properties']['new'][$new_id][$rank]["new_value-$new_id-$rank"] = array( '#type' => 'textarea', '#default_value' => $new_value, '#cols' => 50, '#rows' => $rows, '#description' => $cvterm->definition, ); $form['properties']['new'][$new_id][$rank]["remove-$new_id-$rank"] = array( '#type' => 'image_button', '#value' => t('Remove'), '#src' => drupal_get_path('theme', 'tripal') . '/images/minus.png', '#ahah' => array( 'path' => "tripal_pub/properties/minus/$new_id/$rank", 'wrapper' => 'tripal-pub-edit-properties-table', 'event' => 'click', 'method' => 'replace', ), '#attributes' => array('onClick' => 'return false;'), ); } return $num_properties; } /* * */ function chado_pub_node_form_add_pubprop_table_props(&$form, $form_state, $pub_id, &$d_properties, &$d_removed) { // get the properties for this publication $num_properties = 0; if(!$pub_id) { return $num_properties; } $sql = " SELECT CVT.cvterm_id, CVT.name, CVT.definition, PP.value, PP.rank FROM {pubprop} PP INNER JOIN {cvterm} CVT on CVT.cvterm_id = PP.type_id WHERE PP.pub_id = %d ORDER BY CVT.name, PP.rank "; $pub_props = chado_query($sql, $pub_id); while ($prop = db_fetch_object($pub_props)) { $type_id = $prop->cvterm_id; $rank = count($d_properties[$type_id]); // skip properties that are found in the pub table if($prop->name == "Volume" or $prop->name == "Volume Title" or $prop->name == "Issue" or $prop->name == "Pages" or $prop->name == "Citation" or $prop->name == "Journal Name") { continue; } // skip any properties that the user requested to delete through a previous // AHAH callback or through the current AHAH callback if($d_removed["$type_id-$rank"]) { continue; } if($form_state['post']['remove-' . $type_id . '-' . $rank]) { $d_removed["$type_id-$rank"] = 1; continue; } $d_properties[$type_id][$rank]['name'] = $prop->name; $d_properties[$type_id][$rank]['id'] = $type_id; $d_properties[$type_id][$rank]['value'] = $prop->value; $d_properties[$type_id][$rank]['definition'] = $prop->definition; $num_properties++; // determine how many rows we need in the textarea $rows = 1; if (preg_match('/Abstract/', $prop->name)) { $rows = 10; } if ($prop->name == 'Authors') { $rows = 2; } $form['properties'][$type_id][$rank]["prop_id-$type_id-$rank"] = array( '#type' => 'item', '#value' => $prop->name, ); $form['properties'][$type_id][$rank]["prop_value-$type_id-$rank"] = array( '#type' => 'textarea', '#default_value' => $prop->value, '#cols' => 50, '#rows' => $rows, '#description' => $prop->definition, ); $form['properties'][$type_id][$rank]["remove-$type_id-$rank"] = array( '#type' => 'image_button', '#value' => t('Remove'), '#src' => drupal_get_path('theme', 'tripal') . '/images/minus.png', '#ahah' => array( 'path' => "tripal_pub/properties/minus/$type_id/$rank", 'wrapper' => 'tripal-pub-edit-properties-table', 'event' => 'click', 'method' => 'replace', ), '#attributes' => array('onClick' => 'return false;'), ); } return $num_properties; } /* * */ function chado_pub_node_form_add_pub_table_props(&$form, $form_state, $properties_list, &$d_properties, &$d_removed, $d_volume, $d_volumetitle, $d_issue, $d_pages, $d_series_name) { $num_properties = 0; $rank = 0; // add properties that are actually part of the pub table foreach($properties_list as $type_id => $prop) { // skip any properties that the user requested to delete through a previous // AHAH callback or through the current AHAH callback if($d_removed["$type_id-$rank"]) { continue; } if($form_state['post']["remove-$type_id-$rank"]) { $d_removed["$type_id-$rank"] = 1; continue; } // if any of the properties match the fields in the pub table then we // want to include those automatically if (($prop->name == 'Volume' and $d_volume) or ($prop->name == 'Issue' and $d_issue) or ($prop->name == 'Pages' and $d_pages) or ($prop->name == 'Volume Title' and $d_volumetitle) or ($prop->name == 'Journal Name' and $d_series_name)) { $d_properties[$type_id][$rank]['name'] = $prop->name; $d_properties[$type_id][$rank]['id'] = $type_id; $d_properties[$type_id][$rank]['definition'] = $prop->definition; $num_properties++; if ($prop->name == 'Volume') { $d_properties[$type_id][$rank]['value'] = $d_volume; } if ($prop->name == 'Issue') { $d_properties[$type_id][$rank]['value'] = $d_issue; } if ($prop->name == 'Pages') { $d_properties[$type_id][$rank]['value'] = $d_pages; } if ($prop->name == 'Volume Title') { $d_properties[$type_id][$rank]['value'] = $d_volumetitle; } if ($prop->name == 'Journal Name') { $d_properties[$type_id][$rank]['value'] = $d_series_name; } // determine how many rows we need in the textarea $rows = 1; if (preg_match('/Abstract/', $prop->name)) { $rows = 10; } if ($prop->name == 'Authors') { $rows = 2; } // add in the fields $form['properties'][$type_id][$rank]["prop_id-$type_id-$rank"] = array( '#type' => 'item', '#value' => $prop->name ); $form['properties'][$type_id][$rank]["prop_value-$type_id-$rank"] = array( '#type' => 'textarea', '#default_value' => $d_properties[$type_id][$rank]['value'], '#cols' => 50, '#rows' => $rows, '#description' => $description, ); $form['properties'][$type_id][$rank]["remove-$type_id-$rank"] = array( '#type' => 'image_button', '#value' => t('Remove'), '#src' => drupal_get_path('theme', 'tripal') . '/images/minus.png', '#ahah' => array( 'path' => "tripal_pub/properties/minus/$type_id/$rank", 'wrapper' => 'tripal-pub-edit-properties-table', 'event' => 'click', 'method' => 'replace', ), '#attributes' => array('onClick' => 'return false;'), ); } } return $num_properties; } /* * */ function theme_chado_pub_node_form($form) { $properties_table = tripal_pub_theme_node_form_properties($form); $markup = drupal_render($form['pub_id']); $markup .= drupal_render($form['pubtitle']); $markup .= drupal_render($form['type_id']); $markup .= drupal_render($form['series_name']); $markup .= drupal_render($form['pyear']); $markup .= drupal_render($form['uniquename']); $markup .= "Include Additional Details
You may add additional properties to this publication by scrolling to the bottom of this table, selecting a property type from the dropdown and adding text. You may add as many properties as desired by clicking the plus button on the right. To remove a property, click the minus button"; $markup .= $properties_table; $markup .= drupal_render($form['is_obsolete']); $form['properties'] = array( '#type' => 'markup', '#value' => $markup, ); return drupal_render($form); } /* * */ function tripal_pub_theme_node_form_properties($form) { $rows = array(); if ($form['properties']) { // first add in the properties derived from the pub and pubprop tables // the array tree for these properties looks like this: // $form['properties'][$type_id][$rank]["prop_id-$type_id-$rank"] foreach ($form['properties'] as $type_id => $elements) { // there are other fields in the properties array so we only // want the numeric ones those are our type_id if (is_numeric($type_id)) { foreach ($elements as $rank => $element) { if (is_numeric($rank)) { $rows[] = array( drupal_render($element["prop_id-$type_id-$rank"]), drupal_render($element["prop_value-$type_id-$rank"]), drupal_render($element["remove-$type_id-$rank"]), ); } } } } // second, add in any new properties added by the user through AHAH callbacks // the array tree for these properties looks like this: // $form['properties']['new'][$type_id][$rank]["new_id-$new_id-$rank"] foreach ($form['properties']['new'] as $type_id => $elements) { if (is_numeric($type_id)) { foreach ($elements as $rank => $element) { if (is_numeric($rank)) { $rows[] = array( drupal_render($element["new_id-$type_id-$rank"]), drupal_render($element["new_value-$type_id-$rank"]), drupal_render($element["remove-$type_id-$rank"]), ); } } } } // finally add in a set of blank field for adding a new property $rows[] = array( drupal_render($form['properties']['new']['new_id']), drupal_render($form['properties']['new']['new_value']), drupal_render($form['properties']['new']['add']), ); } $headers = array('Property Type','Value', ''); return theme('table', $headers, $rows, array('id'=> "tripal-pub-edit-properties-table")); } /* * */ function tripal_pub_property_add() { $status = TRUE; // prepare and render the form $form = tripal_core_ahah_prepare_form(); // we only want to return the properties as that's all we'll replace with this AHAh callback $data = tripal_pub_theme_node_form_properties($form); // bind javascript events to the new objects that will be returned // so that AHAH enabled elements will work. $settings = tripal_core_ahah_bind_events(); // return the updated JSON drupal_json( array( 'status' => $status, 'data' => $data, 'settings' => $settings, ) ); } /* * */ function tripal_pub_property_delete() { $status = TRUE; // prepare and render the form $form = tripal_core_ahah_prepare_form(); // we only want to return the properties as that's all we'll replace with this AHAh callback $data = tripal_pub_theme_node_form_properties($form); // bind javascript events to the new objects that will be returned // so that AHAH enabled elements will work. $settings = tripal_core_ahah_bind_events(); // return the updated JSON drupal_json( array( 'status' => $status, 'data' => $data, 'settings' => $settings, ) ); } /* * */ function tripal_pub_property_get_description() { $new_id = $_POST['new_id']; $values = array('cvterm_id' => $new_id); $cvterm = tripal_core_chado_select('cvterm', array('definition'), $values); $description = ' '; if ($cvterm[0]->definition) { $description = $cvterm[0]->definition; } drupal_json( array( 'status' => TRUE, 'data' => '
' . $description . '
', ) ); }