770ed6ada89bdaaac49ba96963510af0a9338b89 galt Thu Feb 14 11:44:29 2019 -0800 hgSession custom track backup archive creation for downloading. Changing approach from backupAndRestore to backupOnly. Uses just plain real ascii .ct custom tracks. diff --git src/hg/hgSession/hgSession.c src/hg/hgSession/hgSession.c index c15aecc..6192545 100644 --- src/hg/hgSession/hgSession.c +++ src/hg/hgSession/hgSession.c @@ -453,54 +453,30 @@ printf(" "); cgiMakeButton(hgsDoLoadLocal, "submit"); printf("</TD></TR>\n"); printf("<TR><TD colspan=2></TD></TR>\n"); printf("<TR><TD colspan=2>Use settings from a URL (http://..., ftp://...):" "</TD>\n"); printf("<TD>\n"); cgiMakeOnKeypressTextVar(hgsLoadUrlName, cartUsualString(cart, hgsLoadUrlName, ""), 20, jsPressOnEnter(hgsDoLoadUrl)); printf(" "); cgiMakeButton(hgsDoLoadUrl, "submit"); printf("</TD></TR>\n"); -printf("<TR><TD colspan=2></TD></TR>\n"); - -char name[256]; -safef(name, sizeof name, "%s", hgsExtractUploadPrefix); - -printf("<TR>"); -printf("<TD colspan=2>Use settings including custom tracks in local backup archive file (.tar.gz):</TD>"); -printf("<TD><INPUT TYPE=FILE NAME='%s' id='%s'>", name, name); -printf(" <input type='submit' id='archiveUpload' value='submit'></TD></TR>"); -printf("<TR><TD colspan=2></TD></TR>"); - -// check the file name, e.g. does it have the right name or extension? -char js[1024]; -safef(js, sizeof js, -"var control = document.getElementById('%s');" -"var files = control.files;" -"if ((files.length == 1) && (files[0].name.endsWith('.tar.gz')))" -" return true;" -"alert('Please choose the correct backup archive ending in .tar.gz');" -"return false;" -, name); - -jsOnEventById("click", "archiveUpload", js); - printf("</TABLE>\n"); printf("<P></P>\n"); } void showSavingOptions(char *userName) /* Show options for saving a new named session in our db or to a file. */ { printf("<H3>Save Settings</H3>\n"); printf("<TABLE BORDERWIDTH=0>\n"); if (isNotEmpty(userName)) { printf("<TR><TD colspan=4>Save current settings as named session:" "</TD></TR>\n" "<TR><TD> </TD><TD>name:</TD><TD>\n"); @@ -551,33 +527,33 @@ char *compressType = cartUsualString(cart, hgsSaveLocalFileCompress, textOutCompressNone); cgiMakeRadioButton(hgsSaveLocalFileCompress, textOutCompressNone, differentWord(textOutCompressGzip, compressType)); printf(" plain text  "); cgiMakeRadioButton(hgsSaveLocalFileCompress, textOutCompressGzip, sameWord(textOutCompressGzip, compressType)); printf(" gzip compressed (ignored if output file is blank)"); printf("</TD><TD>"); printf(" "); cgiMakeButton(hgsDoSaveLocal, "submit"); printf("</TD></TR>\n"); printf("<TR><TD></TD><TD colspan=3>(leave file blank to get output in " "browser window)</TD></TR>\n"); printf("<TR><TD colspan=4></TD></TR>\n"); -printf("<TR><TD colspan=4>Save Full Session:</TD></TR>\n"); +printf("<TR><TD colspan=4>Save Custom Tracks:</TD></TR>\n"); printf("<TR><TD> </TD><TD colspan=2>"); -printf("backup settings including custom tracks to archive .tar.gz</TD>"); +printf("backup custom tracks to archive .tar.gz</TD>"); printf("<TD>"); printf(" "); cgiMakeButton(hgsShowDownloadPrefix, "submit"); printf("</TD></TR>\n"); printf("<TR><TD colspan=4></TD></TR>\n"); printf("</TABLE>\n"); } void showSessionControls(char *userName, boolean savedSessionsSupported, boolean webStarted) /* If userName is non-null, show sessions that belong to user and allow * saving of named sessions. * If savedSessionsSupported, allow import of named sessions. * Allow export/import of settings from file/URL. */ @@ -719,32 +695,30 @@ { char varName[256]; safef(varName, sizeof(varName), "%s%s", cgiBooleanShadowPrefix(), hgsSharePrefix); cartRemovePrefix(cart, varName); cartRemovePrefix(cart, hgsSharePrefix); safef(varName, sizeof(varName), "%s%s", cgiBooleanShadowPrefix(), hgsGalleryPrefix); cartRemovePrefix(cart, varName); cartRemovePrefix(cart, hgsGalleryPrefix); cartRemovePrefix(cart, hgsLoadPrefix); cartRemovePrefix(cart, hgsEditPrefix); cartRemovePrefix(cart, hgsLoadLocalFileName); cartRemovePrefix(cart, hgsDeletePrefix); cartRemovePrefix(cart, hgsShowDownloadPrefix); cartRemovePrefix(cart, hgsMakeDownloadPrefix); cartRemovePrefix(cart, hgsDoDownloadPrefix); -cartRemovePrefix(cart, hgsExtractUploadPrefix); -cartRemovePrefix(cart, hgsDoUploadPrefix); cartRemovePrefix(cart, hgsDo); cartRemove(cart, hgsOldSessionName); cartRemove(cart, hgsCancel); } static void outIfNotPresent(struct cart *cart, struct dyString *dy, char *track, int tdbVis) /* Output default trackDb visibility if it's not mentioned in the cart. */ { char *cartVis = cartOptionalString(cart, track); if (cartVis == NULL) { if (dy) dyStringPrintf(dy,"&%s=%s", track, hStringFromTv(tdbVis)); else printf("%s %s\n", track, hStringFromTv(tdbVis)); @@ -1463,32 +1437,30 @@ char *encNewName = cgiEncodeFull(newName); sqlSafef(query, sizeof(query), "UPDATE %s set sessionName = '%s' WHERE userName = '%s' AND sessionName = '%s';", namedSessionTable, encNewName, encUserName, encSessionName); sqlUpdate(conn, query); dyStringPrintf(dyMessage, "Changed session name from %s to <B>%s</B>.\n", sessionName, newName); sessionName = newName; encSessionName = encNewName; renamePrefixedCartVar(hgsEditPrefix , encOldSessionName, encNewName); renamePrefixedCartVar(hgsLoadPrefix , encOldSessionName, encNewName); renamePrefixedCartVar(hgsDeletePrefix , encOldSessionName, encNewName); renamePrefixedCartVar(hgsShowDownloadPrefix , encOldSessionName, encNewName); renamePrefixedCartVar(hgsMakeDownloadPrefix , encOldSessionName, encNewName); renamePrefixedCartVar(hgsDoDownloadPrefix , encOldSessionName, encNewName); - renamePrefixedCartVar(hgsExtractUploadPrefix, encOldSessionName, encNewName); - renamePrefixedCartVar(hgsDoUploadPrefix , encOldSessionName, encNewName); if (shared >= 2) { thumbnailRemove(encUserName, encSessionName, conn); thumbnailAdd(encUserName, encNewName, conn, dyMessage); } } char sharedVarName[256]; char galleryVarName[256]; safef(sharedVarName, sizeof(sharedVarName), hgsSharePrefix "%s", encOldSessionName); safef(galleryVarName, sizeof(galleryVarName), hgsGalleryPrefix "%s", encOldSessionName); if (cgiBooleanDefined(sharedVarName) || cgiBooleanDefined(galleryVarName)) { int newShared = shared; if (cgiBooleanDefined(sharedVarName)) @@ -1670,143 +1642,63 @@ { // clear backgroundStatus from the cart cartRemove(cart, "backgroundStatus"); /* Save cart variables. */ cartSaveState(cart); getBackgroundStatus(backgroundStatus); exit(0); } char *backgroundExec = cloneString(cgiUsualString("backgroundExec", NULL)); struct hashEl *showDownloadList = cartFindPrefix(cart, hgsShowDownloadPrefix); struct hashEl *makeDownloadList = cartFindPrefix(cart, hgsMakeDownloadPrefix); struct hashEl *doDownloadList = cartFindPrefix(cart, hgsDoDownloadPrefix); -struct hashEl *extractUploadList = cartFindPrefix(cart, hgsExtractUploadPrefix); -struct hashEl *doUploadList = cartFindPrefix(cart, hgsDoUploadPrefix); -// The form gets submitted but no filename for upload was chosen and submitted. -if (extractUploadList && sameString(hgsExtractUploadPrefix, extractUploadList->name)) - extractUploadList = NULL; // no filename was submitted. ignore. +// TODO REMOVE THESE LINES GALT +//struct hashEl *extractUploadList = cartFindPrefix(cart, hgsExtractUploadPrefix); +//struct hashEl *doUploadList = cartFindPrefix(cart, hgsDoUploadPrefix); if (showDownloadList) showDownloadSessionCtData(showDownloadList); else if (makeDownloadList) { if (sameOk(backgroundExec,"makeDownloadSessionCtData")) { // only one, not a list. struct hashEl *hel = makeDownloadList; char *param1 = cloneString(hel->name); char *backgroundProgress = NULL; prepBackGroundCall(&backgroundProgress, hgsMakeDownloadPrefix); makeDownloadSessionCtData(param1, backgroundProgress); exit(0); // cannot return } else { launchForeAndBackGround("makeDownloadSessionCtData"); exit(0); } } else if (doDownloadList) doDownloadSessionCtData(doDownloadList); -else if (extractUploadList) - { - if (sameOk(backgroundExec,"extractUploadSessionCtData")) - { - // only one, but becomes a list - // since there are multiple cart names with suffixes for handling binary submitted file. - //hgS_extractUpload___filepath - //hgS_extractUpload___binary - //hgS_extractUpload___filename - char *param1 = NULL; - char *param2 = NULL; - char *param3 = NULL; - struct hashEl *hel = NULL; - for (hel = extractUploadList; hel; hel = hel->next) - { - if (endsWith(hel->name, "__binary")) - param1 = cloneString(hel->name); - if (endsWith(hel->name, "__filename")) - param2 = cloneString(hel->name); - if (endsWith(hel->name, "__filepath")) - param3 = cloneString(hel->name); - } - if (!param1) - errAbort("missing __binary param"); - if (!param2) - errAbort("missing __filename param"); - if (!param3) - errAbort("missing __filepath param"); - - char *param1Value = cloneString(cartOptionalString(cart, param1)); - char *param2Value = cloneString(cartOptionalString(cart, param2)); - char *param3Value = cloneString(cartOptionalString(cart, param3)); - - char *backgroundProgress = NULL; - prepBackGroundCall(&backgroundProgress, hgsExtractUploadPrefix); - - extractUploadSessionCtData( - param1, param1Value, - param2, param2Value, - param3, param3Value, - backgroundProgress); - - exit(0); // cannot return - } - else - { - passSubmittedBinaryAsTrashFile(extractUploadList); - - launchForeAndBackGround("extractUploadSessionCtData"); - - exit(0); - } - - } -else if (doUploadList) - { - if (sameOk(backgroundExec,"doUploadSessionCtData")) - { - // only one, not a list. - struct hashEl *hel = doUploadList; - char *param1 = cloneString(hel->name); - - char *backgroundProgress = NULL; - prepBackGroundCall(&backgroundProgress, hgsDoUploadPrefix); - - doUploadSessionCtData(param1, backgroundProgress); - - exit(0); // cannot return - } - else - { - - launchForeAndBackGround("doUploadSessionCtData"); - - exit(0); - } - - } else if (cartVarExists(cart, hgsDoMainPage) || cartVarExists(cart, hgsCancel)) doMainPage(userName, NULL); else if (cartVarExists(cart, hgsDoNewSession)) { char *message = doNewSession(userName); doMainPage(userName, message); } else if (cartVarExists(cart, hgsDoOtherUser)) { char *message = doOtherUser(hgsDoOtherUser); doMainPage(userName, message); } else if (cartVarExists(cart, hgsDoSaveLocal)) { doSaveLocal();