45ae4560eae022132877e2349a5d0420de09872c
max
  Mon Mar 26 14:52:07 2012 -0700
make subtrack config work following tims suggestions, try to make psl track description clearer
diff --git src/hg/hgTrackUi/hgTrackUi.c src/hg/hgTrackUi/hgTrackUi.c
index 68a64ab..ba7c435 100644
--- src/hg/hgTrackUi/hgTrackUi.c
+++ src/hg/hgTrackUi/hgTrackUi.c
@@ -1878,63 +1878,72 @@
 puts(" (Comma separated list, i.e.: GT,AG for splice sites)");
 puts("<P>");
 cgiMakeCheckBox(MOTIF_COMPLEMENT, complementsToo);
 puts("&nbsp;<B>Show reverse complements of motifs also</B>");
 puts("<P>Options for slides and presentations:");
 puts("<P><B>Title:&nbsp;</B>");
 cgiMakeTextVar(titleVar, title, 30);
 puts("<P><B>Display:&nbsp;</B>");
 cgiMakeCheckBox(BASE_SHOWASM, showAsm);
 puts("&nbsp;<B>assembly&nbsp;</B>");
 cgiMakeCheckBox(BASE_SHOWPOS, showPos);
 puts("&nbsp;<B>position</B>");
 
 }
 
-#define NUM_YEARS 30  // similar to google scholar, which goes back to 20 years
-
 void pubsUi(struct trackDb *tdb)
 /* UI for pubs match track */
 {
-char* keywordTag = "pubsBlat.pubsKeywords";
-char* yearTag = "pubsBlat.pubsYear";
-char *keywords = cartUsualString(cart, keywordTag, "");
-char *text[NUM_YEARS + 1];
-char *values[NUM_YEARS + 1];
-char *yearFilter = cartUsualString(cart, yearTag, "anytime");
-int i;
+#define NUM_YEARS 30  // similar to google scholar, which goes back to 20 years
+
+#define PUBS_KEYWORDS_TAG "pubsKeywords"
+#define PUBS_YEAR_TAG     "pubsYear"
+
+// get current set filters from cart
+char *keywords   = cartUsualStringClosestToHome(cart, tdb, FALSE, PUBS_KEYWORDS_TAG, "");
+char *yearFilter = cartUsualStringClosestToHome(cart, tdb, FALSE, PUBS_YEAR_TAG, "anytime");
+
+// print keyword input box
 puts("<P><B>Filter articles by keywords in abstract, title or authors:</B>");
-cgiMakeTextVar(keywordTag, keywords, 45);
+char cgiVar[128];
+safef(cgiVar,sizeof(cgiVar),"%s.%s",tdb->track,PUBS_KEYWORDS_TAG);
+cgiMakeTextVar(cgiVar, keywords, 45);
 
+// generate strings like "since <year>" for last 30 years
+char *text[NUM_YEARS + 1];
+char *values[NUM_YEARS + 1];
 text[0] = "anytime";
 values[0] = "anytime";
 time_t nowTime = time(NULL);
 struct tm *tm = localtime(&nowTime);
 int nowYear = 1900 + tm->tm_year;
 
+int i;
 for(i = 0; i < NUM_YEARS; i++)
     {
     char buf[20];
     safef(buf, sizeof(buf), "since %d", nowYear - i);
     text[i + 1] = cloneString(buf);
     safef(buf, sizeof(buf), "%d", nowYear - i);
     values[i + 1] = cloneString(buf);
     }
 
+// print dropdown box with "since <year>" lines
 puts("</P><P>\n");
 printf("<B>Show articles published </B>");
-cgiDropDownWithTextValsAndExtra(yearTag, text, values, NUM_YEARS + 1, yearFilter, NULL);
+safef(cgiVar,sizeof(cgiVar),"%s.%s",tdb->track,PUBS_YEAR_TAG);
+cgiDropDownWithTextValsAndExtra(cgiVar, text, values, NUM_YEARS + 1, yearFilter, NULL);
 puts("</P>\n");
 }
 
 
 void oligoMatchUi(struct trackDb *tdb)
 /* UI for oligo match track */
 {
 char *oligo = cartUsualString(cart, oligoMatchVar, oligoMatchDefault);
 puts("<P><B>Short (2-30 base) sequence:</B>");
 cgiMakeTextVar(oligoMatchVar, oligo, 45);
 }
 
 void cutterUi(struct trackDb *tdb)
 /* UI for restriction enzyme track */
 {