ad825914ad88975e9a0c00229d4c3dc1048d1b79 tdreszer Fri Jun 10 13:39:06 2011 -0700 Simple bullet-proofing against tdb->table being empty. diff --git src/hg/lib/hui.c src/hg/lib/hui.c index 8fde6cf..6d0ab7f 100644 --- src/hg/lib/hui.c +++ src/hg/lib/hui.c @@ -44,31 +44,31 @@ //#define MINUS_BUTTON(nameOrId,anc,beg,contains) printf(PM_BUTTON, (anc),(anc),(nameOrId),"false",(beg),(contains),(anc),"remove_sm.gif","-") #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 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) && trackHash) +if (!tdbIsDownloadsOnly(tdb) && !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 (!nameIsFile && trackDbSetting(tdb, FILE_SORT_ORDER) != NULL) { @@ -264,31 +264,32 @@ printf("%s<A HREF='#a_meta_%s' onclick='return metadataShowHide(\"%s\",%s,true);' title='Show metadata details...'>%s<img src='../images/downBlue.png'/></A>", (embeddedInText?" ":"<P>"),tdb->track,tdb->track, showLongLabel?"true":"false", (title?title:"")); if (!sameString(tdb->table, tdb->track) && trackHash != NULL) // If trackHash is needed, then can't fill this in with ajax { printf("<DIV id='div_%s_meta' style='display:none;'>%s</div>",tdb->track, metadataAsHtmlTable(db,tdb,showLongLabel,TRUE,trackHash) ); } else printf("<DIV id='div_%s_meta' style='display:none;'></div>",tdb->track); return TRUE; } void extraUiLinks(char *db,struct trackDb *tdb, struct hash *trackHash) /* Show downlaods, schema and metadata links where appropriate */ { -boolean schemaLink = (isCustomTrack(tdb->table) == FALSE) +boolean schemaLink = (!tdbIsDownloadsOnly(tdb) + && isCustomTrack(tdb->table) == FALSE) && (hTableOrSplitExists(db, tdb->table)); boolean metadataLink = (!tdbIsComposite(tdb) && metadataForTable(db, tdb, NULL) != NULL); boolean downloadLink = (trackDbSetting(tdb, "wgEncode") != NULL && !tdbIsSuperTrack(tdb)); int links = 0; if (schemaLink) links++; if (metadataLink) links++; if (downloadLink) links++; if(links > 0) cgiDown(0.7); if(links > 1)