123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314 |
- <?php
- function tripal_db_admin_page() {
- $add_url = url("admin/tripal/tripal_db/add_db");
- $output = "<a href=\"$add_url\">Add a new external database</a>";
- $output .= drupal_get_form('tripal_db_select_form');
- $output .= '<div id="db-edit-div">Please select a database above to view or edit</div>';
- return $output;
- }
- function tripal_db_select_form() {
- return $form;
- }
- function tripal_db_db_edit_form($form, &$form_state) {
-
-
- $dbid = 0;
- if (array_key_exists('values', $form_state)) {
- $dbid = $form_state['values']['dbid'];
- }
-
-
- $sql = "SELECT * FROM {db} WHERE NOT name = 'tripal' ORDER BY name ";
- $results = chado_query($sql);
-
- $dbs = array();
- $dbs[] = 'Select a database';
- foreach ($results as $db) {
- $dbs[$db->db_id] = $db->name;
- }
-
- $form['dbid'] = array(
- '#title' => t('External Database Name'),
- '#type' => 'select',
- '#options' => $dbs,
- '#ajax' => array(
- 'callback' => 'tripal_db_edit_form_ajax',
- 'wrapper' => 'db-edit-div',
- 'effect' => 'fade',
- 'event' => 'change',
- 'method' => 'replace',
- ),
- '#default_value' => $dbid,
- );
-
-
-
-
- if ($dbid) {
- tripal_db_add_db_form_fields($form, $form_state, $dbid);
-
- $form['update'] = array(
- '#type' => 'submit',
- '#value' => t('Update'),
- );
- $form['delete'] = array(
- '#type' => 'submit',
- '#value' => t('Delete'),
- '#attributes' => array('onclick' => 'if(!confirm("Really Delete?")){return false;}'),
- );
- }
- else {
-
-
- $form['div_replace'] = array(
- '#type' => 'item',
- '#prefix' => '<div id="db-edit-div">',
- '#suffix' => '</div>',
- );
- }
- return $form;
- }
- function tripal_db_db_add_form($form, $form_state) {
-
-
- tripal_db_add_db_form_fields($form, $form_state);
-
- $form['add'] = array(
- '#type' => 'submit',
- '#value' => t('Add'),
- '#weight' => 5,
- );
- return $form;
- }
- function tripal_db_add_db_form_fields(&$form, $form_state, $dbid = NULL) {
-
- $default_db = '';
- $default_desc = '';
- $default_url = '';
- $default_urlprefix = '';
-
-
- if ($dbid) {
- $values = array('db_id' => $dbid);
- $result = tripal_core_chado_select('db', array('*'), $values);
- $db = $result[0];
- $default_db = $db->name;
- $default_desc = $db->description;
- $default_url = $db->url;
- $default_urlprefix = $db->urlprefix;
- }
-
-
- $form['fields'] = array(
- '#type' => 'fieldset',
- '#title' => 'Database Details',
- '#collapsible' => 0,
- );
-
- $form['fields']['name']= array(
- '#type' => 'textfield',
- '#title' => t("Database Name"),
- '#description' => t('Please enter the name for this external database.'),
- '#required' => TRUE,
- '#default_value' => $default_db,
- '#maxlength' => 255,
- );
- $form['fields']['description']= array(
- '#type' => 'textarea',
- '#title' => t('Description'),
- '#description' => t('Please enter a description for this database'),
- '#default_value' => $default_desc,
- '#maxlength' => 255,
- );
- $form['fields']['url']= array(
- '#type' => 'textfield',
- '#title' => t('URL'),
- '#description' => t('Please enter the web address for this database.'),
- '#default_value' => $default_url,
- '#maxlength' => 255,
- );
- $form['fields']['urlprefix']= array(
- '#type' => 'textfield',
- '#title' => t('URL prefix'),
- '#description' => t('Tripal can provide links to external databases when accession numbers or unique identifiers are known. Typically, a database will provide a unique web address for each accession and the accession usually is the last component of the page address. Please enter the web address, minus the accession number for this database. When an accession number is present, Tripal will combine this web address with the accession and provide a link to the external site.'),
- '#default_value' => $default_urlprefix,
- '#maxlength' => 255,
- );
- return $form;
- }
- function tripal_db_db_add_form_validate($form, &$form_state) {
- tripal_db_form_fields_validate($form, $form_state);
- }
- function tripal_db_db_edit_form_validate($form, &$form_state) {
- tripal_db_form_fields_validate($form, $form_state);
- }
- function tripal_db_form_fields_validate($form, &$form_state) {
- $name = array_key_exists('name', $form_state['values']) ? trim($form_state['values']['name']) : '';
- $desc = array_key_exists('description', $form_state['values']) ? trim($form_state['values']['description']) : '';
- $url = array_key_exists('url', $form_state['values']) ? trim($form_state['values']['url']) : '';
- $urlp = array_key_exists('urlprefix', $form_state['values']) ? trim($form_state['values']['urlprefix']) : '';
- $dbid = array_key_exists('dbid', $form_state['values']) ? trim($form_state['values']['dbid']) : '';
-
-
- $values = array('name' => $name);
- $results = tripal_core_chado_select('db', array('db_id'), $values);
- if (count($results) > 0 and $results[0]->db_id != $dbid) {
- form_set_error('name', 'The database name must be unique');
- }
- }
- function tripal_db_db_add_form_submit($form, &$form_state) {
- $name = array_key_exists('name', $form_state['values']) ? trim($form_state['values']['name']) : '';
- $desc = array_key_exists('description', $form_state['values']) ? trim($form_state['values']['description']) : '';
- $url = array_key_exists('url', $form_state['values']) ? trim($form_state['values']['url']) : '';
- $urlp = array_key_exists('urlprefix', $form_state['values']) ? trim($form_state['values']['urlprefix']) : '';
- $values = array(
- 'name' => $name,
- 'description' => $desc,
- 'url' => $url,
- 'urlprefix' => $urlp,
- );
- $success = tripal_core_chado_insert('db', $values);
- if ($success) {
- drupal_set_message(t("External database added"));
- }
- else {
- drupal_set_message(t("Failed to add external database."));
- }
- }
- function tripal_db_db_edit_form_submit($form, &$form_state) {
- $name = array_key_exists('name', $form_state['values']) ? trim($form_state['values']['name']) : '';
- $desc = array_key_exists('description', $form_state['values']) ? trim($form_state['values']['description']) : '';
- $url = array_key_exists('url', $form_state['values']) ? trim($form_state['values']['url']) : '';
- $urlp = array_key_exists('urlprefix', $form_state['values']) ? trim($form_state['values']['urlprefix']) : '';
- $dbid = array_key_exists('dbid', $form_state['values']) ? trim($form_state['values']['dbid']) : '';
- $op = trim($form_state['values']['op']);
- $values = array(
- 'name' => $name,
- 'description' => $desc,
- 'url' => $url,
- 'urlprefix' => $urlp,
- );
- if (strcmp($op, 'Update')==0) {
- $match = array('db_id' => $dbid);
- $success = tripal_core_chado_update('db', $match, $values);
- if ($success) {
- drupal_set_message(t("External database updated"));
- }
- else {
- drupal_set_message(t("Failed to update external database."));
- }
- }
- if (strcmp($op, 'Delete')==0) {
- $match = array('db_id' => $dbid);
- $success = tripal_core_chado_delete('db', $match);
- if ($success) {
- drupal_set_message(t("External database deleted"));
- }
- else {
- drupal_set_message(t("Failed to delete external database."));
- }
- }
- }
- function tripal_db_edit_form_ajax($form, $form_state) {
-
- $elements = array();
-
-
- if (array_key_exists('dbid', $form_state['values'])) {
- $elements['fields'] = $form['fields'];
- $elements['update'] = $form['update'];
- $elements['delete'] = $form['delete'];
- }
-
-
- $elements['fields']['#prefix'] = '<div id="db-edit-div">';
- $elements['fields']['#suffix'] = '</div">';
-
-
- $elements['fields']['name']['#value'] = $elements['fields']['name']['#default_value'];
- $elements['fields']['description']['#value'] = $elements['fields']['description']['#default_value'];
- $elements['fields']['url']['#value'] = $elements['fields']['url']['#default_value'];
- $elements['fields']['urlprefix']['#value'] = $elements['fields']['urlprefix']['#default_value'];
-
-
-
- return $elements;
- }
|