bd6e3996c720821a29a4eaf6b8e9972e4c98a028 kate Wed Aug 12 16:50:17 2020 -0700 Add hg.conf var to enable Recommended Track Sets. Remove hgSession URL mod, in favor of hgTracks detecting non-Track-Set session load. Build patch. refs #25601 diff --git src/hg/hgTracks/recTrackSets.c src/hg/hgTracks/recTrackSets.c index 253261e..a05ef68 100644 --- src/hg/hgTracks/recTrackSets.c +++ src/hg/hgTracks/recTrackSets.c @@ -41,31 +41,33 @@ char *recTrackSetsFile() /* Generate path to file specifying menu of recommended track sets. * eg, DOCUMENT_ROOT/inc/recTrackSets.hg19.tab */ { char *root = hDocumentRoot(); char buf[200]; safef(buf, sizeof buf, "%s/%s/%s.%s.%s", root, REC_TRACK_SETS_DIR, REC_TRACK_SETS_FILE, database, REC_TRACK_SETS_EXT); return cloneString(buf); } boolean recTrackSetsEnabled() /* Return TRUE if feature is available */ { -return fileExists(recTrackSetsFile()); +char *cfgEnabled = cfgOption("browser.recTrackSets"); +return cfgEnabled && (sameString(cfgEnabled, "on") || sameString(cfgEnabled, "true")) && + fileExists(recTrackSetsFile()); } boolean recTrackSetsChangeDetectEnabled() /* Return TRUE if feature is available, in hgConf */ { char *cfgChanges = cfgOption("browser.recTrackSetsDetectChange"); if (cfgChanges && (sameString(cfgChanges, "on") || sameString(cfgChanges, "true"))) return TRUE; return FALSE; } struct recTrackSet *loadRecTrackSets() /* Read from tab-sep file. Return list or NULL if no track sets for this database */ { struct recTrackSet *recTrackSet, *recTrackSets = NULL; @@ -82,36 +84,56 @@ recTrackSet->sessionName = cloneString(row[2]); recTrackSet->description = cloneString(row[3]); slAddHead(&recTrackSets, recTrackSet); } slReverse(&recTrackSets); lineFileClose(&lf); return recTrackSets; } int recTrackSetsForDb() /* Return number of recommended track sets for this database */ { return slCount(loadRecTrackSets()); } +boolean hasRecTrackSet(struct cart *cart) +/* Check if currently loaded session is in the recommended track set */ +{ +if (!recTrackSetsEnabled()) + return FALSE; +struct recTrackSet *ts, *recTrackSets = loadRecTrackSets(); +if (!recTrackSets) + return FALSE; +char *session = cartOptionalString(cart, hgsOtherUserSessionName); +char *user = cartOptionalString(cart, hgsOtherUserName); +if (!session || !user) + return FALSE; +for (ts = recTrackSets; ts; ts = ts->next) + { + if (sameString(replaceChars(ts->sessionName, "%20", " "), session) && + sameString(ts->userName, user)) + return TRUE; + } +return FALSE; +} + void printRecTrackSets() /* Create dialog with list of recommended track sets */ { if (!recTrackSetsEnabled()) return; - struct recTrackSet *recTrackSet, *recTrackSets = loadRecTrackSets(); if (!recTrackSets) return; if (recTrackSetsChangeDetectEnabled()) jsInline("var recTrackSetsDetectChanges = true;"); hPrintf("<div style='display:none;' id='recTrackSetsPopup' title='Recommended Track Sets'>\n"); // TODO: Consider moving this to the tab file as a header section hPrintf("<p>These links provide track sets selected and pre-configured for " "specific user scenarios. They are designed to be useful at " "different genomic loci. Clicking a link below will create a browser " "window with these tracks visible, without changing the locus.</p>");