|
@@ -139,28 +139,28 @@ function chado_analysis_insert($node) {
|
|
|
|
|
|
// If the analysis doesn't exist then let's create it in chado.
|
|
// If the analysis doesn't exist then let's create it in chado.
|
|
if (!$analysis) {
|
|
if (!$analysis) {
|
|
- // insert and then get the newly inserted analysis record
|
|
|
|
- $values = array(
|
|
|
|
- 'name' => $node->analysisname,
|
|
|
|
- 'description' => $node->description,
|
|
|
|
- 'program' => $node->program,
|
|
|
|
- 'programversion' => $node->programversion,
|
|
|
|
- 'algorithm' => $node->algorithm,
|
|
|
|
- 'sourcename' => $node->sourcename,
|
|
|
|
- 'sourceversion' => $node->sourceversion,
|
|
|
|
- 'sourceuri' => $node->sourceuri,
|
|
|
|
- 'timeexecuted' => $timestamp
|
|
|
|
- );
|
|
|
|
- if (tripal_core_chado_insert('analysis', $values)) {
|
|
|
|
- $analysis = tripal_core_chado_select('analysis', array('*'), $values);
|
|
|
|
- $analysis_id = $analysis[0]->analysis_id;
|
|
|
|
- }
|
|
|
|
|
|
+ // insert and then get the newly inserted analysis record
|
|
|
|
+ $values = array(
|
|
|
|
+ 'name' => $node->analysisname,
|
|
|
|
+ 'description' => $node->description,
|
|
|
|
+ 'program' => $node->program,
|
|
|
|
+ 'programversion' => $node->programversion,
|
|
|
|
+ 'algorithm' => $node->algorithm,
|
|
|
|
+ 'sourcename' => $node->sourcename,
|
|
|
|
+ 'sourceversion' => $node->sourceversion,
|
|
|
|
+ 'sourceuri' => $node->sourceuri,
|
|
|
|
+ 'timeexecuted' => $timestamp
|
|
|
|
+ );
|
|
|
|
+ if (tripal_core_chado_insert('analysis', $values)) {
|
|
|
|
+ $analysis = tripal_core_chado_select('analysis', array('*'), $values);
|
|
|
|
+ $analysis_id = $analysis[0]->analysis_id;
|
|
|
|
+ }
|
|
}
|
|
}
|
|
|
|
|
|
// Make sure the entry for this analysis doesn't already exist in the
|
|
// Make sure the entry for this analysis doesn't already exist in the
|
|
// chado_analysis table if it doesn't exist then we want to add it.
|
|
// chado_analysis table if it doesn't exist then we want to add it.
|
|
$node_check_sql = "SELECT * FROM {chado_analysis} ".
|
|
$node_check_sql = "SELECT * FROM {chado_analysis} ".
|
|
- "WHERE analysis_id = %d";
|
|
|
|
|
|
+ "WHERE analysis_id = %d";
|
|
$node_check = db_fetch_object(db_query($node_check_sql, $analysis_id));
|
|
$node_check = db_fetch_object(db_query($node_check_sql, $analysis_id));
|
|
if (!$node_check) {
|
|
if (!$node_check) {
|
|
// next add the item to the drupal table
|
|
// next add the item to the drupal table
|
|
@@ -184,16 +184,16 @@ function chado_analysis_insert($node) {
|
|
drupal_write_record('node_revisions', $record, 'nid');
|
|
drupal_write_record('node_revisions', $record, 'nid');
|
|
}
|
|
}
|
|
|
|
|
|
- // add the analysis to the node object for
|
|
|
|
- // use by other analysis modules that may be using this function
|
|
|
|
- $node->analysis = $analysis;
|
|
|
|
- $node->analysis_id = $analysis_id; // we need to set this for children
|
|
|
|
|
|
+ // add the analysis to the node object for
|
|
|
|
+ // use by other analysis modules that may be using this function
|
|
|
|
+ $node->analysis = $analysis;
|
|
|
|
+ $node->analysis_id = $analysis_id; // we need to set this for children
|
|
|
|
|
|
- // now add the properties
|
|
|
|
- $properties = array(); // stores all of the properties we need to add
|
|
|
|
- // get the list of properties for easy lookup (without doing lots of database queries
|
|
|
|
- $properties_list = array();
|
|
|
|
- $sql = "
|
|
|
|
|
|
+ // now add the properties
|
|
|
|
+ $properties = array(); // stores all of the properties we need to add
|
|
|
|
+ // get the list of properties for easy lookup (without doing lots of database queries
|
|
|
|
+ $properties_list = array();
|
|
|
|
+ $sql = "
|
|
SELECT DISTINCT CVT.cvterm_id, CVT.name, CVT.definition
|
|
SELECT DISTINCT CVT.cvterm_id, CVT.name, CVT.definition
|
|
FROM {cvterm} CVT
|
|
FROM {cvterm} CVT
|
|
INNER JOIN {cv} ON CVT.cv_id = CV.cv_id
|
|
INNER JOIN {cv} ON CVT.cv_id = CV.cv_id
|
|
@@ -201,40 +201,40 @@ function chado_analysis_insert($node) {
|
|
CV.name = 'analysis_property' AND
|
|
CV.name = 'analysis_property' AND
|
|
NOT CVT.is_obsolete = 1
|
|
NOT CVT.is_obsolete = 1
|
|
ORDER BY CVT.name ASC
|
|
ORDER BY CVT.name ASC
|
|
- ";
|
|
|
|
- $prop_types = chado_query($sql);
|
|
|
|
- while ($prop = db_fetch_object($prop_types)) {
|
|
|
|
- $properties_list[$prop->cvterm_id] = $prop->name;
|
|
|
|
- }
|
|
|
|
|
|
+ ";
|
|
|
|
+ $prop_types = chado_query($sql);
|
|
|
|
+ while ($prop = db_fetch_object($prop_types)) {
|
|
|
|
+ $properties_list[$prop->cvterm_id] = $prop->name;
|
|
|
|
+ }
|
|
|
|
|
|
- // get the properties that should be added. Properties are in one of two forms:
|
|
|
|
- // 1) prop_value-[type id]-[index]
|
|
|
|
- // 2) new_value-[type id]-[index]
|
|
|
|
- // 3) new_id, new_value
|
|
|
|
-
|
|
|
|
- foreach ($node as $name => $value) {
|
|
|
|
- if (preg_match('/^new_value-(\d+)-(\d+)/', $name, $matches)) {
|
|
|
|
- $type_id = $matches[1];
|
|
|
|
- $index = $matches[2];
|
|
|
|
- $name = $properties_list[$type_id];
|
|
|
|
- $properties[$name][$index] = trim($value);
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
|
|
+ // get the properties that should be added. Properties are in one of two forms:
|
|
|
|
+ // 1) prop_value-[type id]-[index]
|
|
|
|
+ // 2) new_value-[type id]-[index]
|
|
|
|
+ // 3) new_id, new_value
|
|
|
|
+
|
|
|
|
+ foreach ($node as $name => $value) {
|
|
|
|
+ if (preg_match('/^new_value-(\d+)-(\d+)/', $name, $matches)) {
|
|
|
|
+ $type_id = $matches[1];
|
|
|
|
+ $index = $matches[2];
|
|
|
|
+ $name = $properties_list[$type_id];
|
|
|
|
+ $properties[$name][$index] = trim($value);
|
|
|
|
+ }
|
|
|
|
+ }
|
|
if ($node->new_id and $node->new_value) {
|
|
if ($node->new_id and $node->new_value) {
|
|
- $type_id = $node->new_id;
|
|
|
|
- $name = $properties_list[$type_id];
|
|
|
|
- $index = count($properties[$name]);
|
|
|
|
- $properties[$name][$index] = trim($node->new_value);
|
|
|
|
|
|
+ $type_id = $node->new_id;
|
|
|
|
+ $name = $properties_list[$type_id];
|
|
|
|
+ $index = count($properties[$name]);
|
|
|
|
+ $properties[$name][$index] = trim($node->new_value);
|
|
}
|
|
}
|
|
// now add in the properties
|
|
// now add in the properties
|
|
foreach ($properties as $property => $elements) {
|
|
foreach ($properties as $property => $elements) {
|
|
foreach ($elements as $rank => $value) {
|
|
foreach ($elements as $rank => $value) {
|
|
- $status = tripal_analysis_insert_property($analysis_id, $property, $value, FALSE);
|
|
|
|
|
|
+ $status = tripal_analysis_insert_property($analysis_id, $property, $value, FALSE, 'analysis_property');
|
|
if (!$status) {
|
|
if (!$status) {
|
|
drupal_set_message("Error cannot add property: $property", "error");
|
|
drupal_set_message("Error cannot add property: $property", "error");
|
|
watchdog('t_analysis', "Error cannot add property: %prop",
|
|
watchdog('t_analysis', "Error cannot add property: %prop",
|
|
array('%property' => $property), WATCHDOG_ERROR);
|
|
array('%property' => $property), WATCHDOG_ERROR);
|
|
- }
|
|
|
|
|
|
+ }
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
@@ -283,113 +283,113 @@ function chado_analysis_delete($node) {
|
|
* @ingroup tripal_analysis
|
|
* @ingroup tripal_analysis
|
|
*/
|
|
*/
|
|
function chado_analysis_update($node) {
|
|
function chado_analysis_update($node) {
|
|
- global $user;
|
|
|
|
- if ($node->revision) {
|
|
|
|
- // TODO -- decide what to do about revisions
|
|
|
|
- }
|
|
|
|
- // Create a timestamp so we can insert it into the chado database
|
|
|
|
- $time = $node->timeexecuted;
|
|
|
|
- $month = $time['month'];
|
|
|
|
- $day = $time['day'];
|
|
|
|
- $year = $time['year'];
|
|
|
|
- $timestamp = $month . '/' . $day . '/' . $year;
|
|
|
|
-
|
|
|
|
- // get the analysis_id for this node:
|
|
|
|
- $sql = "SELECT analysis_id ".
|
|
|
|
- "FROM {chado_analysis} ".
|
|
|
|
- "WHERE nid = %d";
|
|
|
|
- $analysis_id = db_fetch_object(db_query($sql, $node->nid))->analysis_id;
|
|
|
|
-
|
|
|
|
- $sql = "UPDATE {analysis} ".
|
|
|
|
- "SET name = '%s', ".
|
|
|
|
- " description = '%s', ".
|
|
|
|
- " program = '%s', ".
|
|
|
|
- " programversion = '%s', ".
|
|
|
|
- " algorithm = '%s', ".
|
|
|
|
- " sourcename = '%s', ".
|
|
|
|
- " sourceversion = '%s', ".
|
|
|
|
- " sourceuri = '%s', ".
|
|
|
|
- " timeexecuted = '%s' ".
|
|
|
|
- "WHERE analysis_id = %d ";
|
|
|
|
-
|
|
|
|
- chado_query($sql, $node->analysisname, $node->description, $node->program,
|
|
|
|
- $node->programversion, $node->algorithm, $node->sourcename,
|
|
|
|
- $node->sourceversion, $node->sourceuri, $timestamp, $analysis_id);
|
|
|
|
-
|
|
|
|
- // Create a title for the analysis node using the unique keys so when the
|
|
|
|
- // node is saved, it will have a title
|
|
|
|
- $record = new stdClass();
|
|
|
|
- // If the analysis has a name, use it as the node title. If not, construct
|
|
|
|
- // the title using program, programversion, and sourcename
|
|
|
|
- if ($node->analysisname) {
|
|
|
|
- $record->title = $node->analysisname;
|
|
|
|
- }
|
|
|
|
- else {
|
|
|
|
- //Construct node title as "program (version)
|
|
|
|
- $record->title = "$node->program ($node->programversion)";
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- $record->nid = $node->nid;
|
|
|
|
- drupal_write_record('node', $record, 'nid');
|
|
|
|
- drupal_write_record('node_revisions', $record, 'nid');
|
|
|
|
-
|
|
|
|
- // now update the properties
|
|
|
|
- $properties = array(); // stores all of the properties we need to add
|
|
|
|
- // get the list of properties for easy lookup (without doing lots of database queries
|
|
|
|
- $properties_list = array();
|
|
|
|
- $sql = "
|
|
|
|
- SELECT DISTINCT CVT.cvterm_id, CVT.name, CVT.definition
|
|
|
|
- FROM {cvterm} CVT
|
|
|
|
- INNER JOIN {cv} ON CVT.cv_id = CV.cv_id
|
|
|
|
- WHERE
|
|
|
|
- CV.name = 'analysis_property' AND
|
|
|
|
- NOT CVT.is_obsolete = 1
|
|
|
|
- ORDER BY CVT.name ASC
|
|
|
|
- ";
|
|
|
|
- $prop_types = chado_query($sql);
|
|
|
|
- while ($prop = db_fetch_object($prop_types)) {
|
|
|
|
- $properties_list[$prop->cvterm_id] = $prop->name;
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- // get the properties that should be added. Properties are in one of three forms:
|
|
|
|
- // 1) prop_value-[type id]-[index]
|
|
|
|
- // 2) new_value-[type id]-[index]
|
|
|
|
- // 3) new_id, new_value
|
|
|
|
- // dpm($node);
|
|
|
|
- foreach ($node as $key => $value) {
|
|
|
|
- if (preg_match('/^prop_value-(\d+)-(\d+)/', $key, $matches)) {
|
|
|
|
- $type_id = $matches[1];
|
|
|
|
- $index = $matches[2];
|
|
|
|
- $name = $properties_list[$type_id];
|
|
|
|
- $properties[$name][$index] = trim($value);
|
|
|
|
- }
|
|
|
|
- if (preg_match('/^new_value-(\d+)-(\d+)/', $key, $matches)) {
|
|
|
|
- $type_id = $matches[1];
|
|
|
|
- $index = $matches[2];
|
|
|
|
- $name = $properties_list[$type_id];
|
|
|
|
- $properties[$name][$index] = trim($value);
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
- if ($node->new_id and $node->new_value) {
|
|
|
|
- $type_id = $node->new_id;
|
|
|
|
- $name = $properties_list[$type_id];
|
|
|
|
- $index = count($properties[$name]);
|
|
|
|
- $properties[$name][$index] = trim($node->new_value);
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- // now add in the properties by first removing any the analysis
|
|
|
|
- // already has and adding the ones we have
|
|
|
|
- tripal_core_chado_delete('analysisprop', array('analysis_id' => $analysis_id));
|
|
|
|
- foreach ($properties as $property => $elements) {
|
|
|
|
- foreach ($elements as $rank => $value) {
|
|
|
|
- $status = tripal_analysis_insert_property($analysis_id, $property, $value, FALSE);
|
|
|
|
- if (!$status) {
|
|
|
|
- drupal_set_message("Error cannot add property: '$property'", "error");
|
|
|
|
- watchdog('t_analysis', "Error cannot add property: '%prop'",
|
|
|
|
- array('%prop' => $property), WATCHDOG_ERROR);
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
|
|
+ global $user;
|
|
|
|
+ if ($node->revision) {
|
|
|
|
+ // TODO -- decide what to do about revisions
|
|
|
|
+ }
|
|
|
|
+ // Create a timestamp so we can insert it into the chado database
|
|
|
|
+ $time = $node->timeexecuted;
|
|
|
|
+ $month = $time['month'];
|
|
|
|
+ $day = $time['day'];
|
|
|
|
+ $year = $time['year'];
|
|
|
|
+ $timestamp = $month . '/' . $day . '/' . $year;
|
|
|
|
+
|
|
|
|
+ // get the analysis_id for this node:
|
|
|
|
+ $sql = "SELECT analysis_id ".
|
|
|
|
+ "FROM {chado_analysis} ".
|
|
|
|
+ "WHERE nid = %d";
|
|
|
|
+ $analysis_id = db_fetch_object(db_query($sql, $node->nid))->analysis_id;
|
|
|
|
+
|
|
|
|
+ $sql = "UPDATE {analysis} ".
|
|
|
|
+ "SET name = '%s', ".
|
|
|
|
+ " description = '%s', ".
|
|
|
|
+ " program = '%s', ".
|
|
|
|
+ " programversion = '%s', ".
|
|
|
|
+ " algorithm = '%s', ".
|
|
|
|
+ " sourcename = '%s', ".
|
|
|
|
+ " sourceversion = '%s', ".
|
|
|
|
+ " sourceuri = '%s', ".
|
|
|
|
+ " timeexecuted = '%s' ".
|
|
|
|
+ "WHERE analysis_id = %d ";
|
|
|
|
+
|
|
|
|
+ chado_query($sql, $node->analysisname, $node->description, $node->program,
|
|
|
|
+ $node->programversion, $node->algorithm, $node->sourcename,
|
|
|
|
+ $node->sourceversion, $node->sourceuri, $timestamp, $analysis_id);
|
|
|
|
+
|
|
|
|
+ // Create a title for the analysis node using the unique keys so when the
|
|
|
|
+ // node is saved, it will have a title
|
|
|
|
+ $record = new stdClass();
|
|
|
|
+ // If the analysis has a name, use it as the node title. If not, construct
|
|
|
|
+ // the title using program, programversion, and sourcename
|
|
|
|
+ if ($node->analysisname) {
|
|
|
|
+ $record->title = $node->analysisname;
|
|
|
|
+ }
|
|
|
|
+ else {
|
|
|
|
+ //Construct node title as "program (version)
|
|
|
|
+ $record->title = "$node->program ($node->programversion)";
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ $record->nid = $node->nid;
|
|
|
|
+ drupal_write_record('node', $record, 'nid');
|
|
|
|
+ drupal_write_record('node_revisions', $record, 'nid');
|
|
|
|
+
|
|
|
|
+ // now update the properties
|
|
|
|
+ $properties = array(); // stores all of the properties we need to add
|
|
|
|
+ // get the list of properties for easy lookup (without doing lots of database queries
|
|
|
|
+ $properties_list = array();
|
|
|
|
+ $sql = "
|
|
|
|
+ SELECT DISTINCT CVT.cvterm_id, CVT.name, CVT.definition
|
|
|
|
+ FROM {cvterm} CVT
|
|
|
|
+ INNER JOIN {cv} ON CVT.cv_id = CV.cv_id
|
|
|
|
+ WHERE
|
|
|
|
+ CV.name = 'analysis_property' AND
|
|
|
|
+ NOT CVT.is_obsolete = 1
|
|
|
|
+ ORDER BY CVT.name ASC
|
|
|
|
+ ";
|
|
|
|
+ $prop_types = chado_query($sql);
|
|
|
|
+ while ($prop = db_fetch_object($prop_types)) {
|
|
|
|
+ $properties_list[$prop->cvterm_id] = $prop->name;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ // get the properties that should be added. Properties are in one of three forms:
|
|
|
|
+ // 1) prop_value-[type id]-[index]
|
|
|
|
+ // 2) new_value-[type id]-[index]
|
|
|
|
+ // 3) new_id, new_value
|
|
|
|
+ // dpm($node);
|
|
|
|
+ foreach ($node as $key => $value) {
|
|
|
|
+ if (preg_match('/^prop_value-(\d+)-(\d+)/', $key, $matches)) {
|
|
|
|
+ $type_id = $matches[1];
|
|
|
|
+ $index = $matches[2];
|
|
|
|
+ $name = $properties_list[$type_id];
|
|
|
|
+ $properties[$name][$index] = trim($value);
|
|
|
|
+ }
|
|
|
|
+ if (preg_match('/^new_value-(\d+)-(\d+)/', $key, $matches)) {
|
|
|
|
+ $type_id = $matches[1];
|
|
|
|
+ $index = $matches[2];
|
|
|
|
+ $name = $properties_list[$type_id];
|
|
|
|
+ $properties[$name][$index] = trim($value);
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ if ($node->new_id and $node->new_value) {
|
|
|
|
+ $type_id = $node->new_id;
|
|
|
|
+ $name = $properties_list[$type_id];
|
|
|
|
+ $index = count($properties[$name]);
|
|
|
|
+ $properties[$name][$index] = trim($node->new_value);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ // now add in the properties by first removing any the analysis
|
|
|
|
+ // already has and adding the ones we have
|
|
|
|
+ tripal_core_chado_delete('analysisprop', array('analysis_id' => $analysis_id));
|
|
|
|
+ foreach ($properties as $property => $elements) {
|
|
|
|
+ foreach ($elements as $rank => $value) {
|
|
|
|
+ $status = tripal_analysis_insert_property($analysis_id, $property, $value, FALSE, 'analysis_property');
|
|
|
|
+ if (!$status) {
|
|
|
|
+ drupal_set_message("Error cannot add property: '$property'", "error");
|
|
|
|
+ watchdog('t_analysis', "Error cannot add property: '%prop'",
|
|
|
|
+ array('%prop' => $property), WATCHDOG_ERROR);
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
}
|
|
}
|
|
|
|
|
|
/**
|
|
/**
|
|
@@ -461,8 +461,25 @@ function tripal_analysis_help($path, $arg) {
|
|
}
|
|
}
|
|
|
|
|
|
/**
|
|
/**
|
|
- * The following function proves access control for users trying to
|
|
|
|
- * perform actions on data managed by this module
|
|
|
|
|
|
+ * Implement hook_access().
|
|
|
|
+ *
|
|
|
|
+ * This hook allows node modules to limit access to the node types they define.
|
|
|
|
+ *
|
|
|
|
+ * @param $op
|
|
|
|
+ * The operation to be performed
|
|
|
|
+ *
|
|
|
|
+ * @param $node
|
|
|
|
+ * The node on which the operation is to be performed, or, if it does not yet exist, the
|
|
|
|
+ * type of node to be created
|
|
|
|
+ *
|
|
|
|
+ * @param $account
|
|
|
|
+ * A user object representing the user for whom the operation is to be performed
|
|
|
|
+ *
|
|
|
|
+ * @return
|
|
|
|
+ * If the permission for the specified operation is not set then return FALSE. If the
|
|
|
|
+ * permission is set then return NULL as this allows other modules to disable
|
|
|
|
+ * access. The only exception is when the $op == 'create'. We will always
|
|
|
|
+ * return TRUE if the permission is set.
|
|
*
|
|
*
|
|
* @ingroup tripal_analysis
|
|
* @ingroup tripal_analysis
|
|
*/
|
|
*/
|
|
@@ -471,7 +488,8 @@ function chado_analysis_access($op, $node, $account) {
|
|
if ($op == 'create') {
|
|
if ($op == 'create') {
|
|
if (!user_access('create chado_analysis content', $account)) {
|
|
if (!user_access('create chado_analysis content', $account)) {
|
|
return FALSE;
|
|
return FALSE;
|
|
- }
|
|
|
|
|
|
+ }
|
|
|
|
+ return TRUE;
|
|
}
|
|
}
|
|
if ($op == 'update') {
|
|
if ($op == 'update') {
|
|
if (!user_access('edit chado_analysis content', $account)) {
|
|
if (!user_access('edit chado_analysis content', $account)) {
|
|
@@ -516,7 +534,7 @@ function tripal_analysis_perm() {
|
|
* @ingroup tripal_analysis
|
|
* @ingroup tripal_analysis
|
|
*/
|
|
*/
|
|
function tripal_analysis_theme() {
|
|
function tripal_analysis_theme() {
|
|
- return array(
|
|
|
|
|
|
+ $items = array(
|
|
'tripal_analysis_base' => array(
|
|
'tripal_analysis_base' => array(
|
|
'arguments' => array('node' => NULL),
|
|
'arguments' => array('node' => NULL),
|
|
'template' => 'tripal_analysis_base',
|
|
'template' => 'tripal_analysis_base',
|
|
@@ -530,14 +548,16 @@ function tripal_analysis_theme() {
|
|
'arguments' => array(NULL),
|
|
'arguments' => array(NULL),
|
|
'path' => drupal_get_path('module', 'tripal_analysis') . '/theme',
|
|
'path' => drupal_get_path('module', 'tripal_analysis') . '/theme',
|
|
),
|
|
),
|
|
- 'tripal_analysis_properties' => array(
|
|
|
|
- 'arguments' => array('node' => NULL)
|
|
|
|
- ),
|
|
|
|
|
|
+ 'tripal_analysis_properties' => array(
|
|
|
|
+ 'arguments' => array('node' => NULL)
|
|
|
|
+ ),
|
|
// Themed Forms
|
|
// Themed Forms
|
|
'chado_analysis_node_form' => array(
|
|
'chado_analysis_node_form' => array(
|
|
'arguments' => array('form'),
|
|
'arguments' => array('form'),
|
|
),
|
|
),
|
|
);
|
|
);
|
|
|
|
+
|
|
|
|
+ return $items;
|
|
}
|
|
}
|
|
/**
|
|
/**
|
|
*
|
|
*
|