377ada15ebf2514739f715bcbff18c72f84ecb33 chmalee Fri Sep 1 09:48:17 2023 -0700 Put the database into the web page title on hgc pages, refs #19985 diff --git src/hg/lib/web.c src/hg/lib/web.c index 6b0c372..bfc4e3b 100644 --- src/hg/lib/web.c +++ src/hg/lib/web.c @@ -122,30 +122,31 @@ /*printf("Content-Type: text/plain\n\n");*/ webHeadAlreadyOutputed = TRUE; webInTextMode = TRUE; webPushErrHandlers(); } static void webStartWrapperDetailedInternal(struct cart *theCart, char *db, char *headerText, char *textOutBuf, boolean withHttpHeader, boolean withLogo, boolean skipSectionHeader, boolean withHtmlHeader) /* output a CGI and HTML header with the given title in printf format */ { char uiState[256]; char *scriptName = cgiScriptName(); +char *textOutBufDb = cloneString(textOutBuf); boolean isEncode = FALSE; if (theCart) { char *theGenome = NULL; char *genomeEnc = NULL; getDbAndGenome(theCart, &db, &theGenome, NULL); genomeEnc = cgiEncode(theGenome); safef(uiState, sizeof(uiState), "?%s=%s&%s=%s&%s=%s", orgCgiName, genomeEnc, dbCgiName, db, cartSessionVarName(), cartSessionId(theCart)); } else @@ -164,55 +165,62 @@ scriptName = cloneString(""); /* don't output two headers */ if(webHeadAlreadyOutputed) return; if (sameString(cgiUsualString("action",""),"encodeReleaseLog") || rStringIn("EncodeDataVersions", scriptName)) isEncode = TRUE; /* Preamble. */ dnaUtilOpen(); if (withHttpHeader) puts("Content-type:text/html\n"); +// If the database name is not already in the title string, add it now +if (endsWith(scriptName, "hgc") && db != NULL && !stringIn(db, textOutBufDb)) + { + struct dyString *newTitle = dyStringNew(0); + dyStringPrintf(newTitle, "%s %s", db, textOutBufDb); + textOutBufDb = dyStringCannibalize(&newTitle); + } if (withHtmlHeader) { char *newString, *ptr1, *ptr2; char *browserVersion; if (btIE == cgiClientBrowser(&browserVersion, NULL, NULL) && *browserVersion < '8') puts(""); else puts(""); // Strict would be nice since it fixes atleast one IE problem (use of :hover CSS pseudoclass) puts( "" "\n" "" "\n" ); generateCspMetaHeader(stdout); printf("\t%s\n", headerText); webPragmasEtc(); printf("\t"); /* we need to take any HTML formatting out of the titlebar string */ - newString = cloneString(textOutBuf); + newString = cloneString(textOutBufDb); - for(ptr1=newString, ptr2=textOutBuf; *ptr2 ; ptr2++) + for(ptr1=newString, ptr2=textOutBufDb; *ptr2 ; ptr2++) { if (*ptr2 == '<') { for(; *ptr2 && (*ptr2 != '>'); ptr2++) ; } else *ptr1++ = *ptr2; } *ptr1 = 0; htmlTextOut(newString); printf(" \n "); webIncludeResourceFile("HGStyle.css"); if (extraStyle != NULL) puts(extraStyle); @@ -241,31 +249,31 @@ "\"ENCODE" ""); puts("\"ENCODE"); } else { puts(""); } puts("" "\n" "" "\n" ); } if(!skipSectionHeader) /* this HTML must be in calling code if skipSectionHeader is TRUE */ { - webFirstSection(textOutBuf); + webFirstSection(textOutBufDb); }; webPushErrHandlers(); /* set the flag */ webHeadAlreadyOutputed = TRUE; errAbortSetDoContentType(FALSE); } /* static void webStartWrapperDetailedInternal() */ void webStartWrapperDetailedArgs(struct cart *theCart, char *db, char *headerText, char *format, va_list args, boolean withHttpHeader, boolean withLogo, boolean skipSectionHeader, boolean withHtmlHeader) /* output a CGI and HTML header with the given title in printf format */ { char textOutBuf[1024]; va_list argscp;