function tripal_views_integration_form

2.x tripal_views_integration_UI.inc tripal_views_integration_form($form, &$form_state)
1.x tripal_views_integration.inc tripal_views_integration_form(&$form_state, $setup_id = NULL)

Purpose: defines the web form used for specifing the base table, joins and handlers when integrating a table with views. This form is used for both creating a new record and editing an existing record.

Parameters

$form_state: The form state which is passed automatically by drupal

$setup_id: The unique setup for an integrated table. This value is only set when the form is used for updating an existing record.

Return value

A proper Drupal form associative array.

2 string references to 'tripal_views_integration_form'
tripal_views_menu in tripal_views/tripal_views.module
Implements hook_menu()
tripal_views_theme in tripal_views/tripal_views.module
Implements hook_theme()

File

tripal_views/includes/tripal_views_integration.inc, line 156
Functions related to the UI for integrating tables with views

Code

function tripal_views_integration_form(&$form_state, $setup_id = NULL) {

  $form = array();
  $data = array();
  $form['#cache'] = TRUE;

  // initialize Tripal AHAH
  tripal_core_ahah_init_form();

  // if a setup_id is provided then we want to get the form defaults
  $setup_obj = array();
  if (isset($setup_id)) {

    // get the deafult setup values
    $sql = "SELECT * FROM {tripal_views} WHERE setup_id = %d";
    $setup_obj = db_fetch_object(db_query($sql, $setup_id));
    $mview_id = $setup_obj->mview_id;
    $table_name = $setup_obj->table_name;
    $form_state['values']['mview_id'] = $mview_id;
    $form_state['values']['table_name'] = $table_name;

    // get the default field name/description
    $sql = "SELECT * FROM {tripal_views_field} WHERE setup_id=%d";
    $query = db_query($sql, $setup_id);
    $default_fields = array();
    while ($field = db_fetch_object($query)) {
      $default_fields[$field->column_name]['name'] = $field->name;
      $default_fields[$field->column_name]['description'] = $field->description;
    }

    // get the default join settings and handlers
    $sql = "SELECT * FROM {tripal_views_join} WHERE setup_id = %d";
    $query = db_query($sql, $setup_id);
    $default_joins = array();
    while ($join = db_fetch_object($query)) {
      $default_joins[$join->base_field]['left_table'] = $join->left_table;
      $default_joins[$join->base_field]['left_field'] = $join->left_field;
    }

    // get the default handlers
    $sql = "SELECT * FROM {tripal_views_handlers} WHERE setup_id = %d";
    $query = db_query($sql, $setup_id);
    $default_handlers = array();
    while ($handler = db_fetch_object($query)) {
      $default_handlers[$handler->column_name][$handler->handler_type]['handler_name'] = $handler->handler_name;
      $default_handlers[$handler->column_name][$handler->handler_type]['arguments'] = $handler->arguments;
    }

    // get the default join handlers
    $sql = "SELECT * FROM {tripal_views_join} WHERE setup_id = %d";
    $query = db_query($sql, $setup_id);
    while ($handler = db_fetch_object($query)) {
      $default_handlers[$handler->base_field]['join']['handler_name'] = $handler->handler;
      //$default_handlers[$handler->base_field]['join']['arguments'] = $handler->arguments;
    }

    // add in the setup_id for the form so we know this is an update not an insert
    $form['setup_id'] = array(
      '#type' => 'hidden',
      '#value' => $setup_id,
    );
  }

  // add a fieldset for the MView & Chado table selectors
  $form['base_table_type'] = array(
    '#type' => 'fieldset',
    '#title' => 'Base Table',
    '#description' => 'Please select either a materialized view or a Chado table for integration with ' .
      'Drupal Views.  In Drupal Views terminology, the selected table becomes the "base table". ' .
      'After you select a table from either list, the fields from that table will appear below ' .
      'and you can specify other tables to join with and handlers.',
  );

  // build the form element for the Chado tables
  $chado_tables = tripal_core_get_chado_tables(TRUE);
  $chado_tables = array_merge(array('Select'), $chado_tables);
  $form['base_table_type']['table_name'] = array(
    '#title' => t('Chado/Custom Table'),
    '#type' => 'select',
    '#options' => $chado_tables,
    '#description' => t('Tables from Chado, custom tables and materialized view tables (non-legacy MViews) can be selected for integration.'),
    '#default_value' => (!$setup_obj->mview_id) ? $setup_obj->table_name : '',
    '#ahah' => array(
      'path' => 'tripal/views/integration/ajax/view_setup_table',
      'wrapper' => 'table-rows-div',
      'effect' => 'fade',
      'event' => 'change',
      'method' => 'replace',
    ),
  );


  // build the form element that lists the materialized views
  $query = db_query("SELECT mview_id, name FROM {tripal_mviews} WHERE mv_schema is NULL or mv_schema = '' ORDER BY name");
  $mview_tables = array();
  $mview_tables['0'] = 'Select';
  while ($mview = db_fetch_object($query)) {
    $mview_tables[$mview->mview_id] = $mview->name;
  }
  $form['base_table_type']['mview_id'] = array(
    '#title' => t('Legacy Materialized View'),
    '#type' => 'select',
    '#options' => $mview_tables,
    '#description' => 'Which materialized view to use.',
    '#default_value' => $setup_obj->mview_id,
    '#ahah' => array(
      'path' => 'tripal/views/integration/ajax/view_setup_table',
      'wrapper' => 'table-rows-div',
      'effect' => 'fade',
      'event' => 'change',
      'method' => 'replace',
    ),
  );

  $form['views_type'] = array(
    '#type' => 'fieldset',
    '#title' => 'View Type',
    '#description' => 'Here you can provide the "type" of View you want to create.',
  );

  // field for the name of the
  $form['views_type']['row_name'] = array(
    '#title' => t('View Type Name'),
    '#type' => 'textfield',
    '#default_value' => $setup_obj->name,
    '#size' => 60,
    '#maxlength' => 128,
    '#description' => 'Provide the view type name.  This is the name that will appear in ' .
      'the Drupal Views interface when adding a new view.  The view type name ' .
      'must be unique.',
    '#required' => TRUE,
  );

  if (isset($setup_id)) {
    $form['row_name']['#attributes'] = array('readonly' => 'readonly');
  }

  $priorities = array();
  foreach (range(-10, 10) as $v) {
    $priorities[$v] = (string) $v;
  }
  $form['views_type']['row_priority'] = array(
    '#type' => 'select',
    '#title' => t('Priority'),
    '#description' => t('The level of priority your Views integration has in relation to the '
      . 'default core and module definitions. The views integration definition with the '
      . 'lightest priority will be used. For example, if there is a definition created by '
      . 'core with a priority of 10 and another by a custom module of 5 and yours is -1 then '
      . 'you definition will be used for that table because -1 is lighter then both 5 and 10.'),
    '#options' => $priorities,
    '#default_value' => (isset($setup_obj->priority)) ? $setup_obj->priority : -1,
  );
  if ($setup_obj->priority >= 9) {
    drupal_set_message('You are editing a default views integration. To ensure your changes
    are used, change the priority to -10.', 'warning');
  }

  $form['views_type']['new_integration'] = array(
    '#type' => 'checkbox',
    '#title' => t('Create a New Tripal Views Integration Record'),
    '#description' => t('If this checkbox is checked then a new tripal views integration '
      . 'will be created rather then overriding the current one with your changes. This '
      . 'especially important if you are editing one of the default views integrations '
      . '(ie: if the original priority was either 10 or 9).'),
    '#default_value' => ($setup_obj->priority >= 9) ? true : false,
  );

  $form['views_type']['base_table'] = array(
    '#type' => 'checkbox',
    '#title' => t('Base Table?'),
    '#description' => t('If you want this table to show up as one of the options in the '
      . 'add view page, then check this checkbox. It allows you to create listings '
      . 'primarily from this table'),
    '#default_value' => (isset($setup_obj->base_table)) ? $setup_obj->base_table : 1,
  );

  $form['views_type']['row_description'] = array(
    '#title' => t('Comment'),
    '#type' => 'textarea',
    '#description' => '(Optional). Provide any details regarding this setup you would like. This ' .
      'description will appear when selecting a type for a new Drupal View',
    '#required' => FALSE,
    '#default_value' => (isset($setup_obj->comment)) ? $setup_obj->comment : '',
  );

  // we need a div block where the table fields will get put when the
  // AHAH callback is made
  $form['view_setup_table'] = array(
    '#type' => 'item',
    '#prefix' => '<div id="table-rows-div">',
    '#suffix' => '</div>',
  );


  // add the fieldset for the table fields, but only if the $mview_id or $table_name
  // is set. The only times these values are set is if we're editing an existing
  // record or if the AHAH callback is being made.
  if ($form_state['values']['mview_id'] or $form_state['values']['table_name']) {
    $mview_id = $form_state['values']['mview_id'];
    $table_name = $form_state['values']['table_name'];
    $form['view_setup_table'] = array(
      '#type' => 'fieldset',
      '#title' => 'Join Selection',
      '#prefix' => '<div id="fieldset-table-rows-wrapper">',
      '#suffix' => '</div>',
    );

    // get the columns in this materialized view.  They are separated by commas
    // where the first word is the column name and the rest is the type
    $columns = array();
    if ($mview_id) {
      $sql = "SELECT mv_specs FROM {tripal_mviews} WHERE mview_id = %d";
      $mview = db_fetch_object(db_query($sql, $mview_id));
      $columns = explode(",", $mview->mv_specs);
    }
    else {
      $table_desc = tripal_core_get_chado_table_schema($table_name);
      if ($table_desc) {
        $fields = $table_desc['fields'];
        // iterate through the columns and build the format
        // compatible with the code below. The column name is first followed
        // by the type with a separating space
        foreach ($fields as $column => $attrs) {
          $columns[] = "$column " . $attrs['type'];
        }
      }
    }

    $i = 1;
    $form['view_setup_table']["instructions"] = array(
      '#type' => 'markup',
      '#value' => filter_xss("Select an optional table to which the fields of the " .
        "materialized view can join.  If a field does not need to " .
        "join you may leave the selection blank."),
    );
    $data['field_types'] = array();

    // get the list of chado tables to join on
    $chado_join_tables = tripal_core_get_chado_tables(TRUE);
    $chado_join_tables = array_merge(array('Select a Join Table'), $chado_join_tables);

    // get list of all handlers
    $all_handlers = tripal_views_integration_discover_handlers();
    $handlers_fields = array(0 => "Select a field handler");
    $handlers_filters = array(0 => "Select a filter handler");
    $handlers_sort = array(0 => "Select a sort handler");
    $handlers_argument = array(0 => "Select an argument handler");
    $handlers_join = array(0 => "Select a join handler");
    $handlers_rel = array(0 => "Select a relationship handler");
    foreach ($all_handlers as $handler) {
      if (preg_match("/views_handler_field/", $handler)) {
        $handlers_fields[$handler] = $handler;
      }
      if (preg_match("/views_handler_filter/", $handler)) {
        $handlers_filters[$handler] = $handler;
      }
      if (preg_match("/views_handler_sort/", $handler)) {
        $handlers_sort[$handler] = $handler;
      }
      if (preg_match("/views_handler_argument/", $handler)) {
        $handlers_argument[$handler] = $handler;
      }
      if (preg_match("/_join/", $handler)) {
        $handlers_join[$handler] = $handler;
      }
      if (preg_match("/views_handler_relationship/", $handler)) {
        $handlers_rel[$handler] = $handler;
      }
    }

    // generate a unique $table_id for keeping track of the table
    if ($mview_id) {
      $table_id = $mview_id;
    }
    else {
      $table_id = $table_name;
    }

    // Per Row (Fields) --------------
    // now iterate through the columns of the materialized view or
    // chado table and generate the join and handler fields
    foreach ($columns as $column) {
      $column = trim($column); // trim trailing and leading spaces
      preg_match("/^(.*?)\ (.*?)$/", $column, $matches);
      $column_name = $matches[1];
      $column_type = $matches[2];

      $form['view_setup_table']["$table_id-$i"] = array(
        '#type' => 'markup',
        '#prefix' => "<div class=\"fields-new-row\">",
        '#suffix' => "</div>",
        '#value' => filter_xss('')
      );

      // COLUMN I
      $form['view_setup_table']["$table_id-$i"]["fields_name_$table_id-$i"] = array(
        '#type' => 'markup',
        '#prefix' => "<div class=\"column-one\">",
        '#value' => "<span class=\"column-name\">" . filter_xss($column_name) . "</span>" .
          "<br /><span class=\"column-type\">" . filter_xss($column_type) . "</span>",
        '#suffix' => "</div>",
      );
      $data['field_types'][$column_name] = $column_type;

      // COLUMN II
      $form['view_setup_table']["$table_id-$i"]['column-2'] = array(
        '#type' => 'markup',
        '#prefix' => "<div class=\"column-two\">",
        '#suffix' => "</div>",
        '#value' => filter_xss('')
      );

      // set the default values for the human-readable name and description
      $default_name = '';
      $default_descrip = '';
      if (isset($setup_id) && !isset($form_state['values']["fields_readable_name_$table_id-$i"])) {
        $default_name = $default_fields[$column_name]['name'];
        $default_descrip = $default_fields[$column_name]['description'];
      }
      else {
        $default_name = $form_state['values']["fields_readable_name_$table_id-$i"];
        $default_descrip = $form_state['values']["fields_description_$table_id-$i"];
      }
      $form['view_setup_table']["$table_id-$i"]['column-2']["fields_readable_name_$table_id-$i"] = array(
        '#type' => 'textfield',
        '#title' => 'Human-Readable Name',
        '#description' => 'This is the name of the field in the Views UI',
        '#required' => TRUE,
        '#default_value' => $default_name,
        '#size' => 42,
      );

      $form['view_setup_table']["$table_id-$i"]['column-2']["fields_description_$table_id-$i"] = array(
        '#type' => 'textarea',
        '#title' => 'Short Description',
        '#description' => 'This is the field help in the Views UI',
        '#required' => TRUE,
        '#cols' => 42,
        '#rows' => 3,
        '#default_value' => $default_descrip,
      );

      // COLUMN III
      $form['view_setup_table']["$table_id-$i"]['column-3'] = array(
        '#type' => 'markup',
        '#prefix' => "<div class=\"column-three\">",
        '#suffix' => "</div>",
        '#value' => filter_xss('')
      );

      // set the default values for the join table and columns
      $default_join_table = 0;
      $default_join_field = 0;
      if (isset($setup_id) && !isset($form_state['values']["fields_join_$table_id-$i"])) {
        $default_join_table = $default_joins[$column_name]['left_table'];
        $default_join_field = $default_joins[$column_name]['left_field'];
        $form_state['values']["fields_join_$table_id-$i"] = $default_join_table;
        $form_state['values']["fields_join_column_$table_id-$i"] = $default_join_field;
      }
      else {
        $default_join_table = $form_state['values']["fields_join_$table_id-$i"];
        $default_join_field = $form_state['values']["fields_join_column_$table_id-$i"];
      }

      $form['view_setup_table']["$table_id-$i"]['column-3']["fields_join_$table_id-$i"] = array(
        '#type' => 'select',
        '#prefix' => "<div class=\"fields-column-join\">",
        '#suffix' => "</div>",
        '#options' => $chado_join_tables,
        '#required' => FALSE,
        '#default_value' => $default_join_table,
        '#ahah' => array(
          'path' => "tripal/views/integration/ajax/join_field/$table_id-$i/fields_join_column_$table_id-$i",
          'wrapper' => "fields-column-join-column-$table_id-$i",
          'effect' => 'fade',
          'event' => 'change',
          'method' => 'replace',
        ),
      );

      $columns = array();
      if ($default_join_table) {
        // get the table description
        $table_desc = tripal_core_get_chado_table_schema($default_join_table);
        foreach ($table_desc['fields'] as $column => $def) {
          $columns[$column] = $column;
        }
      }
      else {
        $columns = array('Select Join Column');
      }
      $form['view_setup_table']["$table_id-$i"]['column-3']["fields_join_column_$table_id-$i"] = array(
        '#type' => 'select',
        '#prefix' => "  <div id=\"fields-column-join-column-$table_id-$i\" class=\"fields-column-join-column\">",
        '#suffix' => "</div>",
        '#options' => $columns,
        '#required' => FALSE,
        '#default_value' => $default_join_field
      );

      $default_join_handler = 0;
      if (isset($setup_id) && !isset($form_state['values']["fields_join_handler_$table_id-$i"])) {
        $default_join_handler = $default_handlers[$column_name]['join']['handler_name'];
        $form_state['values']["fields_join_handler_$table_id-$i"] = $default_join_handler;
      }
      else {
        $default_join_handler = $form_state['values']["fields_join_handler_$table_id-$i"];
      }
      $form['view_setup_table']["$table_id-$i"]['column-3']["fields_join_handler_$table_id-$i"] = array(
        '#type' => 'select',
        '#prefix' => "<div class=\"fields-join-handler\">",
        '#suffix' => "</div>",
        '#options' => $handlers_join,
        '#required' => FALSE,
        '#default_value' => $default_join_handler,
      );

      // COLUMN 4
      $form['view_setup_table']["$table_id-$i"]['column-4'] = array(
        '#type' => 'markup',
        '#prefix' => "<div class=\"column-four\">",
        '#suffix' => "</div>",
        '#value' => filter_xss('')
      );

      // create the handler fields
      $default_field_handler = 0;
      if (isset($setup_id) && !isset($form_state['values']["fields_field_handler_$table_id-$i"])) {
        $default_field_handler = $default_handlers[$column_name]['field']['handler_name'];
        $form_state['values']["fields_field_handler_$table_id-$i"] = $default_field_handler;
      }
      else {
        $default_field_handler = $form_state['values']["fields_field_handler_$table_id-$i"];
        if (!$default_field_handler) {
          if ($column_type == 'integer' or $column_type == 'int' or $column_type == 'serial') {
            $default_field_handler = 'chado_views_handler_field_numeric';
          }
          elseif (preg_match("/character varying/", $column_type) or $column_type == 'char' or $column_type == 'text' or $column_type == 'varchar') {
            $default_field_handler = 'chado_views_handler_field';
          }
          elseif ($column_type == 'boolean') {
            $default_field_handler = 'chado_views_handler_field_boolean';
          }
          elseif ($column_type == 'float') {
            $default_field_handler = 'chado_views_handler_field_numeric';
          }
          elseif ($column_type == 'datetime') {
            $default_field_handler = 'chado_views_handler_field_date';
          }
        }
      }

      $form['view_setup_table']["$table_id-$i"]['column-4']["fields_field_handler_$table_id-$i"] = array(
        '#type' => 'select',
        '#prefix' => "<div class=\"fields-field-handler\">",
        '#suffix' => "</div>",
        '#options' => $handlers_fields,
        '#required' => FALSE,
        '#default_value' => $default_field_handler,
      );

      $default_filter_handler = 0;
      if (isset($setup_id) && !isset($form_state['values']["fields_filter_handler_$table_id-$i"])) {
        $default_filter_handler = $default_handlers[$column_name]['filter']['handler_name'];
        $form_state['values']["fields_filter_handler_$table_id-$i"] = $default_filter_handler;
      }
      else {
        $default_filter_handler = $form_state['values']["fields_filter_handler_$table_id-$i"];
        if (!$default_filter_handler) {
          if ($column_type == 'integer' or $column_type == 'int' or $column_type == 'serial') {
            $default_filter_handler = 'chado_views_handler_filter_numeric';
          }
          elseif (preg_match("/^character varying/", $column_type) or $column_type == 'char' or $column_type == 'text' or $column_type == 'varchar') {
            $default_filter_handler = 'chado_views_handler_filter_string';
          }
          elseif ($column_type == 'boolean') {
            $default_filter_handler = 'chado_views_handler_filter_boolean';
          }
          elseif ($column_type == 'float') {
            $default_filter_handler = 'chado_views_handler_filter_float';
          }
          elseif ($column_type == 'datetime') {
            $default_filter_handler = 'chado_views_handler_filter_date';
          }
        }
      }
      $form['view_setup_table']["$table_id-$i"]['column-4']["fields_filter_handler_$table_id-$i"] = array(
        '#type' => 'select',
        '#prefix' => "<div class=\"fields-filter-handler\">",
        '#suffix' => "</div>",
        '#options' => $handlers_filters,
        '#required' => FALSE,
        '#default_value' => $default_filter_handler,
      );

      $default_sort_handler = 0;
      if (isset($setup_id) && !isset($form_state['values']["fields_sort_handler_$table_id-$i"])) {
        $default_sort_handler = $default_handlers[$column_name]['sort']['handler_name'];
        $form_state['values']["fields_sort_handler_$table_id-$i"] = $default_sort_handler;
      }
      else {
        $default_sort_handler = $form_state['values']["fields_sort_handler_$table_id-$i"];
        if (!$default_sort_handler) {
          if ($column_type == 'integer' or $column_type == 'int' or $column_type == 'serial') {
            $default_sort_handler = 'chado_views_handler_sort';
          }
          elseif (preg_match("/character varying/", $column_type) or $column_type == 'char' or $column_type == 'text' or $column_type == 'varchar') {
            $default_sort_handler = 'chado_views_handler_sort';
          }
          elseif ($column_type == 'boolean') {
            $default_sort_handler = 'chado_views_handler_sort';
          }
          elseif ($column_type == 'float') {
            $default_sort_handler = 'chado_views_handler_sort';
          }
          elseif ($column_type == 'datetime') {
            $default_sort_handler = 'chado_views_handler_sort_date';
          }
        }
      }
      $form['view_setup_table']["$table_id-$i"]['column-4']["fields_sort_handler_$table_id-$i"] = array(
        '#type' => 'select',
        '#prefix' => "<div class=\"fields-sort-handler\">",
        '#suffix' => "</div>",
        '#options' => $handlers_sort,
        '#required' => FALSE,
        '#default_value' => $default_sort_handler,
      );

      $default_argument_handler = 0;
      if (isset($setup_id) && !isset($form_state['values']["fields_argument_handler_$table_id-$i"])) {
        $default_argument_handler = $default_handlers[$column_name]['argument']['handler_name'];
        $form_state['values']["fields_argument_handler_$table_id-$i"] = $default_argument_handler;
      }
      else {
        $default_argument_handler = $form_state['values']["fields_argument_handler_$table_id-$i"];
        if (!$default_argument_handler) {
          if ($column_type == 'integer' or $column_type == 'int' or $column_type == 'serial') {
            $default_argument_handler = 'views_handler_argument_numeric';
          }
          elseif (preg_match("/character varying/", $column_type) or $column_type == 'char' or $column_type == 'text' or $column_type == 'varchar') {
            $default_argument_handler = 'views_handler_argument_string';
          }
          elseif ($column_type == 'boolean') {
            $default_argument_handler = 'views_handler_argument_numeric';
          }
          elseif ($column_type == 'float') {
            $default_argument_handler = 'views_handler_argument_numeric';
          }
          elseif ($column_type == 'datetime') {
            $default_argument_handler = 'views_handler_argument_date';
          }
        }
      }
      $form['view_setup_table']["$table_id-$i"]['column-4']["fields_argument_handler_$table_id-$i"] = array(
        '#type' => 'select',
        '#prefix' => "<div class=\"fields-argument-handler\">",
        '#suffix' => "</div>",
        '#options' => $handlers_argument,
        '#required' => FALSE,
        '#default_value' => $default_argument_handler,
      );

      $default_relationship_handler = 0;
      if (isset($setup_id) && !isset($form_state['values']["fields_relationship_handler_$table_id-$i"])) {
        $default_relationship_handler = $default_handlers[$column_name]['relationship']['handler_name'];
        $form_state['values']["fields_relationship_handler_$table_id-$i"] = $default_relationship_handler;
      }
      else {
        $default_relationship_handler = $form_state['values']["fields_relationship_handler_$table_id-$i"];
        if (!$default_relationship_handler) {
          if ($column_type == 'integer' or $column_type == 'int' or $column_type == 'serial') {
            $default_relationship_handler = 'views_handler_relationship';
          }
          elseif (preg_match("/character varying/", $column_type) or $column_type == 'char' or $column_type == 'text' or $column_type == 'varchar') {
            $default_relationship_handler = 'views_handler_relationship';
          }
          elseif ($column_type == 'boolean') {
            $default_relationship_handler = 'views_handler_relationship';
          }
          elseif ($column_type == 'float') {
            $default_relationship_handler = 'views_handler_relationship';
          }
          elseif ($column_type == 'datetime') {
            $default_relationship_handler = 'views_handler_relationship';
          }
        }
      }
      $form['view_setup_table']["$table_id-$i"]['column-4']["fields_relationship_handler_$table_id-$i"] = array(
        '#type' => 'select',
        '#prefix' => "<div class=\"fields-relationship-handler\">",
        '#suffix' => "</div>",
        '#options' => $handlers_rel,
        '#required' => FALSE,
        '#default_value' => $default_relationship_handler,
      );

      $i++;
    }
    $form['view_setup_table']['save'] = array(
      '#type' => 'submit',
      '#value' => t('Save'),
    );

    $data['row_count'] = $i - 1;
  }

  //use this to put values into $form_state['values']
  $form['data'] = array();

  // Ensure that we don't store an array
  // since we will get a check_plain:htmlspecial_characters error if we do
  foreach ($data as $key => $value) {
    if (is_array($value)) {
      $form['data'][$key] = array(
        '#type' => 'hidden',
        '#value' => serialize($value),
      );
    }
    else {
      $form['data'][$key] = array(
        '#type' => 'hidden',
        '#value' => $value,
      );
    }
  }

  $form['#redirect'] = 'admin/tripal/views/integration/list';

  return $form;
}