a8f93bb9c0961e8e3ac25a0168ad2d2eb6b66fad
kent
  Wed Apr 25 23:30:45 2012 -0700
Fixing missing c=chromName in a lot of links.  A bug Tim put in 2009 from what I can tell that manifests with an empty cart on IE.
diff --git src/hg/hgTracks/expRatioTracks.c src/hg/hgTracks/expRatioTracks.c
index 24e0b8d..651acee 100644
--- src/hg/hgTracks/expRatioTracks.c
+++ src/hg/hgTracks/expRatioTracks.c
@@ -165,32 +165,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];
-    safef(link,sizeof(link),"%s&o=%d&t=%d&g=%s&i=%s&i2=%s", // NOTE: winStart,winEnd removed due to portal
-        hgcNameAndSettings(), start, end, track, encodedItem1, encodedItem2);
+    safef(link,sizeof(link),"%s&c=%s&o=%d&t=%d&g=%s&i=%s&i2=%s", // NOTE: winStart,winEnd removed due to portal
+        hgcNameAndSettings(), chromName, 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);
     }
 else
     {
     hPrintf("<AREA SHAPE=RECT COORDS=\"%d,%d,%d,%d\" ", x, y, x+width, y+height);
     hPrintf("HREF=\"%s&o=%d&t=%d&g=%s&i=%s&i2=%s&c=%s&l=%d&r=%d&db=%s&pix=%d\" ",
         hgcNameAndSettings(), start, end, track, encodedItem1, encodedItem2,chromName, winStart, winEnd,
         database, tl.picWidth);
     hPrintf("TITLE=\"%s\">\n", statusLine);
     }
 freeMem(encodedItem1);
@@ -1419,42 +1419,42 @@
 probes = marrays->features;
 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
-        safef(link,sizeof(link),"%s&o=%d&t=%d&g=%s&i=zoomInMore", hgcNameAndSettings(), seqStart, seqEnd, tg->track);
+        safef(link,sizeof(link),"%s&c=%s&o=%d&t=%d&g=%s&i=zoomInMore", hgcNameAndSettings(), chromName, 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);
         }
     else
         {
         hPrintf("<AREA SHAPE=RECT COORDS=\"%d,%d,%d,%d\" ", xOffRc, y, xOffRc+insideWidth, y+totalHeight);
-        hPrintf("HREF=\"%s&o=%d&t=%d&g=%s&c=%s&l=%d&r=%d&db=%s&i=zoomInMore\" ",
-                hgcNameAndSettings(), seqStart, seqEnd, tg->track, chromName, winStart, winEnd, database);
+        hPrintf("HREF=\"%s&c=%s&o=%d&t=%d&g=%s&c=%s&l=%d&r=%d&db=%s&i=zoomInMore\" ",
+                hgcNameAndSettings(), chromName, seqStart, seqEnd, tg->track, chromName, winStart, winEnd, database);
         hPrintf("TITLE=\"zoomInMore\">\n");
         }
      }
 else
     {
     struct linkedFeatures *probe;
     for (probe = probes; probe != NULL; probe = probe->next)
 	{
 	int x1 = round((double)((int)probe->start-winStart)*scale);
 	int x2 = round((double)((int)probe->end-winStart)*scale);
 	int w;
 	if (x1 < 0)
 	    x1 = 0;
 	if (x2 > insideWidth-1)
 	    x2 = insideWidth-1;