af730d9e24c0642fe39657f890bc117ed015ccbf galt Wed Feb 15 01:12:26 2017 -0800 CSP code cleanup. Using new var-args versions of functions jsInlineF and jsOnEventByIdF to avoid using lots of fixed-size local javascript strings. diff --git src/hg/lib/jsHelper.c src/hg/lib/jsHelper.c index b2e42c7..0c2e34f 100644 --- src/hg/lib/jsHelper.c +++ src/hg/lib/jsHelper.c @@ -94,63 +94,57 @@ "var %s='%s';\n", jsVar, val); jsInline(javascript); } void jsMakeTrackingRadioButtonExtraHtml(char *cgiVar, char *jsVar, char *val, char *selVal, char *extraHtml) /* Make a radio button with extra HTML attributes that also sets tracking variable * in javascript. */ { char id[256]; safef(id, sizeof id, "%s_%s", cgiVar, val); hPrintf(""); } void jsMakeTrackingRadioButton(char *cgiVar, char *jsVar, char *val, char *selVal) /* Make a radio button that also sets tracking variable * in javascript. */ { jsMakeTrackingRadioButtonExtraHtml(cgiVar, jsVar, val, selVal, NULL); } void jsMakeTrackingCheckBox(struct cart *cart, char *cgiVar, char *jsVar, boolean usualVal) /* Make a check box filling in with existing value and * putting a javascript tracking variable on it. */ { char buf[256]; boolean oldVal = cartUsualBoolean(cart, cgiVar, usualVal); -char javascript[1024]; -safef(javascript, sizeof javascript, - "var %s=%d;", jsVar, oldVal); -jsInline(javascript); +jsInlineF("var %s=%d;", jsVar, oldVal); hPrintf(""); +jsOnEventByIdF("click", cgiVar, "%s=(%s+1)%%2;", jsVar, jsVar); safef(buf, sizeof(buf), "%s%s", cgiBooleanShadowPrefix(), cgiVar); cgiMakeHiddenVar(buf, "0"); } void jsTrackedVarCarryOver(struct dyString *dy, char *cgiVar, char *jsVar) /* Carry over tracked variable (radio button?) to hidden form. */ { dyStringPrintf(dy, "document.hiddenForm.%s.value=%s; ", cgiVar, jsVar); } char *jsRadioUpdate(char *cgiVar, char *jsVar, char *val) /* Make a little javascript to check and uncheck radio buttons * according to new value. To use this you must have called * jsInit somewhere, and also must use jsMakeTrackingRadioButton * to make the buttons. */ @@ -416,39 +410,37 @@ char collapseGroupVar[512]; safef(collapseGroupVar, sizeof(collapseGroupVar), "%s.section_%s_close", track, section); boolean isOpen = !cartUsualBoolean(cart, collapseGroupVar, !isOpenDefault); // Both plus button and title are now in same // but still colspan=2 because we are lib code and callers own the table. puts(""); printf("\n"); printf("\n", collapseGroupVar, collapseGroupVar, isOpen ? "0" : "1"); char *buttonImage = (isOpen ? "../images/remove_sm.gif" : "../images/add_sm.gif"); char id[256]; -char javascript[1024]; safef(id, sizeof id, "%s_button", section); -safef(javascript, sizeof javascript, "return setTableRowVisibility(this, '%s', '%s.section', 'section', true);", - section, track); printf("%s\n", id, buttonImage, (isOpen ? "-" : "+"), (isOpen ? "Collapse": "Expand")); -jsOnEventById("click", id, javascript); +jsOnEventByIdF("click", id, "return setTableRowVisibility(this, '%s', '%s.section', 'section', true);", + section, track); if (oldStyle || fontSize == NULL) printf(" %s\n", sectionTitle); else printf(" %s", fontSize, sectionTitle); puts("\n"); printf("", isOpen ? "" : "style='display: none' ", section, 1); } void jsBeginCollapsibleSectionOldStyle(struct cart *cart, char *track, char *section, char *sectionTitle, boolean isOpenDefault) /* Make the hidden input, collapse/expand button and needed for utils.js's * setTableRowVisibility(). Caller needs to have already created a and . * With support for varying font size */ { jsBeginCollapsibleSectionFull(cart, track, section, sectionTitle, isOpenDefault, NULL, TRUE);