|  | @@ -13,9 +13,8 @@ function tripal_chado_migrate_form($form, &$form_state) {
 | 
	
		
			
				|  |  |    $form['overview_vert_tabs'] = array(
 | 
	
		
			
				|  |  |      '#type' => 'vertical_tabs'
 | 
	
		
			
				|  |  |    );
 | 
	
		
			
				|  |  | -  $form['modes']['#group'] = 'overview_vert_tabs';
 | 
	
		
			
				|  |  | -  $form['modes']['#weight'] = 1000;
 | 
	
		
			
				|  |  | -  $form['modes']['#default_tab'] = $_SESSION['tripal_migrate_current_tab'];
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +  $form['overview_vert_tabs']['#default_tab'] = key_exists('tripal_migrate_current_tab', $_SESSION) ? $_SESSION['tripal_migrate_current_tab'] : 'edit-step1';
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |    $form['instructions'] = array(
 | 
	
		
			
				|  |  |      '#type' => 'item',
 | 
	
	
		
			
				|  | @@ -230,10 +229,10 @@ function tripal_chado_migrate_form($form, &$form_state) {
 | 
	
		
			
				|  |  |          for the desired content types below.'),
 | 
	
		
			
				|  |  |    );
 | 
	
		
			
				|  |  |    // Get a list of enabled legacy modules with tv2 templates
 | 
	
		
			
				|  |  | -  $mod_enabled = tripal_chado_migrate_get_enabled_legacy_modules(TRUE);
 | 
	
		
			
				|  |  |    $enabled_templates = variable_get('tripal_chado_enabled_legacy_templates', array());
 | 
	
		
			
				|  |  |    $info = module_invoke_all('node_info');
 | 
	
		
			
				|  |  | -  foreach ($tv2_options AS $type_name => $type_label) {
 | 
	
		
			
				|  |  | +  $options = tripal_chado_get_tripal_v2_content_type_options(FALSE, TRUE);
 | 
	
		
			
				|  |  | +  foreach ($options AS $type_name => $type_label) {
 | 
	
		
			
				|  |  |      $title = $type_label;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      if ($type_name != 'all' and !key_exists($type_name, $info)) {
 | 
	
	
		
			
				|  | @@ -246,7 +245,7 @@ function tripal_chado_migrate_form($form, &$form_state) {
 | 
	
		
			
				|  |  |      );
 | 
	
		
			
				|  |  |    }
 | 
	
		
			
				|  |  |    $form['step3']['save_btn'] = array(
 | 
	
		
			
				|  |  | -    '#type' => 'button',
 | 
	
		
			
				|  |  | +    '#type' => 'submit',
 | 
	
		
			
				|  |  |      '#name' => 'save_enabled_template_btn',
 | 
	
		
			
				|  |  |      '#value' => "Save",
 | 
	
		
			
				|  |  |    );
 | 
	
	
		
			
				|  | @@ -302,7 +301,7 @@ function tripal_chado_migrate_form($form, &$form_state) {
 | 
	
		
			
				|  |  |        );
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |      $form['step4']['submit_btn'] = array(
 | 
	
		
			
				|  |  | -      '#type' => 'button',
 | 
	
		
			
				|  |  | +      '#type' => 'submit',
 | 
	
		
			
				|  |  |        '#name' => 'complete_migration_btn',
 | 
	
		
			
				|  |  |        '#value' => "Submit",
 | 
	
		
			
				|  |  |      );
 | 
	
	
		
			
				|  | @@ -317,6 +316,18 @@ function tripal_chado_migrate_form($form, &$form_state) {
 | 
	
		
			
				|  |  |   * @param $form_state
 | 
	
		
			
				|  |  |   */
 | 
	
		
			
				|  |  |  function tripal_chado_migrate_form_validate($form, &$form_state) {
 | 
	
		
			
				|  |  | + 
 | 
	
		
			
				|  |  | +}
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +/**
 | 
	
		
			
				|  |  | + * Implements hook_submit()
 | 
	
		
			
				|  |  | + *
 | 
	
		
			
				|  |  | + * By submiting the form, a Tripal job to migrate Tripal v2 content is submitted
 | 
	
		
			
				|  |  | + *
 | 
	
		
			
				|  |  | + * @param $form
 | 
	
		
			
				|  |  | + * @param $form_state
 | 
	
		
			
				|  |  | + */
 | 
	
		
			
				|  |  | +function tripal_chado_migrate_form_submit($form, &$form_state) {
 | 
	
		
			
				|  |  |    // Store the legacy template setting in a Drupal variable
 | 
	
		
			
				|  |  |    if ($form_state['clicked_button']['#name'] == 'save_enabled_template_btn') {
 | 
	
		
			
				|  |  |      $values = $form_state['values'];
 | 
	
	
		
			
				|  | @@ -328,6 +339,7 @@ function tripal_chado_migrate_form_validate($form, &$form_state) {
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |      variable_set('tripal_chado_enabled_legacy_templates', $enabled_templates);
 | 
	
		
			
				|  |  |      drupal_theme_rebuild();
 | 
	
		
			
				|  |  | +    $_SESSION['tripal_migrate_current_tab'] = 'edit-step3';
 | 
	
		
			
				|  |  |    }
 | 
	
		
			
				|  |  |    // Complete migration
 | 
	
		
			
				|  |  |    else if ($form_state['clicked_button']['#name'] == 'complete_migration_btn') {
 | 
	
	
		
			
				|  | @@ -369,41 +381,31 @@ function tripal_chado_migrate_form_validate($form, &$form_state) {
 | 
	
		
			
				|  |  |      $includes = array(
 | 
	
		
			
				|  |  |        module_load_include('inc', 'tripal_chado', 'includes/tripal_chado.migrate'),
 | 
	
		
			
				|  |  |      );
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | +  
 | 
	
		
			
				|  |  |      if (count($config['cp_title']) > 0) {
 | 
	
		
			
				|  |  |        $args = array($config['cp_title']);
 | 
	
		
			
				|  |  |        tripal_add_job("Copy Title over to Tripal v3 Content", 'tripal_chado',
 | 
	
		
			
				|  |  | -        'tripal_chado_copy_title_for_selected_types', $args, $user->uid, 10, $includes);
 | 
	
		
			
				|  |  | +          'tripal_chado_copy_title_for_selected_types', $args, $user->uid, 10, $includes);
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |      if (count($config['mv_url']) > 0) {
 | 
	
		
			
				|  |  |        $args = array($config['mv_url']);
 | 
	
		
			
				|  |  |        tripal_add_job(" Migrate URL Alias to Tripal v3 Content ", 'tripal_chado',
 | 
	
		
			
				|  |  | -        'tripal_chado_migrate_url_alias_for_selected_types', $args, $user->uid, 10, $includes);
 | 
	
		
			
				|  |  | +          'tripal_chado_migrate_url_alias_for_selected_types', $args, $user->uid, 10, $includes);
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |      if (count($config['unpublish']) > 0) {
 | 
	
		
			
				|  |  |        $args = array($config['unpublish']);
 | 
	
		
			
				|  |  |        tripal_add_job(" Unpublish Tripal v2 Content ", 'tripal_chado',
 | 
	
		
			
				|  |  | -        'tripal_chado_unpublish_selected_types', $args, $user->uid, 10, $includes);
 | 
	
		
			
				|  |  | +          'tripal_chado_unpublish_selected_types', $args, $user->uid, 10, $includes);
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |      if (count($config['delete']) > 0) {
 | 
	
		
			
				|  |  |        $args = array($config['delete']);
 | 
	
		
			
				|  |  |        tripal_add_job("Delete Tripal v2 Content ", 'tripal_chado',
 | 
	
		
			
				|  |  | -        'tripal_chado_delete_selected_types', $args, $user->uid, 10, $includes);
 | 
	
		
			
				|  |  | +          'tripal_chado_delete_selected_types', $args, $user->uid, 10, $includes);
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  | +    $_SESSION['tripal_migrate_current_tab'] = 'edit-step4';
 | 
	
		
			
				|  |  |      return;
 | 
	
		
			
				|  |  |    }
 | 
	
		
			
				|  |  | -}
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -/**
 | 
	
		
			
				|  |  | - * Implements hook_submit()
 | 
	
		
			
				|  |  | - *
 | 
	
		
			
				|  |  | - * By submiting the form, a Tripal job to migrate Tripal v2 content is submitted
 | 
	
		
			
				|  |  | - *
 | 
	
		
			
				|  |  | - * @param $form
 | 
	
		
			
				|  |  | - * @param $form_state
 | 
	
		
			
				|  |  | - */
 | 
	
		
			
				|  |  | -function tripal_chado_migrate_form_submit($form, &$form_state) {
 | 
	
		
			
				|  |  | -  if ($form_state['clicked_button']['#name'] == 'migrate_btn') {
 | 
	
		
			
				|  |  | +  else if ($form_state['clicked_button']['#name'] == 'migrate_btn') {
 | 
	
		
			
				|  |  |      global $user;
 | 
	
		
			
				|  |  |      $values = $form_state['values'];
 | 
	
		
			
				|  |  |      $tv2_content_type = $form_state['values']['tv2_content_type'];
 | 
	
	
		
			
				|  | @@ -443,6 +445,7 @@ function tripal_chado_migrate_form_submit($form, &$form_state) {
 | 
	
		
			
				|  |  |      else {
 | 
	
		
			
				|  |  |        return drupal_set_message('Nothing to do. All data have been migrated or no data for migration.');
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  | +    $_SESSION['tripal_migrate_current_tab'] = 'edit-step2';
 | 
	
		
			
				|  |  |    }
 | 
	
		
			
				|  |  |  }
 | 
	
		
			
				|  |  |  
 | 
	
	
		
			
				|  | @@ -468,16 +471,17 @@ function tripal_chado_migrate_form_step2_ajax_callback(&$form, &$form_state) {
 | 
	
		
			
				|  |  |   * @return string[]
 | 
	
		
			
				|  |  |   *  Return a string array keyed by the node type
 | 
	
		
			
				|  |  |   */
 | 
	
		
			
				|  |  | -function tripal_chado_get_tripal_v2_content_type_options($all_option = FALSE) {
 | 
	
		
			
				|  |  | +function tripal_chado_get_tripal_v2_content_type_options($all_option = FALSE, $has_template = FALSE) {
 | 
	
		
			
				|  |  |    // Get all available Tripal v2 chado tables
 | 
	
		
			
				|  |  |    $sql =
 | 
	
		
			
				|  |  |    "SELECT table_name
 | 
	
		
			
				|  |  |        FROM information_schema.tables
 | 
	
		
			
				|  |  |        WHERE table_schema = 'public' AND table_name LIKE 'chado_%'";
 | 
	
		
			
				|  |  |    $result = db_query($sql);
 | 
	
		
			
				|  |  | +  // Store 'chado_*' tables that has at least one node
 | 
	
		
			
				|  |  |    $tables = array();
 | 
	
		
			
				|  |  |    while ($field = $result->fetchField()) {
 | 
	
		
			
				|  |  | -    $count = db_query("SELECT count(*) FROM $field")->fetchField();
 | 
	
		
			
				|  |  | +    $count = db_query("SELECT count(*) FROM $field LIMIT 1")->fetchField();
 | 
	
		
			
				|  |  |      if ($count != 0) {
 | 
	
		
			
				|  |  |        array_push($tables, $field);
 | 
	
		
			
				|  |  |      }
 | 
	
	
		
			
				|  | @@ -493,8 +497,17 @@ function tripal_chado_get_tripal_v2_content_type_options($all_option = FALSE) {
 | 
	
		
			
				|  |  |      $options['all'] = 'All';
 | 
	
		
			
				|  |  |    }
 | 
	
		
			
				|  |  |    while ($obj = $result->fetchObject()) {
 | 
	
		
			
				|  |  | -    if (in_array($obj->type, $tables)) {
 | 
	
		
			
				|  |  | -      $options[$obj->type] = $obj->name;
 | 
	
		
			
				|  |  | +    if ($has_template) {
 | 
	
		
			
				|  |  | +      $mod = str_replace('chado_', 'tripal_', $obj->type);
 | 
	
		
			
				|  |  | +      $mod_dir = drupal_get_path('module', $mod);
 | 
	
		
			
				|  |  | +      if (file_exists($mod_dir . '/theme/templates/' . $mod . '_base.tpl.php')) {
 | 
	
		
			
				|  |  | +        $options[$obj->type] = $obj->name;
 | 
	
		
			
				|  |  | +      }
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +    else {
 | 
	
		
			
				|  |  | +      if (in_array($obj->type, $tables)) {
 | 
	
		
			
				|  |  | +        $options[$obj->type] = $obj->name;
 | 
	
		
			
				|  |  | +      }      
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |    }
 | 
	
		
			
				|  |  |    return $options;
 | 
	
	
		
			
				|  | @@ -608,31 +621,6 @@ function tripal_chado_migrate_selected_types($tv3_content_types) {
 | 
	
		
			
				|  |  |    }
 | 
	
		
			
				|  |  |  }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -/**
 | 
	
		
			
				|  |  | - * Get a list of enabled legacy modules
 | 
	
		
			
				|  |  | - *
 | 
	
		
			
				|  |  | - * return an associated array with value of module directory and keyed by the module name
 | 
	
		
			
				|  |  | - */
 | 
	
		
			
				|  |  | -function tripal_chado_migrate_get_enabled_legacy_modules ($has_base_template = FALSE) {
 | 
	
		
			
				|  |  | -  $mod_enabled = module_list();
 | 
	
		
			
				|  |  | -  $legacy_mod = array ();
 | 
	
		
			
				|  |  | -  foreach ($mod_enabled AS $mod) {
 | 
	
		
			
				|  |  | -    if (preg_match('/^tripal_/', $mod)) {
 | 
	
		
			
				|  |  | -      $mod_dir = drupal_get_path('module', $mod);
 | 
	
		
			
				|  |  | -      if (preg_match('/\/legacy\//', $mod_dir) ) {
 | 
	
		
			
				|  |  | -        if ($has_base_template) {
 | 
	
		
			
				|  |  | -          if (file_exists($mod_dir . '/theme/templates/' . $mod . '_base.tpl.php')) {
 | 
	
		
			
				|  |  | -            $legacy_mod[$mod] = $mod_dir;
 | 
	
		
			
				|  |  | -          }
 | 
	
		
			
				|  |  | -        } else {
 | 
	
		
			
				|  |  | -          $legacy_mod[$mod] = $mod_dir;
 | 
	
		
			
				|  |  | -        }
 | 
	
		
			
				|  |  | -      }
 | 
	
		
			
				|  |  | -    }
 | 
	
		
			
				|  |  | -  }
 | 
	
		
			
				|  |  | -  return $legacy_mod;
 | 
	
		
			
				|  |  | -}
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  |  /**
 | 
	
		
			
				|  |  |   * Delete selected Tripal v2 content
 | 
	
		
			
				|  |  |   *
 |