58c24abcdc7e2fe836db993243c6ac15fce457b5
chmalee
  Wed Mar 4 15:20:15 2026 -0800
Fix more universal species search bugs: hgConvert re-factor meant two hidden form variables were created for the hglft_toDb variable, so remove one of them; make organism comparison case insensitive so 'human' matches 'Human', as genark results are typically lower case; append hubUrl to hgGateway gotohgTracks form so any searched genark hub shows up as a connected hub on hgHubConnect, refs #36535, #36232

diff --git src/hg/hgConvert/hgConvert.c src/hg/hgConvert/hgConvert.c
index 44fde6ffc9f..9d3bfd6b5e0 100644
--- src/hg/hgConvert/hgConvert.c
+++ src/hg/hgConvert/hgConvert.c
@@ -102,31 +102,30 @@
 puts("<div class='convertGrid'>\n");
 
 /* SOURCE SECTION (read-only) */
 puts("<div class='convertSection'>\n");
 puts("<div class='sectionLabel'>Source</div>\n");
 hPrintf("<div class='fieldRow'><span class='fieldLabel'>Genome:</span> %s</div>\n", fromDb->organism);
 hPrintf("<div class='fieldRow'><span class='fieldLabel'>Assembly:</span> %s</div>\n", fromDb->description);
 puts("</div>\n");
 
 /* DESTINATION SECTION (editable) */
 puts("<div class='convertSection'>\n");
 puts("<div class='sectionLabel'>Destination</div>\n");
 
 /* Hidden fields for form submission */
 hPrintf("<input name='%s' value='%s' type='hidden'>\n", HGLFT_TOORG_VAR, toDb->organism);
-hPrintf("<input name='%s' value='%s' type='hidden'>\n", HGLFT_TODB_VAR, liftOver->toDb);
 
 /* Search bar */
 char *searchBarId = "toGenomeSearch";
 puts("<div class='fieldRow'>\n");
 puts("<span class='fieldLabel'>Search:</span>\n");
 printGenomeSearchBar(searchBarId, "Search for target genome...", NULL, TRUE, NULL, NULL);
 puts("</div>\n");
 
 /* Current selection display */
 char *selectedLabel = getCurrentGenomeLabel(liftOver->toDb);
 hPrintf("<div class='currentSelection' id='toGenomeLabel'>%s</div>\n", selectedLabel);
 /* Assembly dropdown (updates based on genome selection) */
 puts("<div class='fieldRow'>\n");
 puts("<span class='fieldLabel'>Assembly:</span>\n");
 dbList = hGetLiftOverToDatabases(liftOver->fromDb);
@@ -282,31 +281,31 @@
 {
 char *toOrg, *toDb;
 struct liftOverChain *choice = NULL;
 struct hash *dbRank = hGetDatabaseRank();
 double bestScore = -1;
 struct liftOverChain *this = NULL;
 
 /* Get the initial values. */
 toOrg = cartCgiUsualString(cart, HGLFT_TOORG_VAR, "0");
 toDb = cartCgiUsualString(cart, HGLFT_TODB_VAR, "0");
 
 if (sameWord(toOrg,"0"))
     toOrg = NULL;
 if (sameWord(toDb,"0"))
     toDb = NULL;
-if ((toDb != NULL) && !sameOk(toOrg, hOrganism(toDb)))
+if ((toDb != NULL) && !sameWordOk(toOrg, hOrganism(toDb)))
     toDb = NULL;
 
 if (toOrg == NULL)
     toOrg = "Human";
 
 for (this = chainList; this != NULL; this = this->next)
     {
     double score = scoreLiftOverChain(this, fromOrg, fromDb, toOrg, toDb, dbRank);
     if (score > bestScore)
 	{
 	choice = this;
 	bestScore = score;
 	}
     }