|
@@ -1,17 +1,17 @@
|
|
|
-<?php
|
|
|
+<?php
|
|
|
|
|
|
/**
|
|
|
* This is the chado_pub node form callback. The arguments
|
|
|
- * are out of order from a typical form because it's a defined callback
|
|
|
+ * are out of order from a typical form because it's a defined callback
|
|
|
*/
|
|
|
|
|
|
-function chado_pub_form($node, $form_state) {
|
|
|
+function chado_pub_form($node, $form_state) {
|
|
|
tripal_core_ahah_init_form();
|
|
|
$form = array();
|
|
|
-
|
|
|
- $pub = $node->pub;
|
|
|
+
|
|
|
+ $pub = $node->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;
|
|
@@ -25,22 +25,22 @@ function chado_pub_form($node, $form_state) {
|
|
|
$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
|
|
|
+ // 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'];
|
|
|
-
|
|
|
+ $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();
|
|
|
-
|
|
|
+ $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'
|
|
@@ -63,8 +63,8 @@ function chado_pub_form($node, $form_state) {
|
|
|
$d_type_id = $pub_type->cvterm_id;
|
|
|
}
|
|
|
}
|
|
|
-
|
|
|
- // get publication properties list
|
|
|
+
|
|
|
+ // get publication properties list
|
|
|
$properties_select = array();
|
|
|
$properties_select[] = 'Select a Property';
|
|
|
$properties_list = array();
|
|
@@ -79,7 +79,7 @@ function chado_pub_form($node, $form_state) {
|
|
|
NOT CVTS.is_obsolete = 1
|
|
|
ORDER BY CVTS.name ASC
|
|
|
";
|
|
|
- $prop_types = chado_query($sql);
|
|
|
+ $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
|
|
@@ -88,26 +88,26 @@ function chado_pub_form($node, $form_state) {
|
|
|
}
|
|
|
$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'),
|
|
@@ -115,14 +115,14 @@ function chado_pub_form($node, $form_state) {
|
|
|
'#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'),
|
|
@@ -135,21 +135,21 @@ function chado_pub_form($node, $form_state) {
|
|
|
suffer taxonomic influence?</a> J Ethnopharmacol. 2013 Apr 19; 146(3):842-52.</pre>'),
|
|
|
'#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_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
|
|
|
+
|
|
|
+ // 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,
|
|
@@ -163,7 +163,7 @@ function chado_pub_form($node, $form_state) {
|
|
|
'#type' => 'hidden',
|
|
|
'#value' => $num_properties,
|
|
|
);
|
|
|
-
|
|
|
+
|
|
|
$form['is_obsolete'] = array(
|
|
|
'#type' => 'checkbox',
|
|
|
'#title' => t('Is Obsolete? (Check for Yes)'),
|
|
@@ -174,10 +174,10 @@ function chado_pub_form($node, $form_state) {
|
|
|
|
|
|
}
|
|
|
/*
|
|
|
- *
|
|
|
+ *
|
|
|
*/
|
|
|
function chado_pub_validate($node, &$form) {
|
|
|
-
|
|
|
+
|
|
|
// get the submitted values
|
|
|
$title = trim($node->pubtitle);
|
|
|
$uniquename = trim($node->uniquename);
|
|
@@ -195,7 +195,7 @@ function chado_pub_validate($node, &$form) {
|
|
|
$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;
|
|
@@ -206,7 +206,7 @@ function chado_pub_validate($node, &$form) {
|
|
|
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');
|
|
@@ -216,7 +216,7 @@ function chado_pub_validate($node, &$form) {
|
|
|
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
|
|
@@ -226,10 +226,10 @@ function chado_pub_validate($node, &$form) {
|
|
|
$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') {
|
|
@@ -239,43 +239,43 @@ function chado_pub_validate($node, &$form) {
|
|
|
}
|
|
|
if($prop_type->name == 'Citation') {
|
|
|
$uniquename = $value;
|
|
|
- }
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
-
|
|
|
- $skip_duplicate_check = 0;
|
|
|
-
|
|
|
+
|
|
|
+ $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
|
|
|
+ // 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
|
|
|
+ // 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);
|
|
|
+ $pub = tripal_core_chado_select('pub', $columns, $values, $options);
|
|
|
|
|
|
- // if the title, type, year or series_name have changed then check the pub
|
|
|
+ // 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;
|
|
|
+ (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) {
|
|
|
+ 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) {
|
|
|
+ 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)
|
|
@@ -283,43 +283,43 @@ function chado_pub_validate($node, &$form) {
|
|
|
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.');
|
|
|
+ $message = t('A publication with this title and publication year, already exists.');
|
|
|
form_set_error('pyear', $message);
|
|
|
}
|
|
|
- break;
|
|
|
- case 'title_year_type':
|
|
|
+ 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.');
|
|
|
+ $message = t('A publication with this title, type and publication year, already exists.');
|
|
|
form_set_error('pyear', $message);
|
|
|
}
|
|
|
- break;
|
|
|
- case 'title_year_media':
|
|
|
+ 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.');
|
|
|
+ $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
|
|
|
+ }
|
|
|
+ }
|
|
|
+ // 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);
|
|
@@ -328,18 +328,18 @@ function chado_pub_validate($node, &$form) {
|
|
|
if($found_pub_id == $pub_id){
|
|
|
unset($results[$index]);
|
|
|
}
|
|
|
- }
|
|
|
+ }
|
|
|
if (count($results) > 0) {
|
|
|
- $message = t('A publication with this unique citation already exists.');
|
|
|
+ $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',
|
|
@@ -349,7 +349,7 @@ function chado_pub_node_form_add_new_empty_props(&$form, $properties_select) {
|
|
|
'wrapper' => 'tripal-pub-new_value-desc',
|
|
|
'event' => 'change',
|
|
|
'method' => 'replace',
|
|
|
- ),
|
|
|
+ ),
|
|
|
);
|
|
|
$form['properties']['new']["new_value"] = array(
|
|
|
'#type' => 'textarea',
|
|
@@ -357,8 +357,8 @@ function chado_pub_node_form_add_new_empty_props(&$form, $properties_select) {
|
|
|
'#cols' => 5,
|
|
|
'#rows' => $rows,
|
|
|
'#description' => '<div id="tripal-pub-new_value-desc"></div>'
|
|
|
- );
|
|
|
- $form['properties']['new']["add"] = array(
|
|
|
+ );
|
|
|
+ $form['properties']['new']["add"] = array(
|
|
|
'#type' => 'image_button',
|
|
|
'#value' => t('Add'),
|
|
|
'#src' => drupal_get_path('theme', 'tripal') . '/images/add.png',
|
|
@@ -367,16 +367,16 @@ function chado_pub_node_form_add_new_empty_props(&$form, $properties_select) {
|
|
|
'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
|
|
|
+ // first, add in all of the new properties that were added through a previous AHAH callback
|
|
|
$j = 0;
|
|
|
$num_properties++;
|
|
|
|
|
@@ -386,7 +386,7 @@ function chado_pub_node_form_add_new_props(&$form, $form_state, &$d_properties,
|
|
|
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"]) {
|
|
@@ -396,17 +396,17 @@ function chado_pub_node_form_add_new_props(&$form, $form_state, &$d_properties,
|
|
|
$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++;
|
|
|
-
|
|
|
+ $num_properties++;
|
|
|
+
|
|
|
// determine how many rows we need in the textarea
|
|
|
$rows = 1;
|
|
|
if (preg_match('/Abstract/', $cvterm[0]->name)) {
|
|
@@ -415,7 +415,7 @@ function chado_pub_node_form_add_new_props(&$form, $form_state, &$d_properties,
|
|
|
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',
|
|
@@ -428,7 +428,7 @@ function chado_pub_node_form_add_new_props(&$form, $form_state, &$d_properties,
|
|
|
'#rows' => $rows,
|
|
|
'#description' => $cvterm->definition,
|
|
|
);
|
|
|
-
|
|
|
+
|
|
|
$form['properties']['new'][$new_id][$rank]["remove-$new_id-$rank"] = array(
|
|
|
'#type' => 'image_button',
|
|
|
'#value' => t('Remove'),
|
|
@@ -438,32 +438,32 @@ function chado_pub_node_form_add_new_props(&$form, $form_state, &$d_properties,
|
|
|
'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
|
|
|
+
|
|
|
+ // 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++;
|
|
|
-
|
|
|
+ $num_properties++;
|
|
|
+
|
|
|
// determine how many rows we need in the textarea
|
|
|
$rows = 1;
|
|
|
if (preg_match('/Abstract/', $cvterm[0]->name)) {
|
|
@@ -472,7 +472,7 @@ function chado_pub_node_form_add_new_props(&$form, $form_state, &$d_properties,
|
|
|
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',
|
|
@@ -485,7 +485,7 @@ function chado_pub_node_form_add_new_props(&$form, $form_state, &$d_properties,
|
|
|
'#rows' => $rows,
|
|
|
'#description' => $cvterm->definition,
|
|
|
);
|
|
|
-
|
|
|
+
|
|
|
$form['properties']['new'][$new_id][$rank]["remove-$new_id-$rank"] = array(
|
|
|
'#type' => 'image_button',
|
|
|
'#value' => t('Remove'),
|
|
@@ -495,26 +495,26 @@ function chado_pub_node_form_add_new_props(&$form, $form_state, &$d_properties,
|
|
|
'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;
|
|
|
+ return $num_properties;
|
|
|
}
|
|
|
-
|
|
|
+
|
|
|
$sql = "
|
|
|
SELECT CVT.cvterm_id, CVT.name, CVT.definition, PP.value, PP.rank
|
|
|
FROM {pubprop} PP
|
|
@@ -524,17 +524,17 @@ function chado_pub_node_form_add_pubprop_table_props(&$form, $form_state, $pub_i
|
|
|
";
|
|
|
$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;
|
|
|
+ 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"]) {
|
|
@@ -544,13 +544,13 @@ function chado_pub_node_form_add_pubprop_table_props(&$form, $form_state, $pub_i
|
|
|
$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++;
|
|
|
-
|
|
|
+ $num_properties++;
|
|
|
+
|
|
|
// determine how many rows we need in the textarea
|
|
|
$rows = 1;
|
|
|
if (preg_match('/Abstract/', $prop->name)) {
|
|
@@ -559,7 +559,7 @@ function chado_pub_node_form_add_pubprop_table_props(&$form, $form_state, $pub_i
|
|
|
if ($prop->name == 'Authors') {
|
|
|
$rows = 2;
|
|
|
}
|
|
|
-
|
|
|
+
|
|
|
$form['properties'][$type_id][$rank]["prop_id-$type_id-$rank"] = array(
|
|
|
'#type' => 'item',
|
|
|
'#value' => $prop->name,
|
|
@@ -571,7 +571,7 @@ function chado_pub_node_form_add_pubprop_table_props(&$form, $form_state, $pub_i
|
|
|
'#rows' => $rows,
|
|
|
'#description' => $prop->definition,
|
|
|
);
|
|
|
-
|
|
|
+
|
|
|
$form['properties'][$type_id][$rank]["remove-$type_id-$rank"] = array(
|
|
|
'#type' => 'image_button',
|
|
|
'#value' => t('Remove'),
|
|
@@ -581,23 +581,23 @@ function chado_pub_node_form_add_pubprop_table_props(&$form, $form_state, $pub_i
|
|
|
'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) {
|
|
|
-
|
|
|
+&$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) {
|
|
|
+
|
|
|
+ // 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
|
|
@@ -608,20 +608,20 @@ function chado_pub_node_form_add_pub_table_props(&$form, $form_state, $propertie
|
|
|
$d_removed["$type_id-$rank"] = 1;
|
|
|
continue;
|
|
|
}
|
|
|
-
|
|
|
- // if any of the properties match the fields in the pub table then we
|
|
|
+
|
|
|
+ // 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;
|
|
|
+ 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;
|
|
|
}
|
|
@@ -637,7 +637,7 @@ function chado_pub_node_form_add_pub_table_props(&$form, $form_state, $propertie
|
|
|
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)) {
|
|
@@ -646,7 +646,7 @@ function chado_pub_node_form_add_pub_table_props(&$form, $form_state, $propertie
|
|
|
if ($prop->name == 'Authors') {
|
|
|
$rows = 2;
|
|
|
}
|
|
|
-
|
|
|
+
|
|
|
// add in the fields
|
|
|
$form['properties'][$type_id][$rank]["prop_id-$type_id-$rank"] = array(
|
|
|
'#type' => 'item',
|
|
@@ -659,7 +659,7 @@ function chado_pub_node_form_add_pub_table_props(&$form, $form_state, $propertie
|
|
|
'#rows' => $rows,
|
|
|
'#description' => $description,
|
|
|
);
|
|
|
-
|
|
|
+
|
|
|
$form['properties'][$type_id][$rank]["remove-$type_id-$rank"] = array(
|
|
|
'#type' => 'image_button',
|
|
|
'#value' => t('Remove'),
|
|
@@ -669,20 +669,20 @@ function chado_pub_node_form_add_pub_table_props(&$form, $form_state, $propertie
|
|
|
'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']);
|
|
@@ -692,7 +692,7 @@ function theme_chado_pub_node_form($form) {
|
|
|
$markup .= "<b>Include Additional Details</b><br>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,
|
|
@@ -701,128 +701,128 @@ function theme_chado_pub_node_form($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
|
|
|
+
|
|
|
+ // 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)) {
|
|
|
+ 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"]),
|
|
|
+ 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:
|
|
|
+ // 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)) {
|
|
|
+ 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"]),
|
|
|
+ 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']),
|
|
|
- );
|
|
|
+ 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', '');
|
|
|
+
|
|
|
+ $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();
|
|
|
+ $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
|
|
|
+
|
|
|
+ // 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(
|
|
|
+ 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();
|
|
|
+ $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
|
|
|
+ // 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(
|
|
|
+ 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(
|
|
|
+ array(
|
|
|
'status' => TRUE,
|
|
|
'data' => '<div id="tripal-pub-new_value-desc">' . $description . '</div>',
|
|
|
- )
|
|
|
+ )
|
|
|
);
|
|
|
}
|