src/hg/lib/cart.c 1.104
1.104 2009/03/13 23:25:43 tdreszer
Add support for enable/disabling checkboxes by having 4 state boolShad hidden inputs
Index: src/hg/lib/cart.c
===================================================================
RCS file: /projects/compbio/cvsroot/kent/src/hg/lib/cart.c,v
retrieving revision 1.103
retrieving revision 1.104
diff -b -B -U 4 -r1.103 -r1.104
--- src/hg/lib/cart.c 9 Feb 2009 17:01:06 -0000 1.103
+++ src/hg/lib/cart.c 13 Mar 2009 23:25:43 -0000 1.104
@@ -311,9 +311,10 @@
{
if (startsWith(booShadow, cv->name))
{
char *booVar = cv->name + booSize;
- char *val = (cgiVarExists(booVar) ? "1" : "0");
+ // Support for 2 boolean CBs: checked/unchecked (1/0) and enabled/disabled:(-1/-2)
+ char *val = (cgiVarExists(booVar) ? "1" : cv->val);
storeInOldVars(cart, oldVars, booVar);
cartRemove(cart, booVar);
hashAdd(cgiHash, booVar, val);
hashAdd(booHash, booVar, NULL);
@@ -953,9 +954,9 @@
boolean cartBoolean(struct cart *cart, char *var)
/* Retrieve cart boolean. */
{
char *s = cartString(cart, var);
-if (sameString(s, "on") || atoi(s) != 0)
+if (sameString(s, "on") || atoi(s) > 0)
return TRUE;
else
return FALSE;
}
@@ -965,12 +966,9 @@
{
char *s = cartOptionalString(cart, var);
if (s == NULL)
return usual;
-if (sameString(s, "on") || atoi(s) != 0)
- return TRUE;
-else
- return FALSE;
+return (sameString(s, "on") || atoi(s) > 0);
}
boolean cartCgiUsualBoolean(struct cart *cart, char *var, boolean usual)
/* Look for var in CGI, then in cart, if not found then return usual. */
@@ -984,9 +982,9 @@
void cartSetBoolean(struct cart *cart, char *var, boolean val)
/* Set boolean value. */
{
-cartSetInt(cart,var,val);
+cartSetInt(cart,var,(val?1:0)); // Be explicit because some cartBools overloaded with negative "disabled" values
}
void cartMakeTextVar(struct cart *cart, char *var, char *defaultVal, int charSize)
/* Make a text control filled with value from cart if it exists or
@@ -1688,9 +1686,9 @@
/* Returns value or Aborts for a cart boolean ('on' or != 0) from lowest level on up:
subtrackName.suffix, then compositeName.view.suffix, then compositeName.suffix */
{
char *setting = cartStringClosestToHome(cart,tdb,compositeLevel,suffix);
-return (sameString(setting, "on") || atoi(setting) != 0);
+return (sameString(setting, "on") || atoi(setting) > 0);
}
boolean cartUsualBooleanClosestToHome(struct cart *cart, struct trackDb *tdb, boolean compositeLevel, char *suffix,boolean usual)
/* Returns value or {usual} for a cart boolean ('on' or != 0) from lowest level on up:
@@ -1698,9 +1696,9 @@
{
char *setting = cartOptionalStringClosestToHome(cart,tdb,compositeLevel,suffix);
if(setting == NULL)
return usual;
-return (sameString(setting, "on") || atoi(setting) != 0);
+return (sameString(setting, "on") || atoi(setting) > 0);
}
int cartUsualIntClosestToHome(struct cart *cart, struct trackDb *tdb, boolean compositeLevel, char *suffix, int usual)