120 lines
5.9 KiB
HTML
120 lines
5.9 KiB
HTML
{{ define "title" }}{{ .Title | plainify }} | {{ .Site.Title }}{{ end }}
|
|
|
|
{{ define "head-description" }}{{ .Summary | plainify }}{{ end }}
|
|
|
|
{{ define "main-class" }}--single{{ end }}
|
|
|
|
{{ define "footer-scripts" }}
|
|
{{ with .Params.locations }}
|
|
<script src="https://www.openlayers.org/api/OpenLayers.js"></script>
|
|
<script>
|
|
map = new OpenLayers.Map("mapdiv");
|
|
map.addLayer(new OpenLayers.Layer.OSM());
|
|
|
|
var lonLats = [];
|
|
{{ range . }}
|
|
{{ with ( index $.Site.Data.locations . ) }}
|
|
lonLats.push(new OpenLayers.LonLat( {{ .lon }} , {{ .lat }} )
|
|
.transform(
|
|
new OpenLayers.Projection("EPSG:4326"), // transform from WGS 1984
|
|
map.getProjectionObject() // to Spherical Mercator Projection
|
|
));
|
|
{{ else }}
|
|
{{ warnf "Could not find lat-lon for %q (%q)" . $.File.Path }}
|
|
{{ end }}
|
|
{{ end }}
|
|
|
|
/* TODO: Smarter zoom selection */
|
|
var zoom=5;
|
|
|
|
var markers = new OpenLayers.Layer.Markers( "Markers" );
|
|
map.addLayer(markers);
|
|
|
|
for (var i = 0; i < lonLats.length; i++) {
|
|
markers.addMarker(new OpenLayers.Marker(lonLats[i]));
|
|
}
|
|
|
|
/* TODO: Smarter centering */
|
|
map.setCenter(lonLats[0], zoom);
|
|
</script>
|
|
{{ end }}
|
|
{{ with .Params.scripts }}
|
|
{{ if in . "mathjax" }}
|
|
<script src="https://polyfill.io/v3/polyfill.min.js?features=es6"></script>
|
|
<script id="MathJax-script" async src="https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-mml-chtml.js"></script>
|
|
<script src="/js/mathjax-config.js"></script>
|
|
{{ end }}
|
|
{{ end }}
|
|
{{ end }}
|
|
|
|
{{ define "main-header" }}
|
|
<header class="site-content__header">
|
|
<div class="article-header__featured-image"
|
|
{{ if .Params.featured_image }}
|
|
{{ if .Resources.GetMatch .Params.featured_image }}
|
|
style="background-image: url({{ ( .Resources.GetMatch .Params.featured_image ).RelPermalink }})"
|
|
{{ else }}
|
|
style="background-image: url({{ .Params.featured_image }})"
|
|
{{ end }}
|
|
{{ end }}>
|
|
<div class="article-header__title-wrapper">
|
|
<h1 class="article-header__title{{ if gt ( len ( .Title | plainify ) ) 40 }} article-header__title--long{{ end }}">
|
|
<span role="text" itemprop="name">{{ .Title | safeHTML }}</span>
|
|
</h1>
|
|
{{ with .Params.subtitle }}
|
|
<p class="article-header__subtitle">{{ . | safeHTML }}</p>
|
|
{{ end }}
|
|
</div>
|
|
{{ with .Resources.GetMatch .Params.featured_image }}
|
|
<p class="attr">
|
|
{{ if .Params.attrlink }}<a href="{{ .Params.attrlink }}" target="_blank" rel="noopener">{{ end }}
|
|
{{- .Params.Attr | safeHTML -}}
|
|
{{ if .Params.attrlink }}</a>{{ end }}
|
|
{{ if .Params.attrlicence }} ({{ .Params.attrlicence }}){{ end }}
|
|
<p>
|
|
{{ end }}
|
|
</div>
|
|
|
|
<p class="article-header__word-count">~<span itemprop="wordCount">{{ .FuzzyWordCount | lang.NumFmt 0 }}</span> words</p>
|
|
<p class="article-header__publish-date">Published: <span itemprop="datePublished" datetime="{{ .PublishDate }}">{{ .PublishDate.Format "January 2" }}<sup>{{ if in (slice 1 21 31) .PublishDate.Day}}st{{ else if in (slice 2 22) .PublishDate.Day}}nd{{ else if in (slice 3 23) .PublishDate.Day}}rd{{ else }}th{{ end }}</sup>, 1{{ .PublishDate.Format "2006" | lang.NumFmt 0 }} <abbr style="text-transform: small-caps; font-size: 0.8em;" title="Holocene Era">HE</abbr></span></p>
|
|
<p class="article-header__modified-date">Last modified: <span itemprop="dateModified" datetime="{{ .Lastmod }}">{{ .Lastmod.Format "January 2" }}<sup>{{ if in (slice 1 21 31) .Lastmod.Day}}st{{ else if in (slice 2 22) .Lastmod.Day}}nd{{ else if in (slice 3 23) .Lastmod.Day}}rd{{ else }}th{{ end }}</sup>, 1{{ .Lastmod.Format "2006" | lang.NumFmt 0 }} <abbr style="text-transform: small-caps; font-size: 0.8em;" title="Holocene Era">HE</abbr></span></p>
|
|
|
|
{{ $post_age_in_years := math.Round ( div ( div ( now.Sub .PublishDate ).Hours 24 ) 365 ) }}
|
|
{{ if ( or .Params.site .Params.controversial ( gt $post_age_in_years 2 ) ) }}
|
|
<aside class="article-header__warnings">
|
|
<ul>
|
|
{{ if ( gt $post_age_in_years 2 ) }}<li>This piece was written <strong>over {{ $post_age_in_years }} years ago</strong>. It may no longer accurately reflect my views now, or may be factually outdated.</li>{{ end }}
|
|
{{ if .Params.controversial }}<li>This piece has been marked as potentially <strong>controversial</strong>, whether due to the topic addressed, the content of the article, or both. Don't say you weren't warned.</li>{{ end }}
|
|
{{ if .Params.site }}<li>This piece was originally written for an older version of this site. As such, it may not have transferred over properly and some images and links might be broken.</li>{{ end }}
|
|
</ul>
|
|
</aside>
|
|
{{ end }}
|
|
|
|
{{ if .Params.notes }}
|
|
<aside class="article-header__notes">
|
|
<ul>
|
|
{{ range .Params.notes }}
|
|
<li>{{ . | safeHTML }}</li>
|
|
{{ end }}
|
|
</ul>
|
|
</aside>
|
|
{{ end }}
|
|
|
|
{{ if and ( .TableOfContents ) ( ne .TableOfContents "<nav id=\"TableOfContents\"></nav>" ) }}
|
|
<nav class="article-header__table-of-contents">
|
|
<h2 class="article-header__subtitle">Table of Contents</h2>
|
|
{{ .TableOfContents }}
|
|
</nav>
|
|
{{ end }}
|
|
</header>
|
|
{{ end }}
|
|
|
|
{{ define "main-body" }}
|
|
<article class="site-content__body">
|
|
{{ .Content }}
|
|
</article>
|
|
{{ end }}
|
|
|
|
{{ define "main-footer" }}
|
|
{{ partial "post-meta.html" . }}
|
|
{{ end }}
|