Markdown: optionally ping Google Analytics

If google.analyticsId is defined in gitiles.config the Google
Universal Analytics Web Tracking code will be automatically inserted
into the footer of the page with the specified property ID. This
will trigger an async load of the tracking code, and an async ping
of the page visit.

Change-Id: I0adb1e3f8291f8fcab3bff8eb1847b215c103a9a
diff --git a/gitiles-servlet/src/main/java/com/google/gitiles/doc/DocServlet.java b/gitiles-servlet/src/main/java/com/google/gitiles/doc/DocServlet.java
index fb922dd..076ee62 100644
--- a/gitiles-servlet/src/main/java/com/google/gitiles/doc/DocServlet.java
+++ b/gitiles-servlet/src/main/java/com/google/gitiles/doc/DocServlet.java
@@ -185,6 +185,11 @@
         .setImageLoader(img)
         .toSoyHtml(doc));
 
+    String analyticsId = cfg.getString("google", null, "analyticsId");
+    if (!Strings.isNullOrEmpty(analyticsId)) {
+      data.put("analyticsId", analyticsId);
+    }
+
     String page = renderer.render(SOY_TEMPLATE, data);
     byte[] raw = page.getBytes(UTF_8);
     res.setContentType(FormatType.HTML.getMimeType());
diff --git a/gitiles-servlet/src/main/resources/com/google/gitiles/templates/Doc.soy b/gitiles-servlet/src/main/resources/com/google/gitiles/templates/Doc.soy
index 2d11d97..da475c6 100644
--- a/gitiles-servlet/src/main/resources/com/google/gitiles/templates/Doc.soy
+++ b/gitiles-servlet/src/main/resources/com/google/gitiles/templates/Doc.soy
@@ -20,6 +20,7 @@
  * @param pageTitle h1 title from specific page.
  * @param? logoUrl url of image logo.
  * @param? homeUrl url to jump to top of site.
+ * @param? analyticsId Google Analytics Property ID.
  * @param sourceUrl url for source view of the page.
  * @param logUrl url for log history of page.
  * @param blameUrl url for blame of page source.
@@ -73,6 +74,18 @@
       </div>
     </div>
   </div>
+  {if $analyticsId}
+    /* From https://developers.google.com/analytics/devguides/collection/analyticsjs/ */
+    <script>
+    (function(i,s,o,g,r,a,m){lb}i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){lb}
+    (i[r].q=i[r].q||[]).push(arguments){rb},i[r].l=1*new Date();a=s.createElement(o),
+    m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+    {rb})(window,document,'script','//www.google-analytics.com/analytics.js','ga');
+
+    ga('create', '{$analyticsId}', 'auto');
+    ga('send', 'pageview', {lb}title: '{$pageTitle}'{rb});
+    </script>
+  {/if}
 </body>
 </html>
 {/template}