690fa17cbf29efbe0f1b6c9b724f4e3614a615fb galt Thu Mar 2 23:23:09 2017 -0800 fixes #18981. track search js problems from CSP2 changes. Needed to add id to some functions in cheapcgi.c and hui.c. diff --git src/hg/lib/hui.c src/hg/lib/hui.c index 3bce7c3..fadedf0 100644 --- src/hg/lib/hui.c +++ src/hg/lib/hui.c @@ -602,55 +602,55 @@ enum trackVisibility hTvFromString(char *s) // Given a string representation of track visibility, return as equivalent enum. { enum trackVisibility vis = hTvFromStringNoAbort(s); if ((int)vis < 0) errAbort("Unknown visibility %s", s); return vis; } char *hStringFromTv(enum trackVisibility vis) // Given enum representation convert to string. { return hTvStrings[vis]; } -void hTvDropDownClassWithJavascript(char *varName, enum trackVisibility vis, boolean canPack, +void hTvDropDownClassWithJavascript(char *varName, char *id, enum trackVisibility vis, boolean canPack, char *class, struct slPair *events) // Make track visibility drop down for varName with style class { static char *noPack[] = { "hide", "dense", "full", }; static char *pack[] = { "hide", "dense", "squish", "pack", "full", }; static int packIx[] = {tvHide,tvDense,tvSquish,tvPack,tvFull}; if (canPack) - cgiMakeDropListClassWithStyleAndJavascript(varName, pack, ArraySize(pack), + cgiMakeDropListClassWithIdStyleAndJavascript(varName, id, pack, ArraySize(pack), pack[packIx[vis]], class, TV_DROPDOWN_STYLE, events); else - cgiMakeDropListClassWithStyleAndJavascript(varName, noPack, ArraySize(noPack), + cgiMakeDropListClassWithIdStyleAndJavascript(varName, id, noPack, ArraySize(noPack), noPack[vis], class, TV_DROPDOWN_STYLE, events); } void hTvDropDownClassVisOnlyAndExtra(char *varName, enum trackVisibility vis, boolean canPack, char *class, char *visOnly, struct slPair *events) // Make track visibility drop down for varName with style class, and potentially limited to visOnly { static char *denseOnly[] = { "hide", "dense", }; static char *squishOnly[] = { "hide", @@ -700,39 +700,39 @@ else /* default when not recognized */ cgiMakeDropListClassWithStyleAndJavascript(varName, denseOnly, ArraySize(denseOnly), denseOnly[visIx], class, TV_DROPDOWN_STYLE, events); } else { if (canPack) cgiMakeDropListClassWithStyleAndJavascript(varName, pack, ArraySize(pack), pack[packIx[vis]], class, TV_DROPDOWN_STYLE, events); else cgiMakeDropListClassWithStyleAndJavascript(varName, noPack, ArraySize(noPack), noPack[vis], class, TV_DROPDOWN_STYLE, events); } } -void hideShowDropDownWithClassAndExtra(char *varName, boolean show, char *class, struct slPair *events) +void hideShowDropDownWithClassAndExtra(char *varName, char * id, boolean show, char *class, struct slPair *events) // Make hide/show dropdown for varName { static char *hideShow[] = { "hide", "show" }; -cgiMakeDropListClassWithStyleAndJavascript(varName, hideShow, ArraySize(hideShow), +cgiMakeDropListClassWithIdStyleAndJavascript(varName, id, hideShow, ArraySize(hideShow), hideShow[show], class, TV_DROPDOWN_STYLE, events); } /****** Some stuff for stsMap related controls *******/ static char *stsMapOptions[] = { "All Genetic", "Genethon", "Marshfield", "deCODE", "GeneMap 99", "Whitehead YAC", "Whitehead RH", @@ -7009,31 +7009,31 @@ puts("</TD>"); safef(varName, sizeof(varName), "%s", matchedViewTracks[ix]->track); enum trackVisibility tv = hTvFromString(cartUsualString(cart,varName, hStringFromTv(visCompositeViewDefault(parentTdb,viewName)))); struct slPair *events = NULL; safef(javascript, sizeof(javascript), "matSelectViewForSubTracks(this,'%s');", viewName); slPairAdd(&events, "change", cloneString(javascript)); safef(javascript, sizeof(javascript), "this.lastIndex=this.selectedIndex;"); slPairAdd(&events, "focus", cloneString(javascript)); printf("<TD>"); safef(classes, sizeof(classes), "viewDD normalText %s", membersOfView->tags[ix]); - hTvDropDownClassWithJavascript(varName, tv, parentTdb->canPack, classes, events); + hTvDropDownClassWithJavascript(varName, NULL, tv, parentTdb->canPack, classes, events); puts(" </TD>"); } } puts("</TR>"); // Make row of cfg boxes if needed if (makeCfgRows) { puts("</TABLE><TABLE>"); for (ix = 0; ix < membersOfView->count; ix++) { struct trackDb *view = matchedViewTracks[ix]; if (view != NULL) { char *viewName = membersOfView->tags[ix]; @@ -8046,31 +8046,31 @@ // Determine if any tracks in supertrack are visible; if not, the 'show' is grayed out if (show && (visibleChild == -1)) { visibleChild = 0; struct slRef *childRef; for ( childRef = tdb->children; childRef != NULL; childRef = childRef->next) { struct trackDb *cTdb = childRef->val; cTdb->visibility = hTvFromString(cartUsualString(cart, cTdb->track, hStringFromTv(cTdb->visibility))); if (cTdb->visibility != tvHide) visibleChild = 1; } } -hideShowDropDownWithClassAndExtra(tdb->track, show, (show && visibleChild) ? +hideShowDropDownWithClassAndExtra(tdb->track, NULL, show, (show && visibleChild) ? "normalText visDD" : "hiddenText visDD", events); return TRUE; } int tvConvertToNumericOrder(enum trackVisibility v) { return ((v) == tvFull ? 4 : \ (v) == tvPack ? 3 : \ (v) == tvSquish ? 2 : \ (v) == tvDense ? 1 : 0); } int tvCompare(enum trackVisibility a, enum trackVisibility b) /* enum trackVis isn't in numeric order by visibility, so compare * symbolically: */