'); $breadcrumb[] = l('Administration', 'admin'); $breadcrumb[] = l('Tripal', 'admin/tripal'); $breadcrumb[] = l('Chado Modules', 'admin/tripal/chado'); $breadcrumb[] = l('Vocabularies', 'admin/tripal/chado/tripal_cv'); drupal_set_breadcrumb($breadcrumb); // Add the view $cvs_view = views_embed_view('tripal_cv_admin_cvs','default'); $cvterms_view = views_embed_view('tripal_cv_admin_cvterms','default'); if (isset($cvs_view) && isset($cvterms_view)) { $output .= $cvs_view; } else { $output .= '

The Tripal Controlled Vocabulary module uses primarily views to provide an ' . 'administrative interface. Currently one or more views needed for this ' . 'administrative interface are disabled. Click each of the following links to ' . 'enable the pertinent views:

'; $output .= ''; } return $output; } /** * */ function tripal_cv_admin_set_defaults_form() { $form = array(); $form['instructions'] = array( '#markup' => t('Much of the data housed in Chado is typed, meaning that a ' . 'controlled vocabulary describes what type of data the record is. For example, '. 'a feature must have a "type" which is typically a term from ' . 'the Sequence Ontology. Record properties typically have a type as well. '. 'Tripal allows the administrator to set a default type for each table in '. 'Chado that requires a type from a vocabulary. By default, autocomplete fields, '. 'type select boxes and type validation occur using the default vocabularies set below. '), ); // get the list of all tables that use the cvterm table as an FK $cvterm_schema = chado_get_schema('cvterm'); $referring_tables = $cvterm_schema['referring_tables']; // get the list of tables that already have default set $cv_defaults = db_select('tripal_cv_defaults', 'TCD') ->fields('TCD', array('cv_default_id', 'table_name', 'field_name', 'cv_id')) ->orderBy('table_name', 'ASC') ->execute(); // get the list of vocabularies $cvs = tripal_get_cv_select_options(); $form['settings'] = array( '#type' => 'fieldset', '#title' => t('Configured Defaults'), '#description' => t('The following tables have a default vocabulary'), '#tree' => TRUE, ); foreach ($cv_defaults as $cv_default) { $cv_default_id = $cv_default->cv_default_id; $cv = tripal_get_cv(array('cv_id' => $cv_default->cv_id)); $form['settings']['existing'][$cv_default_id]["id"] = array( '#type' => 'hidden', '#value' => $cv_default_id, ); $form['settings']['existing'][$cv_default_id]["table_name"] = array( '#type' => 'markup', '#markup' => $cv_default->table_name ); $form['settings']['existing'][$cv_default_id]["field_name"] = array( '#type' => 'markup', '#markup' => $cv_default->field_name ); $form['settings']['existing'][$cv_default_id]["vocabulary"] = array( '#type' => 'select', '#options' => $cvs, '#default_value' => $cv_default->cv_id, '#suffix' => 'View terms' ); // remove button $form['settings']['existing'][$cv_default_id]['remove'] = array( '#type' => 'submit', '#value' => t('Remove'), '#name' => "cv_remove-$cv_default_id", '#ajax' => array( 'callback' => "tripal_cv_admin_set_defaults_ajax_update", 'wrapper' => 'tripal-generic-edit-properties-table', 'effect' => 'fade', 'method' => 'replace', 'prevent' => 'click' ), // When this button is clicked, the form will be validated and submitted. // Therefore, we set custom submit and validate functions to override the // default node form submit. In the validate function we validate only the // property fields and in the submit we remove the indicated property // from the chado_properties array. In order to keep validate errors // from the node form validate and Drupal required errors for non-property fields // preventing the user from removing properties we set the #limit_validation_errors below '#validate' => array('chado_add_node_form_properties_remove_button_validate'), '#submit' => array('chado_add_node_form_properties_remove_button_submit'), // Limit the validation of the form upon clicking this button to the property_table tree // No other fields will be validated (ie: no fields from the main form or any other api // added form). '#limit_validation_errors' => array( array('property_table') // Validate all fields within $form_state['values']['property_table'] ) ); } return $form; } /** * * @param unknown $variables */ function theme_tripal_cv_admin_set_defaults_form($variables) { $element = $variables['element']; $header = array( 'table_name' => array('data' => t('Table Name'), 'width' => '20%'), 'field_name' => array('data' => t('Field Name'), 'width' => '20%'), 'vocabulary' => array('data' => t('Default Vocabulary'), 'width' => '40%'), 'property_action' => array('data' => t('Actions'), 'width' => '20%'), ); $rows = array(); foreach ($element['settings']['existing'] as $key => $value) { if (is_numeric($key)) { $rows[] = array( drupal_render($value['table_name']), drupal_render($value['field_name']), drupal_render($value['vocabulary']), drupal_render($value['remove']), ); } } $settings_table = theme('table', array( 'header' => $header, 'rows' => $rows )); $element['settings']['existing'] = array( '#type' => 'markup', '#markup' => $settings_table, ); return drupal_render_children($element); }