4a417a4de2663cfb670879fd3fa2e6524eeda512
angie
  Wed Mar 9 09:55:52 2011 -0800
Feature/Bug #3148 (DGV description page refs): fixing bug found by b0b:the filter on PubMed references was set to "include" by default, but all
checkboxes were empty by default.  Fix: if the checkbox group variable is
not defined in the cart, then set all checkboxes.

diff --git src/hg/hgTrackUi/hgTrackUi.c src/hg/hgTrackUi/hgTrackUi.c
index addf991..398170b 100644
--- src/hg/hgTrackUi/hgTrackUi.c
+++ src/hg/hgTrackUi/hgTrackUi.c
@@ -2269,44 +2269,49 @@
 struct sqlResult *sr;
 char **row;
 char query[256];
 safef(query, sizeof(query),
       "select reference,pubMedId from %s group by pubMedId order by reference;", tdb->table);
 sr = sqlGetResult(conn, query);
 printf("<BR><B>Filter by publication reference:</B>\n");
 char cartVarName[256];
 safef (cartVarName, sizeof(cartVarName), "hgt_%s_filterType", tdb->track);
 boolean isInclude = sameString("include", cartUsualString(cart, cartVarName, "include"));
 cgiMakeRadioButton(cartVarName, "include", isInclude);
 printf("include\n");
 cgiMakeRadioButton(cartVarName, "exclude", !isInclude);
 printf("exclude<BR>\n");
 safef (cartVarName, sizeof(cartVarName), "hgt_%s_filterPmId", tdb->track);
-struct slName *checked = cartOptionalSlNameList(cart, cartVarName);
+boolean filterPmIdInCart = cartListVarExists(cart, cartVarName);
+struct slName *checked = NULL;
+if (filterPmIdInCart)
+    checked = cartOptionalSlNameList(cart, cartVarName);
 #define MAX_DGV_REFS 128
 char *labelArr[MAX_DGV_REFS], *valueArr[MAX_DGV_REFS];
 int refCount = 0;
 while ((row = sqlNextRow(sr)) != NULL)
     {
     char *ref = row[0];
     char *pmId = row[1];
     char label[512];
     safef(label, sizeof(label),
 	  "<A HREF=\"http://www.ncbi.nlm.nih.gov/entrez/query.fcgi?cmd=Retrieve&db=PubMed"
 	  "&list_uids=%s&dopt=Abstract&tool=genome.ucsc.edu\" TARGET=_BLANK>%s</A>", pmId, ref);
     labelArr[refCount] = cloneString(label);
     valueArr[refCount++] = cloneString(pmId);
+    if (! filterPmIdInCart)
+	slNameAddHead(&checked, pmId);
     if (refCount >= MAX_DGV_REFS)
 	errAbort("dgvUi: %s has too many references (max %d)", tdb->track, MAX_DGV_REFS);
     }
 sqlFreeResult(&sr);
 jsMakeCheckboxGroupSetClearButton(cartVarName, TRUE);
 jsMakeCheckboxGroupSetClearButton(cartVarName, FALSE);
 cgiMakeCheckboxGroupWithVals(cartVarName, labelArr, valueArr, refCount, checked, 4);
 hFreeConn(&conn);
 }
 
 void superTrackUi(struct trackDb *superTdb)
 /* List tracks in this collection, with visibility controls and UI links */
 {
 struct trackDb *tdb;
 printf("<P><TABLE CELLPADDING=2>");