9d881a6935aca9a2952f9dc4726f74938a61b1b5 kate Sat Mar 13 21:00:53 2021 -0800 Add database-specific hg.conf setting to put up a link on position line (for wuhCor1 quick start guide). refs #27198 diff --git src/hg/hgTracks/hgTracks.c src/hg/hgTracks/hgTracks.c index fe51c0c..efdb52f 100644 --- src/hg/hgTracks/hgTracks.c +++ src/hg/hgTracks/hgTracks.c @@ -8639,32 +8639,30 @@ hPrintf("\n%s", trackGroupsHidden1->string); hPrintf("</CENTER></FORM>\n"); hPrintf("<FORM ACTION=\"%s\" NAME=\"TrackForm\" id=\"TrackForm\" METHOD=\"POST\">\n\n", hgTracksName()); hPrintf("%s", trackGroupsHidden2->string); freeDyString(&trackGroupsHidden1); freeDyString(&trackGroupsHidden2); if (!psOutput) cartSaveSession(cart); /* Put up hgsid= as hidden variable. */ hPrintf("<CENTER>"); } /* Make line that says position. */ { char buf[256]; - char *survey = cfgOptionEnv("HGDB_SURVEY", "survey"); - char *surveyLabel = cfgOptionEnv("HGDB_SURVEY_LABEL", "surveyLabel"); char *javascript = "document.location = '/cgi-bin/hgTracks?db=' + document.TrackForm.db.options[document.TrackForm.db.selectedIndex].value;"; if (containsStringNoCase(database, "zoo")) { hPuts("Organism "); printAssemblyListHtmlExtra(database, "change", javascript); } // multi-region button on position line, initially under hg.conf control if (multiRegionButtonTop) { printMultiRegionButton(); hPrintf(" "); } if (virtualSingleChrom()) // DISGUISE VMODE @@ -8687,30 +8685,54 @@ pressedClass, showVirtRegions, addCommasToPos(database, position)); hPrintf("<input type='hidden' name='position' id='position' value='%s'>\n", buf); sprintLongWithCommas(buf, virtWinEnd - virtWinStart); hPrintf(" <span id='size'>%s</span> bp. ", buf); hPrintf("<input class='positionInput' type='text' name='hgt.positionInput' id='positionInput'" " size='%d'>\n", multiRegionButtonTop ? 50 : 60); hWrites(" "); hButton("goButton", "go"); if (!trackHubDatabase(database)) { jsonObjectAdd(jsonForClient, "assemblySupportsGeneSuggest", newJsonBoolean(assemblySupportsGeneSuggest(database))); if (assemblySupportsGeneSuggest(database)) hPrintf("<input type='hidden' name='hgt.suggestTrack' id='suggestTrack' value='%s'>\n", assemblyGeneSuggestTrack(database)); } + + // hg.conf controlled links + + // database-specific link: 2 hg.conf settings, format <db>_TopLink{Label} + struct slName *dbLinks = cfgNamesWithPrefix(database); + struct slName *link; + char *dbTopLink = NULL, *dbTopLinkLabel = NULL; + for (link = dbLinks; link != NULL; link = link->next) + { + char *name = cloneString(link->name); + char *setting = chopPrefixAt(link->name, '_'); + if (sameString(setting, "TopLink")) + dbTopLink = cfgOption(name); + else if (sameString(setting, "TopLinkLabel")) + dbTopLinkLabel = cfgOption(name); + } + if (dbTopLink && dbTopLinkLabel) + { + hPrintf(" <a href='%s' target='_blank'><em><b>%s</em></b></a>\n", + dbTopLink, dbTopLinkLabel); + } + // generic link + char *survey = cfgOptionEnv("HGDB_SURVEY", "survey"); + char *surveyLabel = cfgOptionEnv("HGDB_SURVEY_LABEL", "surveyLabel"); if (survey && differentWord(survey, "off")) hPrintf(" <span style='background-color:yellow;'>" "<A HREF='%s' TARGET=_BLANK><EM><B>%s</EM></B></A></span>\n", survey, surveyLabel ? surveyLabel : "Take survey"); hPutc('\n'); } } // TODO GALT how to handle ideos? boolean nukeIdeoFromList = FALSE; for(window=windows;window;window=window->next) { setGlobalsFromWindow(window); if (window == windows) // first window