58bdb6ef0be1f4f9f45157aa3b2c544ca1a92e57
max
  Tue Jul 6 05:33:19 2021 -0700
adding button click tracking to hgTracks, refs #27283

diff --git src/hg/lib/googleAnalytics.c src/hg/lib/googleAnalytics.c
index 2033b17..35aa3c7 100644
--- src/hg/lib/googleAnalytics.c
+++ src/hg/lib/googleAnalytics.c
@@ -10,30 +10,31 @@
 void googleAnalytics()
 /* check for analytics configuration item and output google hooks if OK */
 {
 static boolean done = FALSE;
 
 if (done)
     return;
 
 done = TRUE;	/*	do not repeat this by mistake	*/
 
 char *analyticsKey = cfgOption("analyticsKey");
 
 // link tracking broke in Firefox once. In case this ever happens again, we can
 // now switch off outlink tracking quickly
 boolean trackClicks = cfgOptionBooleanDefault("analytics.trackClicks", TRUE);
+boolean trackButtons = cfgOptionBooleanDefault("analytics.trackButtons", TRUE);
 
 /*	if config is missing or empty, nothing happens here	*/
 if (isEmpty(analyticsKey))
     return;
 
 /* updated to Universal Analytics code 2014-06-19 */
 
 // replace analytics.js below with analytics_debug.js to activate ga debugging
 // It will log all events and all data that is sent to the javascript console, very handy
 jsInlineF(
 "  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){\n"
 "  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),\n"
 "  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)\n"
 "  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');\n"
 "  ga('create', '%s', 'auto');\n"
@@ -84,18 +85,22 @@
         "  $(document).ready(function() {\n"
         "      if (!window.ga || ga.loaded)\n" // When using an Adblocker, the ga object does not exist
         "          return;\n"
         "      var anchors = document.getElementsByTagName('a');\n"
         "      for (var i = 0; i < anchors.length; i++) { \n"
         "           var a = anchors[i];\n"
         "           var isExternal = (a.target.toLowerCase()==='_blank');\n"
         "           if (a.attributes.href && a.attributes.href.value!=='#' && isExternal)\n" // do not run on javascript links
         "               a.onclick = onExtAnchorClick;" // addEventHandler would not work here, the default click stops propagation.
         "      };\n"
         "      // on hgTracks: send an event with the current db, so we can report popularity of assemblies to NIH\n"
         "      if (typeof hgTracks !== 'undefined')\n"
         "          gaTrackDb(getDb());\n"
         "  });"
         );
+    if (trackButtons)
+        jsInlineF(
+        "  $(document).ready(function() {\n"
+        "      gaTrackButtons();\n" // see utils.js
+        "  });");
 }
-
 }