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/hgTracks/searchTracks.c src/hg/hgTracks/searchTracks.c index a1e69c1..cfd13cf 100644 --- src/hg/hgTracks/searchTracks.c +++ src/hg/hgTracks/searchTracks.c @@ -312,100 +312,106 @@ refAdd(&tracks, subTrack); } else warn("found subtrack is NULL."); } } } } } } return tracks; } #define MAX_FOUND_TRACKS 100 -static void findTracksPageLinks(int tracksFound, int startFrom) +static void findTracksPageLinks(int tracksFound, int startFrom, int instance) { +char id[256]; if (tracksFound <= MAX_FOUND_TRACKS) return; // Opener int willStartAt = 0; int curPage = (startFrom/MAX_FOUND_TRACKS) + 1; int endAt = startFrom+MAX_FOUND_TRACKS; if (endAt > tracksFound) endAt = tracksFound; hPrintf("Listing %d - %d of %d tracks ", startFrom+1,endAt,tracksFound); // << and < if (startFrom >= MAX_FOUND_TRACKS) { - hPrintf("« ", - TRACK_SEARCH,TRACK_SEARCH_PAGER); - jsOnEventByIdF("click", "ftpl1", "return findTracks.page(\"%s\",0);", TRACK_SEARCH_PAGER); + TRACK_SEARCH,TRACK_SEARCH_PAGER,id); + jsOnEventByIdF("click", id, "return findTracks.page(\"%s\",0);", TRACK_SEARCH_PAGER); + safef(id, sizeof id, "ftpl%d-prev", instance); willStartAt = startFrom - MAX_FOUND_TRACKS; - hPrintf(" ", - TRACK_SEARCH,TRACK_SEARCH_PAGER,willStartAt); - jsOnEventByIdF("click", "ftpl2", "return findTracks.page(\"%s\",%d);", TRACK_SEARCH_PAGER,willStartAt); + TRACK_SEARCH,TRACK_SEARCH_PAGER,willStartAt,id); + jsOnEventByIdF("click", id, "return findTracks.page(\"%s\",%d);", TRACK_SEARCH_PAGER,willStartAt); } // page number links int lastPage = (tracksFound/MAX_FOUND_TRACKS); if ((tracksFound % MAX_FOUND_TRACKS) > 0) lastPage++; int thisPage = curPage - 3; // Window of 3 pages above and below if (thisPage < 1) thisPage = 1; for (;thisPage <= lastPage && thisPage <= curPage + 3; thisPage++) { + safef(id, sizeof id, "ftpl%d-%d", instance, thisPage); if (thisPage != curPage) { willStartAt = ((thisPage - 1) * MAX_FOUND_TRACKS); endAt = willStartAt+ MAX_FOUND_TRACKS; if (endAt > tracksFound) endAt = tracksFound; - hPrintf(" %d ", - TRACK_SEARCH,TRACK_SEARCH_PAGER,willStartAt,thisPage,willStartAt+1,endAt,thisPage); - jsOnEventByIdF("click", "ftpl3", "return findTracks.page(\"%s\",%d);",TRACK_SEARCH_PAGER,willStartAt); + TRACK_SEARCH,TRACK_SEARCH_PAGER,willStartAt,id,thisPage,willStartAt+1,endAt,thisPage); + jsOnEventByIdF("click", id, "return findTracks.page(\"%s\",%d);",TRACK_SEARCH_PAGER,willStartAt); } else hPrintf(" %d ",COLOR_DARKGREY,thisPage); } // > and >> if ((startFrom + MAX_FOUND_TRACKS) < tracksFound) { + safef(id, sizeof id, "ftpl%d-next", instance); willStartAt = startFrom + MAX_FOUND_TRACKS; - hPrintf(" ", - TRACK_SEARCH,TRACK_SEARCH_PAGER,willStartAt); - jsOnEventByIdF("click", "ftpl4", "return findTracks.page(\"%s\",%d);",TRACK_SEARCH_PAGER,willStartAt); + TRACK_SEARCH,TRACK_SEARCH_PAGER,willStartAt,id); + jsOnEventByIdF("click", id, "return findTracks.page(\"%s\",%d);",TRACK_SEARCH_PAGER,willStartAt); + safef(id, sizeof id, "ftpl%d-last", instance); willStartAt = tracksFound - (tracksFound % MAX_FOUND_TRACKS); if (willStartAt == tracksFound) willStartAt -= MAX_FOUND_TRACKS; - hPrintf(" »\n", - TRACK_SEARCH,TRACK_SEARCH_PAGER,willStartAt); - jsOnEventByIdF("click", "ftpl5", "return findTracks.page(\"%s\",%d);",TRACK_SEARCH_PAGER,willStartAt); + TRACK_SEARCH,TRACK_SEARCH_PAGER,willStartAt,id); + jsOnEventByIdF("click", id, "return findTracks.page(\"%s\",%d);",TRACK_SEARCH_PAGER,willStartAt); } } static void displayFoundTracks(struct cart *cart, struct slRef *tracks, int tracksFound, enum sortBy sortBy) // Routine for displaying found tracks { char id[256]; char javascript[1024]; hPrintf("