87a833f995f6bfc6879c95f4c882da0ae0feaa72
tdreszer
Thu Sep 2 13:23:32 2010 -0700
After changing cartDump to encode vars and vals, I decided to make it all ajaxy
diff --git src/hg/lib/cart.c src/hg/lib/cart.c
index 658b33c..39ef5f7 100644
--- src/hg/lib/cart.c
+++ src/hg/lib/cart.c
@@ -1106,27 +1106,41 @@
cgiMakeHiddenVar(sessionVar, buf);
}
-static void cartDumpItem(struct hashEl *hel)
+static void cartDumpItem(struct hashEl *hel,boolean asTable)
/* Dump one item in cart hash */
{
-struct dyString *dy = NULL;
-char *val = (char *)(hel->val);
-stripChar(val, '\r');
-dy = dyStringSub(val, "\n", "\\n");
-printf("%s %s\n", hel->name, dy->string);
-dyStringFree(&dy);
+char *var = htmlEncode(hel->name);
+char *val = htmlEncode((char *)(hel->val));
+if (asTable)
+ {
+ printf("
%s | ", var);
+ int width=(strlen(val)+1)*8;
+ if(width<100)
+ width = 100;
+ cgiMakeTextVarWithExtraHtml(hel->name, val, width, "onchange='setCartVar(this.name,this.value);'");
+ printf(" |
\n");
+ }
+else
+ printf("%s %s\n", var, val);
+
+freeMem(var);
+freeMem(val);
}
-void cartDumpList(struct hashEl *elList)
-/* Dump list of cart variables. */
+void cartDumpList(struct hashEl *elList,boolean asTable)
+/* Dump list of cart variables optionally as a table with ajax update support. */
{
struct hashEl *el;
if (elList == NULL)
return;
slSort(&elList, hashElCmp);
+if (asTable)
+ printf("\n");
for (el = elList; el != NULL; el = el->next)
- cartDumpItem(el);
+ cartDumpItem(el,asTable);
+if (asTable)
+ printf("
\n");
hashElFreeList(&elList);
}
@@ -1134,21 +1148,21 @@
/* Dump contents of cart. */
{
struct hashEl *elList = hashElListHash(cart->hash);
-cartDumpList(elList);
+cartDumpList(elList,cartVarExists(cart,CART_DUMP_AS_TABLE));
}
void cartDumpPrefix(struct cart *cart, char *prefix)
/* Dump all cart variables with prefix */
{
struct hashEl *elList = cartFindPrefix(cart, prefix);
-cartDumpList(elList);
+cartDumpList(elList,cartVarExists(cart,CART_DUMP_AS_TABLE));
}
void cartDumpLike(struct cart *cart, char *wildcard)
/* Dump all cart variables matching wildcard */
{
struct hashEl *elList = cartFindLike(cart, wildcard);
-cartDumpList(elList);
+cartDumpList(elList,cartVarExists(cart,CART_DUMP_AS_TABLE));
}
char *cartFindFirstLike(struct cart *cart, char *wildCard)