frontend: add Google Analytics snippet
These were previously added by an internal deploy script. Add them
directly to avoid needing internal bits.
Only activate analytics when running on play.golang.org.
Change-Id: I1f47972d99922199917d13aece26693e274514aa
Reviewed-on: https://go-review.googlesource.com/84978
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
diff --git a/frontend/edit.go b/frontend/edit.go
index 2e8809f..bb5eaa3 100644
--- a/frontend/edit.go
+++ b/frontend/edit.go
@@ -18,8 +18,9 @@
var editTemplate = template.Must(template.ParseFiles("edit.html"))
type editData struct {
- Snippet *snippet
- Share bool
+ Snippet *snippet
+ Share bool
+ Analytics bool
}
func (s *server) handleEdit(w http.ResponseWriter, r *http.Request) {
@@ -63,8 +64,9 @@
}
w.Header().Set("Content-Type", "text/html; charset=utf-8")
data := &editData{
- Snippet: snip,
- Share: allowShare(r),
+ Snippet: snip,
+ Share: allowShare(r),
+ Analytics: r.Host == hostname,
}
if err := editTemplate.Execute(w, data); err != nil {
s.log.Errorf("editTemplate.Execute(w, %+v): %v", data, err)
diff --git a/frontend/edit.html b/frontend/edit.html
index 7e240b4..8bf62f2 100644
--- a/frontend/edit.html
+++ b/frontend/edit.html
@@ -3,6 +3,16 @@
<head>
<title>The Go Playground</title>
<link rel="stylesheet" href="/static/style.css">
+ {{if .Analytics}}
+ <script async src="https://www.googletagmanager.com/gtag/js?id=UA-11222381-7"></script>
+ <script>
+ window.dataLayer = window.dataLayer || [];
+ function gtag(){dataLayer.push(arguments);}
+ gtag('js', new Date());
+ gtag('config', 'UA-11222381-7');
+ gtag('config', 'UA-49880327-6');
+ </script>
+ {{end}}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.8.2/jquery.min.js"></script>
<script src="/static/jquery-linedtextarea.js"></script>
<script src="/playground.js"></script>
@@ -49,20 +59,27 @@
about.show();
})
// Preserve "Imports" checkbox value between sessions.
- if (readCookie('playgroundImports') == 'true')
+ if (readCookie('playgroundImports') == 'true') {
$('#imports').attr('checked','checked');
+ }
$('#imports').change(function() {
createCookie('playgroundImports', $(this).is(':checked') ? 'true' : '');
});
+ {{if .Analytics}}
// Fire Google Analytics events for Run/Share button clicks.
- if (window.trackEvent) {
- $('#run').click(function() {
- window.trackEvent('playground', 'click', 'run-button');
+ $('#run').click(function() {
+ gtag('event', 'click', {
+ event_category: 'playground',
+ event_label: 'run-button',
});
- $('#share').click(function() {
- window.trackEvent('playground', 'click', 'share-button');
+ });
+ $('#share').click(function() {
+ gtag('event', 'click', {
+ event_category: 'playground',
+ event_label: 'share-button',
});
- }
+ });
+ {{end}}
});
function createCookie(name, value) {