70e9200a58ef4db6378dae703296d29188ae26b1 tdreszer Fri Dec 17 14:58:43 2010 -0800 Make use of fileUi.h macros and support hgFileUi CGI diff --git src/hg/lib/hui.c src/hg/lib/hui.c index 2b90d6a..948e1f1 100644 --- src/hg/lib/hui.c +++ src/hg/lib/hui.c @@ -13,30 +13,31 @@ #include "hCommon.h" #include "hgConfig.h" #include "chainCart.h" #include "chainDb.h" #include "netCart.h" #include "obscure.h" #include "wiggle.h" #include "phyloTree.h" #include "hgMaf.h" #include "udc.h" #include "customTrack.h" #include "encode/encodePeak.h" #include "mdb.h" #include "web.h" #include "hPrint.h" +#include "fileUi.h" static char const rcsid[] = "$Id: hui.c,v 1.297 2010/06/02 19:27:51 tdreszer Exp $"; #define SMALLBUF 128 #define MAX_SUBGROUP 9 #define ADD_BUTTON_LABEL "add" #define CLEAR_BUTTON_LABEL "clear" #define JBUFSIZE 2048 //#define PM_BUTTON "<A NAME=\"%s\"></A><A HREF=\"#%s\"><IMG height=18 width=18 onclick=\"return (setCheckBoxesThatContain('%s',%s,true,'%s','','%s') == false);\" id=\"btn_%s\" src=\"../images/%s\" alt=\"%s\"></A>\n" //#define DEF_BUTTON "<A NAME=\"%s\"></A><A HREF=\"#%s\"><IMG onclick=\"setCheckBoxesThatContain('%s',true,false,'%s','','%s'); return (setCheckBoxesThatContain('%s',false,false,'%s','_defOff','%s') == false);\" id=\"btn_%s\" src=\"../images/%s\" alt=\"%s\"></A>\n" //#define DEFAULT_BUTTON(nameOrId,anc,beg,contains) printf(DEF_BUTTON,(anc),(anc),(nameOrId), (beg),(contains),(nameOrId),(beg),(contains),(anc),"defaults_sm.png","default") //#define PLUS_BUTTON(nameOrId,anc,beg,contains) printf(PM_BUTTON, (anc),(anc),(nameOrId),"true", (beg),(contains),(anc),"add_sm.gif", "+") //#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" @@ -55,39 +56,46 @@ * where the downloads are. */ { if (!sameWord(tdb->type,"downloadsOnly") && !sameString(tdb->table, tdb->track)) { 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 { -// Downloads directory if this is ENCODE -if(trackDbSetting(tdb, "wgEncode") != NULL) +// If has fileSortOrder, then link to new hgFileUi +if (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); - struct dyString *dyLink = dyStringCreate("<A HREF=\"http://%s/goldenPath/%s/%s/%s/%s\" title='Download file' TARGET=ucscDownloads>%s</A>", + 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:""), name); + ENCODE_DCC_DOWNLOADS, actualName, (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); @@ -4162,41 +4170,40 @@ printf(" "); // Do we have a restricted until date? char *dateDisplay = encodeRestrictionDateDisplay(db,subtrack); if (dateDisplay) printf("</TD>\n<TD align='center'> %s ", dateDisplay); // End of row and free ourselves of this subtrack puts("</TD></TR>\n"); checkBoxIdFree(&id); subgroupMembershipFree(&membership); } // End of the table puts("</TBODY><TFOOT>"); -printf("<TR valign='top'><TD colspan=%d>",columnCount-1); +printf("<TR valign='top'><TD colspan=%d> ",columnCount-1); // Count of subtracks is filled in by javascript. -printf(" "); if (slCount(subtrackRefList) > 5) printf("<span class='subCBcount'></span>\n"); // Restruction policy needs a link #ifdef SORT_ON_RESTRICTED if (restrictions && sortOrder != NULL) - printf("<TH><A HREF='%s' TARGET=BLANK style='font-size:.9em;'>Restriction Policy</A></TH>", ENCODE_DATA_RELEASE_POLICY); + printf("</TD><TH><A HREF='%s' TARGET=BLANK style='font-size:.9em;'>Restriction Policy</A>", ENCODE_DATA_RELEASE_POLICY); #endif///def SORT_ON_RESTRICTED printf("</TD></TR>\n"); puts("</TFOOT></TABLE>"); printf("</td></tr></table>"); puts("<P>"); // Tying subtracks with matrix and subtrack cfgs with views requires javascript help puts("<script type='text/javascript'>matInitializeMatrix();</script>"); #ifndef SUBTRACK_CFG_POPUP if (dependentCfgsNeedBinding) cfgLinkToDependentCfgs(cart,parentTdb,parentTdb->track); #endif//ndef SUBTRACK_CFG_POPUP