44027478d0f745cc34c843717bee4a6a397b6022 max Mon Aug 10 09:05:32 2026 -0700 hgc: route transMap, retrogene and literature alignments to the modern view too, refs #37893 These three click pages live in their own files (transMapClick.c, retroClick.c, pubs.c) and called htmlFramesetStart directly, so they were missed when the other alignment handlers moved to the modern single-page view. They all render through showSomeAlignment, so exporting alnModernStart (was static) and swapping their htmlFramesetStart call for it is enough: with modernAlignPage set they now show the modern page (neutral, non-BLAT chrome), and the classic frameset otherwise. diff --git src/hg/hgc/hgc.c src/hg/hgc/hgc.c index 504f1d89523..4eeff009ddd 100644 --- src/hg/hgc/hgc.c +++ src/hg/hgc/hgc.c @@ -8362,31 +8362,30 @@ displayChromName, dnaSeq->dna, dnaSeq->size, wholeTStart, 8, FALSE, isRc, FALSE, TRUE, TRUE, TRUE, TRUE, cdsS, cdsE, partTStart, partTEnd); return blockCount; } /* The modern single-page alignment (webStartGbNoBanner chrome, no <frameset>) can now stand in for * the classic frameset on any alignment page, not just hgBlat's - gated by the modernAlignPage * hg.conf flag. alnModernStart() starts the right page chrome and sets gAlnModern; showSomeAlignment() * then renders the modern or classic body to match. These are forward-declared here because * showSomeAlignment() sits above their definitions. */ static boolean gAlnModern = FALSE; static void showSomeAlignmentModern(struct psl *psl, bioSeq *oSeq, enum gfType qType, int qStart, int qEnd, char *qName, int cdsS, int cdsE, boolean blatContext); -static void alnModernStart(char *classicTitle); void showSomeAlignment(struct psl *psl, bioSeq *oSeq, enum gfType qType, int qStart, int qEnd, char *qName, int cdsS, int cdsE) /* Display protein or DNA alignment in a frame (or the modern single page when gAlnModern). */ { if (gAlnModern) { /* modern single-page view; blatContext=FALSE -> neutral chrome (no BLAT title/buttons) */ showSomeAlignmentModern(psl, oSeq, qType, qStart, qEnd, qName, cdsS, cdsE, FALSE); webEndGb(); exit(0); // we drew the whole page; skip the frameset close } int blockCount, i; struct tempName indexTn, bodyTn; FILE *index, *body; @@ -9278,35 +9277,36 @@ " headers:{'Content-Type':'application/x-www-form-urlencoded'}," " body:'hgsid=%s&hgS_doSaveSessionJson=1&hgS_shareAnon=1'})\n" " .then(function(r){ return r.json(); }).then(function(data){\n" " btn.textContent = label; btn.dataset.busy = '';\n" " if (!data || !data.name) return;\n" " var link = window.location.origin + window.location.pathname +\n" " '?g=htcBlatAlign&c=%s&o=%d&i=' + encodeURIComponent('%s') +\n" // db comes from the session " '&u=l&s=' + encodeURIComponent(data.name);\n" " if (window.topLinks && topLinks.shareUrl) topLinks.shareUrl(link);\n" " }).catch(function(){ btn.textContent = label; btn.dataset.busy = ''; });\n" "});\n" "})();\n", cartSessionId(cart), psl->tName, psl->tStart, qName); } -static void alnModernStart(char *classicTitle) +void alnModernStart(char *classicTitle) /* Begin an alignment page. With the modernAlignPage hg.conf flag set, start the modern single-page * chrome (webStartGbNoBanner) and arm gAlnModern so showSomeAlignment() renders the modern body; * otherwise start the classic <frameset>. This is the plain track-click entry point (mRNA/EST/PSL - * details), so the modern page is drawn in its neutral, non-BLAT form. */ + * details, transMap, retrogene, literature alignments), so the modern page is drawn in its neutral, + * non-BLAT form. Callers must pair it with showSomeAlignment(), which honors gAlnModern. */ { if (cfgOptionBooleanDefault("modernAlignPage", FALSE)) { gAlnModern = TRUE; char pageTitle[256]; safef(pageTitle, sizeof pageTitle, "Base Alignment: %s", blatAsmLabel(database)); webStartGbNoBanner(cart, database, pageTitle); // menubar + <main>, no legacy section tables } else htmlFramesetStart(classicTitle); } void htcUserAli(char *fileNames) /* Show alignment for accession. */ {