f621f87f73fd614e27adc747ba3ff044d2b4c4ad
braney
  Sat Jan 26 08:15:56 2019 -0800
Be smarter about setting track visibilities on the URL, including
dealing with super tracks, composites, and setting hub visibilities
without hub_ decoration.  Also, add ignoreCookies URL variable so folks
can link to a default cart.  #18544

diff --git src/hg/lib/cart.c src/hg/lib/cart.c
index 3e430cb..4d5f22d 100644
--- src/hg/lib/cart.c
+++ src/hg/lib/cart.c
@@ -2241,31 +2241,34 @@
 if (httpProxy)
     setenv("http_proxy", httpProxy, TRUE);
 char *httpsProxy = cfgOption("httpsProxy");
 if (httpsProxy)
     setenv("https_proxy", httpsProxy, TRUE);
 char *ftpProxy = cfgOption("ftpProxy");
 if (ftpProxy)
     setenv("ftp_proxy", ftpProxy, TRUE);
 char *noProxy = cfgOption("noProxy");
 if (noProxy)
     setenv("no_proxy", noProxy, TRUE);
 char *logProxy = cfgOption("logProxy");
 if (logProxy)
     setenv("log_proxy", logProxy, TRUE);
 
-char *hguid = getCookieId(cookieName);
+// if ignoreCookie is on the URL, don't check for cookies
+char *hguid = NULL;
+if (cgiOptionalString("ignoreCookie") == NULL)
+    hguid = getCookieId(cookieName);
 char *hgsid = getSessionId();
 struct cart *cart = cartNew(hguid, hgsid, exclude, oldVars);
 cartExclude(cart, sessionVar);
 return cart;
 }
 
 struct cart *cartAndCookieWithHtml(char *cookieName, char **exclude,
                                    struct hash *oldVars, boolean doContentType)
 /* Load cart from cookie and session cgi variable.  Write cookie
  * and optionally content-type part HTTP preamble to web page.  Don't
  * write any HTML though. */
 {
 // Note: early abort works fine but early warn does not
 htmlPushEarlyHandlers();
 struct cart *cart = cartForSession(cookieName, exclude, oldVars);