2837ed0c110b12b4549d82ffaa4f154bdb2a09c4 max Mon Jan 8 04:51:09 2024 -0800 adding GA4 code to second code that generated <HEAD>, refs #30725 diff --git src/hg/lib/web.c src/hg/lib/web.c index bfc4e3b..571a2c5 100644 --- src/hg/lib/web.c +++ src/hg/lib/web.c @@ -162,80 +162,84 @@ // haveBlat = hIsBlatIndexedDatabase(db); bar system in menuBar() if (scriptName == NULL) 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("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 3.2//EN\">"); else puts("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" " "\"http://www.w3.org/TR/html4/loose.dtd\">"); // Strict would be nice since it fixes atleast one IE problem (use of :hover CSS pseudoclass) puts( "<HTML>" "\n" "<HEAD>" "\n" ); generateCspMetaHeader(stdout); + htmlPrintAnalyticsLink(stdout); + printf("\t%s\n", headerText); webPragmasEtc(); printf("\t<TITLE>"); /* we need to take any HTML formatting out of the titlebar string */ newString = cloneString(textOutBufDb); for(ptr1=newString, ptr2=textOutBufDb; *ptr2 ; ptr2++) { if (*ptr2 == '<') { for(; *ptr2 && (*ptr2 != '>'); ptr2++) ; } else *ptr1++ = *ptr2; } *ptr1 = 0; htmlTextOut(newString); printf(" </TITLE>\n "); webIncludeResourceFile("HGStyle.css"); if (extraStyle != NULL) puts(extraStyle); + printf("</HEAD>\n"); printBodyTag(stdout); htmlWarnBoxSetup(stdout);// Sets up a warning box which can be filled with errors as they occur puts(commonCssStyles()); } /* Put up the hot links bar. */ char *menuStr = menuBar(theCart, db); if(menuStr) { puts(menuStr); } webStartSectionTables();