| 1 | {/* This is the article template. It defines how articles are formatted. */} |
|---|---|
| 2 | |
| 3 | {{define "root"}} |
| 4 | <!DOCTYPE html> |
| 5 | <html> |
| 6 | <head> |
| 7 | <title>{{.Title}}</title> |
| 8 | <link type="text/css" rel="stylesheet" href="/static/article.css"> |
| 9 | <meta charset='utf-8'> |
| 10 | <script> |
| 11 | // Initialize Google Analytics tracking code on production site only. |
| 12 | if (window["location"] && window["location"]["hostname"] == "talks.golang.org") { |
| 13 | var _gaq = _gaq || []; |
| 14 | _gaq.push(["_setAccount", "UA-11222381-6"]); |
| 15 | _gaq.push(["b._setAccount", "UA-49880327-6"]); |
| 16 | window.trackPageview = function() { |
| 17 | _gaq.push(["_trackPageview", location.pathname+location.hash]); |
| 18 | _gaq.push(["b._trackPageview", location.pathname+location.hash]); |
| 19 | }; |
| 20 | window.trackPageview(); |
| 21 | window.trackEvent = function(category, action, opt_label, opt_value, opt_noninteraction) { |
| 22 | _gaq.push(["_trackEvent", category, action, opt_label, opt_value, opt_noninteraction]); |
| 23 | _gaq.push(["b._trackEvent", category, action, opt_label, opt_value, opt_noninteraction]); |
| 24 | }; |
| 25 | } |
| 26 | </script> |
| 27 | </head> |
| 28 | |
| 29 | <body> |
| 30 | <div id="topbar" class="wide"> |
| 31 | <div class="container"> |
| 32 | <div id="heading">{{.Title}} |
| 33 | {{with .Subtitle}}{{.}}{{end}} |
| 34 | {{if .Authors}} |
| 35 | {{range .Authors}} |
| 36 | <div class="author"> |
| 37 | {{range .Elem}}{{elem $.Template .}}{{end}} |
| 38 | </div> |
| 39 | {{end}} |
| 40 | {{end}} |
| 41 | </div> |
| 42 | </div> |
| 43 | </div> |
| 44 | <div id="page" class="wide"> |
| 45 | <div class="container"> |
| 46 | {{with .Sections}} |
| 47 | <div id="toc" class="no-print"> |
| 48 | <div id="tochead">Contents</div> |
| 49 | {{template "TOC" .}} |
| 50 | </div> |
| 51 | {{end}} |
| 52 | |
| 53 | {{range .Sections}} |
| 54 | {{elem $.Template .}} |
| 55 | {{end}}{{/* of Section block */}} |
| 56 | |
| 57 | </div> |
| 58 | </div> |
| 59 | |
| 60 | {{if .PlayEnabled}} |
| 61 | <script src='/play.js'></script> |
| 62 | {{end}} |
| 63 | |
| 64 | <script> |
| 65 | (function() { |
| 66 | // Load Google Analytics tracking code on production site only. |
| 67 | if (window["location"] && window["location"]["hostname"] == "talks.golang.org") { |
| 68 | var ga = document.createElement("script"); ga.type = "text/javascript"; ga.async = true; |
| 69 | ga.src = ("https:" == document.location.protocol ? "https://ssl" : "http://www") + ".google-analytics.com/ga.js"; |
| 70 | var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(ga, s); |
| 71 | } |
| 72 | })(); |
| 73 | </script> |
| 74 | </body> |
| 75 | </html> |
| 76 | {{end}} |
| 77 | |
| 78 | {{define "TOC"}} |
| 79 | <ul class="toc-outer"> |
| 80 | {{range .}} |
| 81 | <li><a href="#TOC_{{.FormattedNumber}}">{{.Title}}</a></li> |
| 82 | {{with .Sections}}{{template "TOC-Inner" .}}{{end}} |
| 83 | {{end}} |
| 84 | </ul> |
| 85 | {{end}} |
| 86 | |
| 87 | {{define "TOC-Inner"}} |
| 88 | <ul class="toc-inner"> |
| 89 | {{range .}} |
| 90 | <li><a href="#TOC_{{.FormattedNumber}}">{{.Title}}</a></li> |
| 91 | {{with .Sections}}{{template "TOC-Inner" .}}{{end}} |
| 92 | {{end}} |
| 93 | </ul> |
| 94 | {{end}} |
| 95 | |
| 96 | {{define "newline"}} |
| 97 | {{/* No automatic line break. Paragraphs are free-form. */}} |
| 98 | {{end}} |
| 99 |
Members