94041c12e043016875ebd340568bda0ccaf122f6 lrnassar Wed Jul 8 13:53:22 2026 -0700 Add db= to cross-CGI hgTracks/hgTrackUi/hgc links to prevent wrong-assembly errors. refs #37840 Completes the incomplete work from #26892: links from the browser to a different CGI omitted db=, so the target CGI fell back to the cart's db (often wrong), producing "Can't find in track database " errors and broken shared links. Adds the current-assembly db to link builders across hgTracks (chromGraphTrack, expRatioTracks, config ruler and per-track configure links, variation), hgVai, hgFileUi, hgGtexTrackSettings, hgBlat, hgGene, hgNear, the barChart/GTEx faceted UI (facetedBar, barChartUi, gtexUi), and the hgTrackUi group-configure link. diff --git src/hg/hgTracks/expRatioTracks.c src/hg/hgTracks/expRatioTracks.c index 3c728e6b232..f894f1241a7 100644 --- src/hg/hgTracks/expRatioTracks.c +++ src/hg/hgTracks/expRatioTracks.c @@ -172,32 +172,32 @@ void mapBoxHcTwoItems(struct hvGfx *hvg, int start, int end, int x, int y, int width, int height, char *track, char *item1, char *item2, char *statusLine) /* Print out image map rectangle that would invoke the htc (human track click) * program. */ { char *encodedItem1 = cgiEncode(item1); char *encodedItem2 = cgiEncode(item2); x = hvGfxAdjXW(hvg, x, width); if (theImgBox && curImgTrack) { char link[512]; // NOTE: winStart,winEnd removed due to portal (added back by Galt for multi-region) - safef(link,sizeof(link),"%s&c=%s&l=%d&r=%d&o=%d&t=%d&g=%s&i=%s&i2=%s", - hgcNameAndSettings(), chromName, winStart, winEnd, start, end, track, encodedItem1, encodedItem2); + safef(link,sizeof(link),"%s&db=%s&c=%s&l=%d&r=%d&o=%d&t=%d&g=%s&i=%s&i2=%s", + hgcNameAndSettings(), database, chromName, winStart, winEnd, start, end, track, encodedItem1, encodedItem2); #ifdef IMAGEv2_SHORT_MAPITEMS if (x < insideX && x+width > insideX) warn("mapBoxHcTwoItems(%s) map item spanning slices. LX:%d TY:%d RX:%d BY:%d link:[%s]", track,x, y, x+width, y+height, link); #endif//def IMAGEv2_SHORT_MAPITEMS imgTrackAddMapItem(curImgTrack,link,statusLine,x, y, x+width, y+height, track, NULL); } else { hPrintf("\n", statusLine); } @@ -1426,31 +1426,31 @@ nProbes = slCount(probes); nExps = slCount(marrays); totalHeight = nExps * lineHeight; if ((nProbes > MICROARRAY_CLICK_LIMIT) && !(sameString(tg->table, "expRatioUCSFDemo") || sameString(tg->table, "cnvLungBroadv2") || sameString(tg->table, "CGHBreastCancerUCSF") || sameString(tg->table, "expBreastCancerUCSF")) ) { int xOffRc = hvGfxAdjXW(hvg, xOff, insideWidth); if (theImgBox && curImgTrack) { char link[512]; #if defined(IMAGEv2_DRAG_SCROLL_SZ) && (IMAGEv2_DRAG_SCROLL_SZ > 1) // Tim isn't sure what to do here if/when we implement drag scroll. warn("Tim take a look at this link and whether it needs different winStart and winEnd values with dragScroll > 1."); #endif // Galt added back winStart, winEnd for multi-region. - safef(link,sizeof(link),"%s&c=%s&l=%d&r=%d&o=%d&t=%d&g=%s&i=zoomInMore", hgcNameAndSettings(), chromName, winStart, winEnd, seqStart, seqEnd, tg->track); + safef(link,sizeof(link),"%s&db=%s&c=%s&l=%d&r=%d&o=%d&t=%d&g=%s&i=zoomInMore", hgcNameAndSettings(), database, chromName, winStart, winEnd, seqStart, seqEnd, tg->track); #ifdef IMAGEv2_SHORT_MAPITEMS if (xOffRc < insideX && xOffRc+insideWidth > insideX) warn("expRatioMapBoxes(%s) map item spanning slices. LX:%d TY:%d RX:%d BY:%d " "link:[%s]",tg->track,xOffRc, y, xOffRc+insideWidth, y+totalHeight, link); #endif//def IMAGEv2_SHORT_MAPITEMS imgTrackAddMapItem(curImgTrack,link,"zoomInMore",xOffRc, y, xOffRc+insideWidth, y+totalHeight, tg->track, NULL); } else { hPrintf("track, chromName, winStart, winEnd, database); hPrintf("TITLE=\"zoomInMore\">\n"); }