|
@@ -59,6 +59,22 @@ function tripal_cv_menu() {
|
|
|
'access arguments' => array('access administration pages'),
|
|
|
'type' => MENU_NORMAL_ITEM,
|
|
|
);
|
|
|
+
|
|
|
+ $items['admin/tripal/tripal_cv/add_cvterm'] = array(
|
|
|
+ 'title' => 'Add Controlled Vocabulary Terms',
|
|
|
+ 'description' => 'Manage controlled vocabulary/ontology terms in Chado ',
|
|
|
+ 'page callback' => 'drupal_get_form',
|
|
|
+ 'page arguments' => array('tripal_cv_add_cvterm_form'),
|
|
|
+ 'access arguments' => array('administer site configuration'),
|
|
|
+ 'type' => MENU_NORMAL_ITEM,
|
|
|
+ );
|
|
|
+
|
|
|
+ $items['admin/tripal/tripal_cv/add_cvterm/js'] = array(
|
|
|
+ 'page callback' => 'tripal_cv_add_cvterm_callback',
|
|
|
+ 'access arguments' => array('administer site configuration'),
|
|
|
+ 'type' => MENU_CALLBACK,
|
|
|
+ );
|
|
|
+
|
|
|
$items['admin/tripal/tripal_cv/obo_loader'] = array(
|
|
|
'title' =>'Add/Update Ontology With OBO File',
|
|
|
'page callback' => 'drupal_get_form',
|
|
@@ -135,6 +151,7 @@ function tripal_cv_menu() {
|
|
|
|
|
|
return $items;
|
|
|
}
|
|
|
+
|
|
|
/*******************************************************************************
|
|
|
* The following function proves access control for users trying to
|
|
|
* perform actions on data managed by this module
|
|
@@ -161,6 +178,7 @@ function chado_cv_access($op, $node, $account){
|
|
|
}
|
|
|
return FALSE;
|
|
|
}
|
|
|
+
|
|
|
/*******************************************************************************
|
|
|
* Set the permission types that the chado module uses. Essentially we
|
|
|
* want permissionis that protect creation, editing and deleting of chado
|
|
@@ -185,6 +203,19 @@ function tripal_cv_views_api() {
|
|
|
return array('api' => 2.0);
|
|
|
}
|
|
|
|
|
|
+/*******************************************************************************
|
|
|
+ * We need to let drupal know about our theme functions and their arguments.
|
|
|
+ * We create theme functions to allow users of the module to customize the
|
|
|
+ * look and feel of the output generated in this module
|
|
|
+ */
|
|
|
+function tripal_cv_theme () {
|
|
|
+ return array(
|
|
|
+ 'tripal_cv_cvterm_edit' => array (
|
|
|
+ 'arguments' => array('cvterm'),
|
|
|
+ ),
|
|
|
+ );
|
|
|
+}
|
|
|
+
|
|
|
/*************************************************************************
|
|
|
* Purpose: Provide Guidance to new Tripal Admin
|
|
|
*
|
|
@@ -194,21 +225,72 @@ function tripal_cv_module_description_page() {
|
|
|
$text = '';
|
|
|
|
|
|
$text .= '<h3>Description:</h3>';
|
|
|
- $text .= '<p>TODO: Basic Description of this module including mention/link to the chado module</p>';
|
|
|
+ $text .= '<p>The Tripal CV (Controlled Vocabularies) Module provides
|
|
|
+ functionality for managing controlled vocabularies and the terms they are
|
|
|
+ comprised of. The flexibility and extendibility of the chado schema depends
|
|
|
+ on controlled vocabularies. For example, by using a controlled vocabulary for
|
|
|
+ feature types the chado schema can describe features of any type, even those
|
|
|
+ we have not concieved of yet.</p>';
|
|
|
|
|
|
$text .= '<h3>Post Installation Instructions:</h3>';
|
|
|
- $text .= '<p>TODO: Describe any post installation intructions here. You shouldalways include setting user permissions.</p>';
|
|
|
+ $text .= '<p>The main post installation step is <b>load any controlled
|
|
|
+ vocabularies/ontologies needed for you content</b>. It is suggested that you
|
|
|
+ use community developed ontologes whenever possible. These ontologies
|
|
|
+ are often very well thought out and cover possibilities you may not have
|
|
|
+ thought of yet.</p>';
|
|
|
+ $text .= '<p>However, in some cases, community developed ontologies for your
|
|
|
+ data may not yet be developed. In this case, it is suggested that you begin
|
|
|
+ developement of an ontology using one of the online tools. You might find
|
|
|
+ that many researchers are trying to deal with the same data and are willing
|
|
|
+ to help you in this endevor. You can create a controlled vocabulary and
|
|
|
+ add terms to it to provide functionality to your site while you are waiting
|
|
|
+ for the ontology to be developed.</p>';
|
|
|
|
|
|
|
|
|
$text .= '<h3>Features of this Module:</h3>';
|
|
|
- $text .= '<p>TODO: Discuss the Features of this module including links. Some features to consider are creating content, details pages/node content, editing/deleteing, basic listings and vies integration. See admin/tripal/tripal_stock for an example.</p>';
|
|
|
+ $text .= '<b>'.l('Load an already Existing Ontology/Controlled Vocabulary', 'admin/tripal/tripal_cv/obo_loader').'</b>';
|
|
|
+ $text .= '<p>This module provides an ontology loader to load already existing
|
|
|
+ ontologies into chado. You can access this loader at '.
|
|
|
+ l('Admin->Tripal Management->Tripal CV->Add/Update Ontology With OBO File', 'admin/tripal/tripal_cv/obo_loader')
|
|
|
+ .'. This loader allows you to choose from a list of common ontologies or
|
|
|
+ enter the URL or location to an OBO file. Even the list of common
|
|
|
+ ontologies is using a URL ensuring you get the most up to date ontology.</p>';
|
|
|
+ $text .= '<p>This loader adds a Tripal Job which then waits in a queue to
|
|
|
+ be launched. To launch Tripal Jobs either navidate to the root of your
|
|
|
+ drupal installation and execute "php sites/all/modules/tripal/tripal_core/
|
|
|
+ tripal_launch_jobs.php <drupal user>" or set up a cron job (See user manual
|
|
|
+ for more details).</p>';
|
|
|
+
|
|
|
+ $text .= '<b>Create/Update/Delete A Controlled Vocaulbulary</b>';
|
|
|
+ $text .= '<p>As mentioned above, there are some cases where you might need
|
|
|
+ to create your own controlled vocabulary. To do this go to '.
|
|
|
+ l('Admin->Tripal Management->Tripal CV->Add a Controlled Vocabulary','admin/tripal/tripal_cv/add_cv')
|
|
|
+ .' and fill out the form provided.</p>';
|
|
|
+ $text .= '<p>Sometimes you might want to update or even delete an already
|
|
|
+ existing controlled vocabulary. To Update/Delete a controlled vocabulary
|
|
|
+ go to '.l('Admin->Tripal Management->Tripal CV->Update/Delete Controlled Vocabulary', 'admin/tripal/tripal_cv/edit_cv')
|
|
|
+ .', select the existing controlled vocabulary you want to modify and then
|
|
|
+ edit it as desired. This only modifies the name, description of a
|
|
|
+ controlled vocabulary. See the next section for adding, removing, editing
|
|
|
+ the term a controlled vocabulary contains.</p>';
|
|
|
+
|
|
|
+ $text .= '<b>Create a Controlled Vocaulbulary Term</b>';
|
|
|
+ $text .= '<p>To Add a term to an already existing controlled vocabulary
|
|
|
+ go to '.l('Admin->Tripal Management->Tripal CV->Add a Controlled Vocabulary Term','admin/tripal/tripal_cv/add_cvterm')
|
|
|
+ .', select the controlled vocabulary you want to add terms to and then fill
|
|
|
+ out the form.</p>';
|
|
|
|
|
|
return $text;
|
|
|
}
|
|
|
|
|
|
/*************************************************************************
|
|
|
-*
|
|
|
-*/
|
|
|
+ * @section Edit/Delete CVs
|
|
|
+ *************************************************************************/
|
|
|
+
|
|
|
+/*************************************************************************
|
|
|
+ * Purpose: Provides the form for Updating and Deleteing existing
|
|
|
+ * chado controlled vocabularies (See chado cv table)
|
|
|
+ */
|
|
|
function tripal_cv_admin_page(){
|
|
|
$add_url = url("admin/tripal/tripal_cv/new");
|
|
|
$obo_url = url("admin/tripal/tripal_cv/obo");
|
|
@@ -222,9 +304,12 @@ function tripal_cv_admin_page(){
|
|
|
$output .= '<div id="db-edit-div">Please select a vocabulary above to view or edit</div>';
|
|
|
return $output;
|
|
|
}
|
|
|
+
|
|
|
/*************************************************************************
|
|
|
-*
|
|
|
-*/
|
|
|
+ * Purpose: Provides the actual "Select CV" form on the Update/Delete Controlled
|
|
|
+ * Vocabulary page. This form also triggers the edit javascript
|
|
|
+ * @todo Modify this form to use Drupal AJAX
|
|
|
+ */
|
|
|
function tripal_cv_select_form(){
|
|
|
|
|
|
$previous_db = tripal_db_set_active('chado'); // use chado database
|
|
@@ -255,151 +340,18 @@ function tripal_cv_select_form(){
|
|
|
return $form;
|
|
|
}
|
|
|
/*************************************************************************
|
|
|
-*
|
|
|
-*/
|
|
|
+ * Purpose: The edit controlled vocabulary javascript
|
|
|
+ */
|
|
|
function tripal_ajax_cv_edit (){
|
|
|
// get the database id, build the form and then return the JSON object
|
|
|
$cvid = $_POST['cvid'];
|
|
|
$form = drupal_get_form('tripal_cv_edit_form',$cvid);
|
|
|
drupal_json(array('status' => TRUE, 'data' => $form));
|
|
|
}
|
|
|
-/*************************************************************************
|
|
|
-*
|
|
|
-*/
|
|
|
-function tripal_cv_add_form(&$form_state = NULL){
|
|
|
-
|
|
|
-
|
|
|
- $form['cvid'] = array(
|
|
|
- '#type' => 'hidden',
|
|
|
- '#value' => $cvid
|
|
|
- );
|
|
|
-
|
|
|
-
|
|
|
- $form['name']= array(
|
|
|
- '#type' => 'textfield',
|
|
|
- '#title' => t("Controlled Vocabulary name"),
|
|
|
- '#description' => t('Please enter the name for this vocabulary. This field will be ignored if an OBO file or URL is provided above'),
|
|
|
- '#required' => FALSE,
|
|
|
- '#default_value' => $default_cv,
|
|
|
- '#weight' => 1
|
|
|
- );
|
|
|
-
|
|
|
- $form['definition']= array(
|
|
|
- '#type' => 'textarea',
|
|
|
- '#title' => t('Description'),
|
|
|
- '#description' => t('Please enter a description for this vocabulary'),
|
|
|
- '#default_value' => $default_desc,
|
|
|
- '#weight' => 2
|
|
|
- );
|
|
|
-
|
|
|
-
|
|
|
- $form['add'] = array (
|
|
|
- '#type' => 'submit',
|
|
|
- '#value' => t('Add'),
|
|
|
- '#weight' => 5,
|
|
|
- '#executes_submit_callback' => TRUE,
|
|
|
- );
|
|
|
-
|
|
|
- $form['#redirect'] = 'admin/tripal/tripal_cv';
|
|
|
-
|
|
|
-
|
|
|
- return $form;
|
|
|
-}
|
|
|
-/*************************************************************************
|
|
|
-*
|
|
|
-*/
|
|
|
-function tripal_cv_obo_form(&$form_state = NULL){
|
|
|
-
|
|
|
-
|
|
|
- // get a list of db from chado for user to choose
|
|
|
- $sql = "SELECT * FROM {tripal_cv_obo} ORDER BY obo_id";
|
|
|
- $results = db_query ($sql);
|
|
|
-
|
|
|
-
|
|
|
- $obos = array();
|
|
|
- $obos[] = '';
|
|
|
- while ($obo = db_fetch_object($results)){
|
|
|
- $obos[$obo->obo_id] = "$obo->name | $obo->path";
|
|
|
- }
|
|
|
-
|
|
|
|
|
|
- $form['obo_existing'] = array(
|
|
|
- '#type' =>'fieldset',
|
|
|
- '#title' => t('Use a Saved Ontology OBO Reference')
|
|
|
- );
|
|
|
-
|
|
|
- $form['obo_new'] = array(
|
|
|
- '#type' =>'fieldset',
|
|
|
- '#title' => t('Use a New Ontology OBO Reference')
|
|
|
- );
|
|
|
-
|
|
|
-
|
|
|
- $form['obo_existing']['existing_instructions']= array(
|
|
|
- '#value' => t('The Ontology OBO files listed in the drop down below have been automatically added upon
|
|
|
- installation of the Tripal CV module or were added from a previous upload. Select
|
|
|
- an OBO, then click the submit button to load the vocabulary into the database. If the
|
|
|
- vocabularies already exist then the ontology will be updated.'),
|
|
|
- '#weight' => -1
|
|
|
- );
|
|
|
-
|
|
|
- $form['obo_existing']['obo_id'] = array(
|
|
|
- '#title' => t('Ontology OBO File Reference'),
|
|
|
- '#type' => 'select',
|
|
|
- '#options' => $obos,
|
|
|
- '#weight' => 0
|
|
|
- );
|
|
|
-
|
|
|
- $form['obo_new']['path_instructions']= array(
|
|
|
- '#value' => t('Provide the name and path for the OBO file. If the vocabulary OBO file
|
|
|
- is stored local to the server provide a file name. If the vocabulry is stored remotely,
|
|
|
- provide a URL. Only provide a URL or a local file, not both.'),
|
|
|
- '#weight' => 0
|
|
|
- );
|
|
|
-
|
|
|
- $form['obo_new']['obo_name']= array(
|
|
|
- '#type' => 'textfield',
|
|
|
- '#title' => t('New Vocabulary Name'),
|
|
|
- '#description' => t('Please provide a name for this vocabulary. After upload, this name will appear in the drop down
|
|
|
- list above for use again later.'),
|
|
|
- '#weight' => 1
|
|
|
- );
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
- $form['obo_new']['obo_url']= array(
|
|
|
- '#type' => 'textfield',
|
|
|
- '#title' => t('Remote URL'),
|
|
|
- '#description' => t('Please enter a URL for the online OBO file. The file will be downloaded and parsed.
|
|
|
- (e.g. http://www.obofoundry.org/ro/ro.obo'),
|
|
|
- '#default_value' => $default_desc,
|
|
|
- '#weight' => 2
|
|
|
- );
|
|
|
- $form['obo_new']['obo_file']= array(
|
|
|
- '#type' => 'textfield',
|
|
|
- '#title' => t('Local File'),
|
|
|
- '#description' => t('Please enter the full system path for an OBO definition file, or a path within the Drupal
|
|
|
- installation (e.g. /sites/default/files/xyz.obo). The path must be accessible to the
|
|
|
- server on which this Drupal instance is running.'),
|
|
|
- '#default_value' => $default_desc,
|
|
|
- '#weight' => 3
|
|
|
- );
|
|
|
-
|
|
|
-
|
|
|
- $form['submit'] = array (
|
|
|
- '#type' => 'submit',
|
|
|
- '#value' => t('Submit'),
|
|
|
- '#weight' => 5,
|
|
|
- '#executes_submit_callback' => TRUE,
|
|
|
- );
|
|
|
-
|
|
|
- $form['#redirect'] = 'admin/tripal/tripal_cv/obo';
|
|
|
-
|
|
|
-
|
|
|
- return $form;
|
|
|
-}
|
|
|
/*************************************************************************
|
|
|
-*
|
|
|
-*/
|
|
|
+ * Purpose: Provides a form to allow updating/deleteing of controlled vocabularies
|
|
|
+ */
|
|
|
function tripal_cv_edit_form(&$form_state = NULL,$cvid = NULL){
|
|
|
|
|
|
|
|
@@ -464,9 +416,10 @@ function tripal_cv_edit_form(&$form_state = NULL,$cvid = NULL){
|
|
|
|
|
|
return $form;
|
|
|
}
|
|
|
+
|
|
|
/************************************************************************
|
|
|
-*
|
|
|
-*/
|
|
|
+ * Purpose: The submit function of the update/delete controlled vocabulary form
|
|
|
+ */
|
|
|
function tripal_cv_edit_form_submit($form, &$form_state){
|
|
|
|
|
|
$name = $form_state['values']['name'];
|
|
@@ -508,9 +461,57 @@ function tripal_cv_edit_form_submit($form, &$form_state){
|
|
|
|
|
|
return '';
|
|
|
}
|
|
|
+
|
|
|
+/*************************************************************************
|
|
|
+ * @section Add CVs
|
|
|
+ *************************************************************************/
|
|
|
+
|
|
|
+/*************************************************************************
|
|
|
+ * Purpose: Provides the Add controlled vocabulary form
|
|
|
+ */
|
|
|
+function tripal_cv_add_form(&$form_state = NULL){
|
|
|
+
|
|
|
+
|
|
|
+ $form['cvid'] = array(
|
|
|
+ '#type' => 'hidden',
|
|
|
+ '#value' => $cvid
|
|
|
+ );
|
|
|
+
|
|
|
+
|
|
|
+ $form['name']= array(
|
|
|
+ '#type' => 'textfield',
|
|
|
+ '#title' => t("Controlled Vocabulary name"),
|
|
|
+ '#description' => t('Please enter the name for this vocabulary. This field will be ignored if an OBO file or URL is provided above'),
|
|
|
+ '#required' => FALSE,
|
|
|
+ '#default_value' => $default_cv,
|
|
|
+ '#weight' => 1
|
|
|
+ );
|
|
|
+
|
|
|
+ $form['definition']= array(
|
|
|
+ '#type' => 'textarea',
|
|
|
+ '#title' => t('Description'),
|
|
|
+ '#description' => t('Please enter a description for this vocabulary'),
|
|
|
+ '#default_value' => $default_desc,
|
|
|
+ '#weight' => 2
|
|
|
+ );
|
|
|
+
|
|
|
+
|
|
|
+ $form['add'] = array (
|
|
|
+ '#type' => 'submit',
|
|
|
+ '#value' => t('Add'),
|
|
|
+ '#weight' => 5,
|
|
|
+ '#executes_submit_callback' => TRUE,
|
|
|
+ );
|
|
|
+
|
|
|
+ $form['#redirect'] = 'admin/tripal/tripal_cv';
|
|
|
+
|
|
|
+
|
|
|
+ return $form;
|
|
|
+}
|
|
|
+
|
|
|
/************************************************************************
|
|
|
-*
|
|
|
-*/
|
|
|
+ * Purpose: The submit function for the add controlled vocabulary form
|
|
|
+ */
|
|
|
function tripal_cv_add_form_submit($form, &$form_state){
|
|
|
|
|
|
$name = $form_state['values']['name'];
|
|
@@ -534,9 +535,342 @@ function tripal_cv_add_form_submit($form, &$form_state){
|
|
|
|
|
|
return '';
|
|
|
}
|
|
|
+
|
|
|
+/*************************************************************************
|
|
|
+ * @section Add Controlled Vocabulary Term
|
|
|
+ *************************************************************************/
|
|
|
+
|
|
|
+/*************************************************************************
|
|
|
+ * Purpose: Provides the form that allows adding of terms to an existing
|
|
|
+ * controlled vocabulary
|
|
|
+ */
|
|
|
+function tripal_cv_add_cvterm_form (&$form_state) {
|
|
|
+ $form = array();
|
|
|
+
|
|
|
+ $results = tripal_core_chado_select(
|
|
|
+ 'cv',
|
|
|
+ array('cv_id','name'),
|
|
|
+ array()
|
|
|
+ );
|
|
|
+ $cvs = array();
|
|
|
+ $cvs[] = '';
|
|
|
+ foreach ($results as $cv) {
|
|
|
+ $cvs[$cv->cv_id] = $cv->name;
|
|
|
+ }
|
|
|
+
|
|
|
+ $form['cv_id'] = array(
|
|
|
+ '#title' => t('Controlled Vocabulary/Ontology Name'),
|
|
|
+ '#type' => 'select',
|
|
|
+ '#options' => $cvs,
|
|
|
+ '#ahah' => array(
|
|
|
+ 'path' => 'admin/tripal/tripal_cv/add_cvterm/js',
|
|
|
+ 'wrapper' => 'cvterm-add-div',
|
|
|
+ 'effect' => 'fade',
|
|
|
+ 'event' => 'change',
|
|
|
+ 'method' => 'replace',
|
|
|
+ ),
|
|
|
+ '#required' => TRUE,
|
|
|
+ );
|
|
|
+
|
|
|
+ $form['add_cvterm'] = array(
|
|
|
+ '#type' => 'item',
|
|
|
+ '#value' => t('Please select a vocabulary above to add a term to it'),
|
|
|
+ '#prefix' => '<div id="cvterm-add-div">',
|
|
|
+ '#suffix' => '</div>'
|
|
|
+ );
|
|
|
+
|
|
|
+ if ($form_state['values']['cv_id']) {
|
|
|
+
|
|
|
+ $form['add_cvterm'] = array(
|
|
|
+ '#type' => 'fieldset',
|
|
|
+ '#title' => t('Add Term to the current Controlled Vocabulary'),
|
|
|
+ '#prefix' => '<div id="cvterm-add-div">',
|
|
|
+ '#suffix' => '</div>'
|
|
|
+ );
|
|
|
+
|
|
|
+ $form['add_cvterm']['name']= array(
|
|
|
+ '#type' => 'textfield',
|
|
|
+ '#title' => t("Term Name"),
|
|
|
+ '#description' => t('Please enter the name for this vocabulary term.'),
|
|
|
+ '#required' => FALSE,
|
|
|
+ '#weight' => 1,
|
|
|
+ '#required' => TRUE,
|
|
|
+ );
|
|
|
+
|
|
|
+ $form['add_cvterm']['definition']= array(
|
|
|
+ '#type' => 'textarea',
|
|
|
+ '#title' => t('Description'),
|
|
|
+ '#description' => t('Please enter a description for this term'),
|
|
|
+ '#weight' => 2
|
|
|
+ );
|
|
|
+
|
|
|
+ $form['add_cvterm']['is_relationshiptype'] = array(
|
|
|
+ '#type' => 'checkbox',
|
|
|
+ '#title' => t('This term describes a relationship?'),
|
|
|
+ '#weight' => 3,
|
|
|
+ );
|
|
|
+
|
|
|
+ $form['add_cvterm']['is_obsolete'] = array(
|
|
|
+ '#type' => 'checkbox',
|
|
|
+ '#title' => t('This term is obsolete?'),
|
|
|
+ '#weight' => 3,
|
|
|
+ );
|
|
|
+
|
|
|
+ $results = tripal_core_chado_select(
|
|
|
+ 'db',
|
|
|
+ array('db_id', 'name'),
|
|
|
+ array()
|
|
|
+ );
|
|
|
+ $dbs = array();
|
|
|
+ $dbs[] = '';
|
|
|
+ foreach ($results as $db) {
|
|
|
+ $dbs[$db->db_id] = $db->name;
|
|
|
+ }
|
|
|
+ $form['add_cvterm']['db_id'] = array(
|
|
|
+ '#type' => 'select',
|
|
|
+ '#title' => t('Database'),
|
|
|
+ '#description' => t('All terms must be assocated with an external database.
|
|
|
+ Please select the external database to associate with
|
|
|
+ this term'),
|
|
|
+ '#options' => $dbs,
|
|
|
+ '#weight' => 4,
|
|
|
+ '#required' => TRUE,
|
|
|
+ );
|
|
|
+
|
|
|
+ $form['add_cvterm']['submit'] = array(
|
|
|
+ '#type' => 'submit',
|
|
|
+ '#value' => 'Add Term',
|
|
|
+ '#weight' => 5
|
|
|
+ );
|
|
|
+
|
|
|
+ } //end of if cv selected
|
|
|
+
|
|
|
+
|
|
|
+ return $form;
|
|
|
+}
|
|
|
+
|
|
|
+/*************************************************************************
|
|
|
+ * Purpose: Validates the input for adding a cvterm
|
|
|
+ */
|
|
|
+function tripal_cv_add_cvterm_form_validate ($form, &$form_state) {
|
|
|
+ if (!empty($form_state['ahah_submission'])) {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+
|
|
|
+}
|
|
|
+
|
|
|
+/*************************************************************************
|
|
|
+ * Purpose: Adds terms to an existing controlled vocabulary
|
|
|
+ */
|
|
|
+function tripal_cv_add_cvterm_form_submit ($form, &$form_state) {
|
|
|
+ if (!empty($form_state['ahah_submission'])) {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+
|
|
|
+ // Add dbxref for cvterm
|
|
|
+ $dbxref_insert_values = array(
|
|
|
+ 'db_id' => $form_state['values']['db_id'],
|
|
|
+ 'accession' => $form_state['values']['name'],
|
|
|
+ 'description' => 'cvterm reference',
|
|
|
+ );
|
|
|
+ $dbxref_results = tripal_core_chado_select(
|
|
|
+ 'dbxref',
|
|
|
+ array('dbxref_id'),
|
|
|
+ $dbxref_insert_values
|
|
|
+ );
|
|
|
+ if (!$dbxref_results[0]->dbxref_id) {
|
|
|
+ $dbxref_insert_values['version'] = '1';
|
|
|
+ $dbxref_success = tripal_core_chado_insert(
|
|
|
+ 'dbxref',
|
|
|
+ $dbxref_insert_values
|
|
|
+ );
|
|
|
+ } else {
|
|
|
+ $dbxref_success = true;
|
|
|
+ }
|
|
|
+
|
|
|
+ // Add cvterm
|
|
|
+ if ($dbxref_success) {
|
|
|
+ $insert_values = array(
|
|
|
+ 'cv_id' => $form_state['values']['cv_id'],
|
|
|
+ 'name' => $form_state['values']['name'],
|
|
|
+ 'definition' => $form_state['values']['definition'],
|
|
|
+ 'dbxref_id' => $dbxref_insert_values,
|
|
|
+ 'is_obsolete' => (string) $form_state['values']['is_obsolete'],
|
|
|
+ 'is_relationshiptype' => (string) $form_state['values']['is_relationshiptype'],
|
|
|
+ );
|
|
|
+ $success = tripal_core_chado_insert(
|
|
|
+ 'cvterm',
|
|
|
+ $insert_values
|
|
|
+ );
|
|
|
+ if ($success) {
|
|
|
+ drupal_set_message('Successfully Added Term to Controlled Vocabulary');
|
|
|
+ } else {
|
|
|
+ drupal_set_message('Unable to add controlled vocabulary term', 'error');
|
|
|
+ watchdog(
|
|
|
+ 'tripal_cv',
|
|
|
+ 'Cvterm Insert: Unable to insert cvterm where values: %values',
|
|
|
+ array('%values' => print_r($insert_values,TRUE)),
|
|
|
+ WATCHDOG_ERROR
|
|
|
+ );
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ drupal_set_message('Unable to add database reference for controlled vocabulary term', 'error');
|
|
|
+ watchdog(
|
|
|
+ 'tripal_cv',
|
|
|
+ 'Cvterm Insert: Unable to insert dbxref for cvterm where values: %values',
|
|
|
+ array('%values' => print_r($dbxref_insert_values,TRUE)),
|
|
|
+ WATCHDOG_ERROR
|
|
|
+ );
|
|
|
+ }
|
|
|
+ return;
|
|
|
+}
|
|
|
+
|
|
|
+/*************************************************************************
|
|
|
+ * Purpose: This function gets called when the selecting of a cv from
|
|
|
+ * the select list triggers it. This function simply rebuilds the form
|
|
|
+ * with new information. No elements are created here
|
|
|
+ */
|
|
|
+function tripal_cv_add_cvterm_callback () {
|
|
|
+
|
|
|
+ // Retrieve the form from the cache
|
|
|
+ $form_state = array('storage' => NULL);
|
|
|
+ $form_build_id = $_POST['form_build_id'];
|
|
|
+ $form = form_get_cache($form_build_id, $form_state);
|
|
|
+
|
|
|
+ // Preparing to process the form
|
|
|
+ $args = $form['#parameters'];
|
|
|
+ $form_id = array_shift($args);
|
|
|
+ $form_state['post'] = $form['#post'] = $_POST;
|
|
|
+ $form['#programmed'] = $form['#redirect'] = FALSE;
|
|
|
+
|
|
|
+ // Sets the form_state so that the validate and submit handlers can tell
|
|
|
+ // when the form is submitted via AHAH
|
|
|
+ $form_state['ahah_submission'] = TRUE;
|
|
|
+
|
|
|
+ // Process the form with drupal_process_form. This function calls the submit
|
|
|
+ // handlers, which put whatever was worthy of keeping into $form_state.
|
|
|
+ drupal_process_form($form_id, $form, $form_state);
|
|
|
+
|
|
|
+ // You call drupal_rebuild_form which destroys $_POST.
|
|
|
+ // The form generator function is called and creates the form again but since
|
|
|
+ // it knows to use $form_state, the form will be different.
|
|
|
+ // The new form gets cached and processed again, but because $_POST is
|
|
|
+ // destroyed, the submit handlers will not be called again.
|
|
|
+ $form = drupal_rebuild_form($form_id, $form_state, $args, $form_build_id);
|
|
|
+
|
|
|
+ // This is the only piece specific to your form
|
|
|
+ // Picks a piece of the form and renders it
|
|
|
+ // Specifcally the add cvterm fieldset and all contained fields
|
|
|
+ $add_cvterm_form = $form['add_cvterm'];
|
|
|
+ unset($add_cvterm_form['#prefix'], $add_cvterm_form['#suffix']);
|
|
|
+ $output = theme('status_messages') . drupal_render($add_cvterm_form);
|
|
|
+
|
|
|
+ // Final rendering callback.
|
|
|
+ drupal_json(array('status' => TRUE, 'data' => $output));
|
|
|
+}
|
|
|
+
|
|
|
+/*************************************************************************
|
|
|
+ * @section Ontology Loader
|
|
|
+ *************************************************************************/
|
|
|
+
|
|
|
+/*************************************************************************
|
|
|
+ * Purpose: Provides the form to load an already existing controlled
|
|
|
+ * Vocabulary into chado
|
|
|
+ */
|
|
|
+function tripal_cv_obo_form(&$form_state = NULL){
|
|
|
+
|
|
|
+
|
|
|
+ // get a list of db from chado for user to choose
|
|
|
+ $sql = "SELECT * FROM {tripal_cv_obo} ORDER BY obo_id";
|
|
|
+ $results = db_query ($sql);
|
|
|
+
|
|
|
+
|
|
|
+ $obos = array();
|
|
|
+ $obos[] = '';
|
|
|
+ while ($obo = db_fetch_object($results)){
|
|
|
+ $obos[$obo->obo_id] = "$obo->name | $obo->path";
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ $form['obo_existing'] = array(
|
|
|
+ '#type' =>'fieldset',
|
|
|
+ '#title' => t('Use a Saved Ontology OBO Reference')
|
|
|
+ );
|
|
|
+
|
|
|
+ $form['obo_new'] = array(
|
|
|
+ '#type' =>'fieldset',
|
|
|
+ '#title' => t('Use a New Ontology OBO Reference')
|
|
|
+ );
|
|
|
+
|
|
|
+
|
|
|
+ $form['obo_existing']['existing_instructions']= array(
|
|
|
+ '#value' => t('The Ontology OBO files listed in the drop down below have been automatically added upon
|
|
|
+ installation of the Tripal CV module or were added from a previous upload. Select
|
|
|
+ an OBO, then click the submit button to load the vocabulary into the database. If the
|
|
|
+ vocabularies already exist then the ontology will be updated.'),
|
|
|
+ '#weight' => -1
|
|
|
+ );
|
|
|
+
|
|
|
+ $form['obo_existing']['obo_id'] = array(
|
|
|
+ '#title' => t('Ontology OBO File Reference'),
|
|
|
+ '#type' => 'select',
|
|
|
+ '#options' => $obos,
|
|
|
+ '#weight' => 0
|
|
|
+ );
|
|
|
+
|
|
|
+ $form['obo_new']['path_instructions']= array(
|
|
|
+ '#value' => t('Provide the name and path for the OBO file. If the vocabulary OBO file
|
|
|
+ is stored local to the server provide a file name. If the vocabulry is stored remotely,
|
|
|
+ provide a URL. Only provide a URL or a local file, not both.'),
|
|
|
+ '#weight' => 0
|
|
|
+ );
|
|
|
+
|
|
|
+ $form['obo_new']['obo_name']= array(
|
|
|
+ '#type' => 'textfield',
|
|
|
+ '#title' => t('New Vocabulary Name'),
|
|
|
+ '#description' => t('Please provide a name for this vocabulary. After upload, this name will appear in the drop down
|
|
|
+ list above for use again later.'),
|
|
|
+ '#weight' => 1
|
|
|
+ );
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ $form['obo_new']['obo_url']= array(
|
|
|
+ '#type' => 'textfield',
|
|
|
+ '#title' => t('Remote URL'),
|
|
|
+ '#description' => t('Please enter a URL for the online OBO file. The file will be downloaded and parsed.
|
|
|
+ (e.g. http://www.obofoundry.org/ro/ro.obo'),
|
|
|
+ '#default_value' => $default_desc,
|
|
|
+ '#weight' => 2
|
|
|
+ );
|
|
|
+ $form['obo_new']['obo_file']= array(
|
|
|
+ '#type' => 'textfield',
|
|
|
+ '#title' => t('Local File'),
|
|
|
+ '#description' => t('Please enter the full system path for an OBO definition file, or a path within the Drupal
|
|
|
+ installation (e.g. /sites/default/files/xyz.obo). The path must be accessible to the
|
|
|
+ server on which this Drupal instance is running.'),
|
|
|
+ '#default_value' => $default_desc,
|
|
|
+ '#weight' => 3
|
|
|
+ );
|
|
|
+
|
|
|
+
|
|
|
+ $form['submit'] = array (
|
|
|
+ '#type' => 'submit',
|
|
|
+ '#value' => t('Submit'),
|
|
|
+ '#weight' => 5,
|
|
|
+ '#executes_submit_callback' => TRUE,
|
|
|
+ );
|
|
|
+
|
|
|
+ $form['#redirect'] = 'admin/tripal/tripal_cv/obo';
|
|
|
+
|
|
|
+
|
|
|
+ return $form;
|
|
|
+}
|
|
|
+
|
|
|
/************************************************************************
|
|
|
-*
|
|
|
-*/
|
|
|
+ * Purpose: The submit function for the load ontology form. It registers a
|
|
|
+ * tripal job to run the obo_loader.php script
|
|
|
+ */
|
|
|
function tripal_cv_obo_form_submit($form, &$form_state){
|
|
|
global $user;
|
|
|
|
|
@@ -568,6 +902,11 @@ function tripal_cv_obo_form_submit($form, &$form_state){
|
|
|
|
|
|
return '';
|
|
|
}
|
|
|
+
|
|
|
+/*************************************************************************
|
|
|
+ * @section cvterm path management
|
|
|
+ *************************************************************************/
|
|
|
+
|
|
|
/*************************************************************************
|
|
|
*
|
|
|
*/
|
|
@@ -642,19 +981,12 @@ function tripal_cv_update_cvtermpath($cvid = NULL, $job_id = NULL) {
|
|
|
return;
|
|
|
}
|
|
|
|
|
|
-/*******************************************************************************
|
|
|
- * We need to let drupal know about our theme functions and their arguments.
|
|
|
- * We create theme functions to allow users of the module to customize the
|
|
|
- * look and feel of the output generated in this module
|
|
|
- */
|
|
|
-function tripal_cv_theme () {
|
|
|
- return array(
|
|
|
- 'tripal_cv_cvterm_edit' => array (
|
|
|
- 'arguments' => array('cvterm'),
|
|
|
- ),
|
|
|
- );
|
|
|
-}
|
|
|
-
|
|
|
+/*************************************************************************
|
|
|
+ * @section Miscellaneous
|
|
|
+ * @todo check to see if these functions are still needed and/or if they
|
|
|
+ * should be moved to the api file
|
|
|
+ *************************************************************************/
|
|
|
+
|
|
|
/*************************************************************************
|
|
|
*/
|
|
|
function tripal_cv_get_cv_id($cv_name){
|
|
@@ -667,6 +999,7 @@ function tripal_cv_get_cv_id($cv_name){
|
|
|
tripal_db_set_active($previous_db);
|
|
|
return $cv->cv_id;
|
|
|
}
|
|
|
+
|
|
|
/*************************************************************************
|
|
|
*
|
|
|
*/
|
|
@@ -682,6 +1015,7 @@ function tripal_cv_cvterm_edit($cvterm_id){
|
|
|
tripal_db_set_active($previous_db);
|
|
|
return theme('tripal_cv_cvterm_edit',$cvterm);
|
|
|
}
|
|
|
+
|
|
|
/*************************************************************************
|
|
|
*
|
|
|
*/
|