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();