b22cc6260ce701bb2760a20e510ea924cbc4b595 tdreszer Thu Jan 20 10:43:21 2011 -0800 Fix for redmine 2520. Downloads link for individual file was broken by hgFileUi logic. diff --git src/hg/lib/hui.c src/hg/lib/hui.c index 0f306a8..6c89c6a 100644 --- src/hg/lib/hui.c +++ src/hg/lib/hui.c @@ -43,59 +43,59 @@ #define PM_BUTTON "<IMG height=18 width=18 onclick=\"setCheckBoxesThatContain('%s',%s,true,'%s','','%s');\" id=\"btn_%s\" src=\"../images/%s\" alt=\"%s\">\n" #define DEF_BUTTON "<IMG onclick=\"setCheckBoxesThatContain('%s',true,false,'%s','','%s'); setCheckBoxesThatContain('%s',false,false,'%s','_defOff','%s');\" id=\"btn_%s\" src=\"../images/%s\" alt=\"%s\">\n" #define DEFAULT_BUTTON(nameOrId,anc,beg,contains) printf(DEF_BUTTON,(nameOrId), (beg),(contains),(nameOrId),(beg),(contains),(anc),"defaults_sm.png","default") #define PLUS_BUTTON(nameOrId,anc,beg,contains) printf(PM_BUTTON, (nameOrId),"true", (beg),(contains),(anc),"add_sm.gif", "+") #define MINUS_BUTTON(nameOrId,anc,beg,contains) printf(PM_BUTTON, (nameOrId),"false",(beg),(contains),(anc),"remove_sm.gif","-") #define ENCODE_DCC_DOWNLOADS "encodeDCC" //#define SUBTRACK_CFG_POPUP #define BAM_CFG_UI_CHANGES struct trackDb *wgEncodeDownloadDirKeeper(char *db, struct trackDb *tdb, struct hash *trackHash) /* Look up through self and parents, looking for someone responsible for handling * where the downloads are. */ { -if (!sameWord(tdb->type,"downloadsOnly") && !sameString(tdb->table, tdb->track)) +if (!sameWord(tdb->type,"downloadsOnly") && !sameString(tdb->table, tdb->track) && trackHash) { tdb = hashFindVal(trackHash, tdb->table); if (tdb == NULL) errAbort("Can't find track for table %s in wgEncodeDownloadDirKeeper", tdb->table); } return trackDbTopLevelSelfOrParent(tdb); } static char *htmlStringForDownloadsLink(char *database, struct trackDb *tdb,char *name,boolean nameIsFile, struct hash *trackHash) // Returns an HTML string for a downloads link { // If has fileSortOrder, then link to new hgFileUi -if (trackDbSetting(tdb, FILE_SORT_ORDER) != NULL) +if (!nameIsFile && trackDbSetting(tdb, FILE_SORT_ORDER) != NULL) { char * link = needMem(PATH_LEN); // 512 should be enough safef(link,PATH_LEN,"<A HREF='%s?g=%s' title='Downloadable Files...'>%s</A>", // NOTE: TARGET=ucscDownloads ?? hgFileUiName(), /*cartSessionVarName(), cartSessionId(cart),*/ tdb->track, name); // Note the hgsid would be needed if downloads page ever saved fileSortOrder to cart. return link; } else if(trackDbSetting(tdb, "wgEncode") != NULL) // Downloads directory if this is ENCODE { struct trackDb *dirKeeper = wgEncodeDownloadDirKeeper(database, tdb, trackHash); - char *actualName = (sameWord(dirKeeper->type,"downloadsOnly")?dirKeeper->track:tdb->table); + char *compositeDir = (sameWord(dirKeeper->type,"downloadsOnly")?dirKeeper->track:dirKeeper->table); struct dyString *dyLink = dyStringCreate("<A HREF=\"http://%s/goldenPath/%s/%s/%s/%s\" title='Download %s' TARGET=ucscDownloads>%s</A>", hDownloadsServer(), - trackDbSettingOrDefault(dirKeeper, "origAssembly",database), - ENCODE_DCC_DOWNLOADS, actualName, (nameIsFile?name:""), nameIsFile?"file":"files",name); + trackDbSettingOrDefault(dirKeeper, "origAssembly",database), // This may not be wise!!! + ENCODE_DCC_DOWNLOADS, compositeDir, (nameIsFile?name:""), nameIsFile?"file":"files",name); return dyStringCannibalize(&dyLink); } return NULL; } static boolean makeNamedDownloadsLink(char *database, struct trackDb *tdb,char *name, struct hash *trackHash) // Make a downloads link (if appropriate and then returns TRUE) { char *htmlString = htmlStringForDownloadsLink(database,tdb,name,FALSE,trackHash); if (htmlString == NULL) return FALSE; printf("%s", htmlString); freeMem(htmlString);