e6cd762cc1e6ba7103394e13f2612198106881fc
braney
Sat Nov 18 14:16:48 2017 -0800
copy custom composites before hub load, but copy custom tracks AFTER hub
load.
diff --git src/hg/hgSession/hgSession.c src/hg/hgSession/hgSession.c
index 1d7948b..42642fe 100644
--- src/hg/hgSession/hgSession.c
+++ src/hg/hgSession/hgSession.c
@@ -774,30 +774,31 @@
struct dyString *encoded = newDyString(4096);
cartEncodeState(cart, encoded);
// Now add all the default visibilities to output.
outDefaultTracks(cart, encoded);
sqlDyAppendEscaped(dy, encoded->string);
dyStringFree(&encoded);
dyStringAppend(dy, "', ");
dyStringPrintf(dy, "%d, ", (shareSession ? 1 : 0));
dyStringPrintf(dy, "%s, now(), %d, '');", firstUse, useCount);
sqlUpdate(conn, dy->string);
dyStringFree(&dy);
/* Prevent modification of custom tracks just saved to namedSessionDb: */
+ cartCopyCustomComposites(cart);
cartCopyCustomTracks(cart);
if (useCount > INITIAL_USE_COUNT)
dyStringPrintf(dyMessage,
"Overwrote the contents of session %s "
"(that %s be shared with other users). "
"%s %s",
htmlEncode(sessionName), (shareSession ? "may" : "may not"),
getSessionLink(encUserName, encSessionName),
getSessionEmailLink(encUserName, encSessionName));
else
dyStringPrintf(dyMessage,
"Added a new session %s that %s be shared with other users. "
"%s %s",
htmlEncode(sessionName), (shareSession ? "may" : "may not"),
@@ -1121,30 +1122,31 @@
hel = cartFindPrefix(cart, hgsLoadPrefix);
if (hel != NULL)
{
char *encSessionName = hel->name + strlen(hgsLoadPrefix);
char *sessionName = cgiDecodeClone(encSessionName);
char wildStr[256];
safef(wildStr, sizeof(wildStr), "%s*", hgsLoadPrefix);
dyStringPrintf(dyMessage,
"Loaded settings from session %s. %s %s
\n",
htmlEncode(sessionName),
getSessionLink(encUserName, encSessionName),
getSessionEmailLink(encUserName, encSessionName));
cartLoadUserSession(conn, userName, sessionName, cart, NULL, wildStr);
cartHideDefaultTracks(cart);
+ cartCopyCustomComposites(cart);
hubConnectLoadHubs(cart);
cartCopyCustomTracks(cart);
cartCheckForCustomTracks(cart, dyMessage);
didSomething = TRUE;
}
cartHelList = cartFindPrefix(cart, hgsDeletePrefix);
for (hel = cartHelList; hel != NULL; hel = hel->next)
{
char *encSessionName = hel->name + strlen(hgsDeletePrefix);
char *sessionName = cgiDecodeClone(encSessionName);
sqlSafef(query, sizeof(query), "select shared from %s "
"where userName = '%s' and sessionName = '%s';",
namedSessionTable, encUserName, encSessionName);
int shared = sqlQuickNum(conn, query);
@@ -1176,30 +1178,31 @@
{
struct sqlConnection *conn = hConnectCentral();
struct dyString *dyMessage = dyStringNew(1024);
char *otherUser = trimSpaces(cartString(cart, hgsOtherUserName));
char *sessionName = trimSpaces(cartString(cart, hgsOtherUserSessionName));
char *encOtherUser = cgiEncodeFull(otherUser);
char *encSessionName = cgiEncodeFull(sessionName);
dyStringPrintf(dyMessage,
"Loaded settings from user %s's session %s. %s %s",
otherUser, htmlEncode(sessionName),
getSessionLink(otherUser, encSessionName),
getSessionEmailLink(encOtherUser, encSessionName));
cartLoadUserSession(conn, otherUser, sessionName, cart, NULL, actionVar);
cartHideDefaultTracks(cart);
+cartCopyCustomComposites(cart);
hubConnectLoadHubs(cart);
cartCopyCustomTracks(cart);
cartCheckForCustomTracks(cart, dyMessage);
hDisconnectCentral(&conn);
return dyStringCannibalize(&dyMessage);
}
void doSaveLocal()
/* Output current settings to be saved as a file on the user's machine.
* Return a message confirming what we did. */
{
char *fileName = textOutSanitizeHttpFileName(cartString(cart, hgsSaveLocalFileName));
char *compressType = cartString(cart, hgsSaveLocalFileCompress);
struct pipeline *compressPipe = textOutInit(fileName, compressType, NULL);
@@ -1289,30 +1292,31 @@
if (isNotEmpty(fileName))
dyStringPrintf(dyMessage, ", only the filename %s",
fileName);
dyStringAppend(dyMessage, ". Your settings have not been changed.");
lf = NULL;
}
dyStringPrintf(dyMessage, " "
"Browser",
hLocalHostCgiBinUrl(),
cartSessionVarName(), cartSessionId(cart));
}
if (lf != NULL)
{
cartLoadSettings(lf, cart, NULL, actionVar);
cartHideDefaultTracks(cart);
+ cartCopyCustomComposites(cart);
hubConnectLoadHubs(cart);
cartCopyCustomTracks(cart);
cartCheckForCustomTracks(cart, dyMessage);
lineFileClose(&lf);
}
return dyStringCannibalize(&dyMessage);
}
void renamePrefixedCartVar(char *prefix, char *oldName, char *newName)
/* If cart has prefix+oldName, replace it with prefix+newName = submit. */
{
char varName[256];
safef(varName, sizeof(varName), "%s%s", prefix, oldName);
if (cartVarExists(cart, varName))
{