753b10b19784b1d07abaf7ec6b827c752e40416f Merge parents 4880079 9c65dec tdreszer Wed Nov 30 12:27:45 2011 -0800 Merge-o-rama diff --cc src/hg/lib/jsHelper.c index 526f8da,0f2cf7b..5d79fce --- src/hg/lib/jsHelper.c +++ src/hg/lib/jsHelper.c @@@ -632,58 -635,54 +643,68 @@@ } hPrintf("%s]", indentBuf); break; } case jsonString: { hPrintf("%s", ((struct jsonStringElement *) json)->str); break; } default: { errAbort("jsonPrintRecurse; invalid type: %d", json->type); break; } } - freez(&indentBuf); + if (indentLevel >= 0) + freez(&indentBuf); } void jsonPrint(struct jsonElement *json, char *name, int indentLevel) { - // print out a jsonElement + // print out a jsonElement, indentLevel -1 means no indenting char *indentBuf = makeIndentBuf(indentLevel); if(name != NULL) - hPrintf("// START %s\n%svar %s = ", name, indentBuf, name); - jsonPrintRecurse(json, indentLevel); + { + if (indentLevel >= 0 ) + hPrintf("// START %s\n%s", name, indentBuf); + hPrintf("var %s = ", name); + } + jsonPrintRecurse(json, (indentLevel - 1)); // will increment back to indentLevel if(name != NULL) - hPrintf("%s;\n// END %s\n", indentBuf, name); - freez(&indentBuf); + { + hPrintf("%s;\n", indentBuf); + if (indentLevel >= 0 ) + hPrintf("// END %s\n", name); + } + if (indentLevel >= 0) + freez(&indentBuf); } +void jsonPrintGlobals(boolean wrapWithScriptTags) +// prints out the "common" globals json hash +// This hash is the one utils.js and therefore all CGIs know about +{ +if (jsonGlobalsHash != NULL) + { + if (wrapWithScriptTags) + printf("<script type='text/javascript'>\n"); + jsonPrint((struct jsonElement *) jsonGlobalsHash, "common", 0); + if (wrapWithScriptTags) + printf("</script>\n"); + } +} + void jsonErrPrintf(struct dyString *ds, char *format, ...) // Printf a json error to a dyString for communicating with ajax code; format is: // {"error": error message here} { va_list args; va_start(args, format); dyStringPrintf(ds, "{\"error\": \""); struct dyString *buf = newDyString(1000); dyStringVaPrintf(buf, format, args); dyStringAppend(ds, javaScriptLiteralEncode(dyStringCannibalize(&buf))); dyStringPrintf(ds, "\"}"); va_end(args); }