This commit is contained in:
8
layouts/404.html
Normal file
8
layouts/404.html
Normal file
@@ -0,0 +1,8 @@
|
||||
{{ define "content" }}
|
||||
<article>
|
||||
<h1 class="title">
|
||||
404 — Not Found
|
||||
</h1>
|
||||
<h1 class="title"><a href="{{ "/" | relURL }}">Go Home</a></h1>
|
||||
</article>
|
||||
{{ end }}
|
||||
20
layouts/_default/baseof.html
Normal file
20
layouts/_default/baseof.html
Normal file
@@ -0,0 +1,20 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="{{ $.Site.LanguageCode | default "en" }}">
|
||||
{{ partial "html-head.html" . }}
|
||||
|
||||
<body class="has-navbar-fixed-top">
|
||||
<div id="footer-fix-body-wrapper">
|
||||
{{ block "header" . }}{{ partial "header.html" .}}{{ end }}
|
||||
<main>
|
||||
<div class="columns is-gapless is-centered is-mobile">
|
||||
<div class="column is-12 is-11-widescreen is-10-fullhd" style="max-width:80em;">
|
||||
<div class="content">
|
||||
{{ block "content" . }}{{ end }}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</main>
|
||||
</div>
|
||||
{{ block "footer" . }}{{ partial "site-footer.html" . }}{{ end }}
|
||||
</body>
|
||||
</html>
|
||||
12
layouts/_default/list.html
Normal file
12
layouts/_default/list.html
Normal file
@@ -0,0 +1,12 @@
|
||||
{{ define "content" }}
|
||||
<div class="section">
|
||||
{{ if isset .Params "title" }}
|
||||
<h1 class="subtitle is-3 has-text-centered has-text-weight-normal">{{- title .Title -}}</h1>
|
||||
{{ end }}
|
||||
|
||||
{{- .Content -}}
|
||||
<div class="mt-6">
|
||||
{{- partial "pagelist-default.html" . -}}
|
||||
</div>
|
||||
</div>
|
||||
{{ end }}
|
||||
9
layouts/_default/single.html
Normal file
9
layouts/_default/single.html
Normal file
@@ -0,0 +1,9 @@
|
||||
{{ define "content" }}
|
||||
<div class="section">
|
||||
{{ if isset .Params "title" }}
|
||||
<h1 class="subtitle is-3 has-text-centered has-text-weight-normal">{{- title .Title -}}</h1>
|
||||
<hr>
|
||||
{{ end }}
|
||||
{{- .Content -}}
|
||||
</div>
|
||||
{{ end }}
|
||||
22
layouts/_default/sitemap.xml
Normal file
22
layouts/_default/sitemap.xml
Normal file
@@ -0,0 +1,22 @@
|
||||
{{ printf "<?xml version=\"1.0\" encoding=\"utf-8\" standalone=\"yes\" ?>" | safeHTML }}
|
||||
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"
|
||||
xmlns:xhtml="http://www.w3.org/1999/xhtml">
|
||||
{{ range .Data.Pages }}{{ if ne .Params.sitemapExclude true }}
|
||||
<url>
|
||||
<loc>{{ .Permalink }}</loc>{{ if not .Lastmod.IsZero }}
|
||||
<lastmod>{{ safeHTML ( .Lastmod.Format "2006-01-02T15:04:05-07:00" ) }}</lastmod>{{ end }}{{ with .Sitemap.ChangeFreq }}
|
||||
<changefreq>{{ . }}</changefreq>{{ end }}{{ if ge .Sitemap.Priority 0.0 }}
|
||||
<priority>{{ .Sitemap.Priority }}</priority>{{ end }}{{ if .IsTranslated }}{{ range .Translations }}
|
||||
<xhtml:link
|
||||
rel="alternate"
|
||||
hreflang="{{ .Lang }}"
|
||||
href="{{ .Permalink }}"
|
||||
/>{{ end }}
|
||||
<xhtml:link
|
||||
rel="alternate"
|
||||
hreflang="{{ .Lang }}"
|
||||
href="{{ .Permalink }}"
|
||||
/>{{ end }}
|
||||
</url>
|
||||
{{ end }}{{ end }}
|
||||
</urlset>
|
||||
45
layouts/blog/list.html
Normal file
45
layouts/blog/list.html
Normal file
@@ -0,0 +1,45 @@
|
||||
{{ define "content" }}
|
||||
<div class="section">
|
||||
<div class="columns is-mobile is-centered">
|
||||
<div class="column is-8-desktop" style="max-width:45em;">
|
||||
{{ range (.Paginate (where .Site.RegularPages "Type" "blog") 5).Pages }}
|
||||
<div class="box">
|
||||
<div class="content">
|
||||
<h3><a href="{{ .RelPermalink }}">{{ .Title }}</a></h3>
|
||||
</div>
|
||||
|
||||
<div class="content">
|
||||
{{ if isset .Params "summary" }}
|
||||
{{ .Params.summary }}
|
||||
{{ else }}
|
||||
{{ .Summary }}
|
||||
{{ end }}
|
||||
</div>
|
||||
|
||||
<hr>
|
||||
<div class="columns is-mobile">
|
||||
<div class="column is-narrow">
|
||||
<time>{{ .Date.Format "2006-01-02" }}</time>
|
||||
</div>
|
||||
<div class="column is-clearfix">
|
||||
<div class="tags is-pulled-right">
|
||||
{{ range .Params.tags }}
|
||||
<span class="tag is-medium"><a href="{{ "/tags/" }}{{ . }}"> {{ . }} </a></span>
|
||||
{{ end }}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{{ end }}
|
||||
|
||||
<hr>
|
||||
|
||||
{{ partial "pagination.html" . }}
|
||||
<div class="content is-pulled-right">
|
||||
<a href="/blog/list" class="is-size-7">See list of all posts</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{{ end }}
|
||||
32
layouts/blog/postlist.html
Normal file
32
layouts/blog/postlist.html
Normal file
@@ -0,0 +1,32 @@
|
||||
{{ define "content" }}
|
||||
<div class="section">
|
||||
<h1 class="subtitle is-3 has-text-centered has-text-weight-normal">{{- title .Title -}}</h1>
|
||||
<div class="content mt-6">
|
||||
<table class="table is-striped is-hoverable is-bordered">
|
||||
<thead>
|
||||
<tr>
|
||||
{{ range slice "Title" "Date" }}
|
||||
<th>{{ . }}</th>
|
||||
{{ end }}
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
{{ range ((where .Site.RegularPages "Type" "blog") | complement (slice .)) }}
|
||||
<tr>
|
||||
<td>
|
||||
<a href="{{ .Params.Permalink }}">
|
||||
{{ .Title }}
|
||||
</a>
|
||||
</td>
|
||||
<td>
|
||||
<time datetime="{{- dateFormat "2006-01-02" .Date -}}">
|
||||
{{- dateFormat "2006-01-02" .Date -}}
|
||||
</time>
|
||||
</td>
|
||||
</tr>
|
||||
{{ end }}
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
{{ end }}
|
||||
47
layouts/blog/single.html
Normal file
47
layouts/blog/single.html
Normal file
@@ -0,0 +1,47 @@
|
||||
{{ define "content" }}
|
||||
<div class="columns is-gapless is-mobile is-centered">
|
||||
<div class="column is-12 is-8-desktop is-offset-2-desktop" style="max-width:80ch;">
|
||||
<article class="section">
|
||||
<h1 class="subtitle is-3 has-text-centered has-text-weight-normal">
|
||||
{{ if (default true (.Params.titlecase)) }}
|
||||
{{- title .Title -}}
|
||||
{{ else }}
|
||||
{{- .Title -}}
|
||||
{{ end }}
|
||||
</h1>
|
||||
<div class="content has-text-centered is-size-6 mt-4">
|
||||
<time datetime="{{- .Date.Format "2006-01-02" -}}">
|
||||
{{- .Date.Format "2006-01-02" -}}
|
||||
</time>
|
||||
{{ if not (eq .Lastmod .Date) }}
|
||||
<time datetime="{{- .Date.Format "2006-01-02" -}}">
|
||||
(last update: {{- .Lastmod.Format "2006-01-02" -}})
|
||||
</time>
|
||||
{{ end }}
|
||||
</div>
|
||||
<hr class="my-6">
|
||||
|
||||
<div class="content is-normal">
|
||||
{{- .Content -}}
|
||||
</div>
|
||||
<div class="columns section">
|
||||
<div class="column">
|
||||
{{ if ne .Params.tags nil }}
|
||||
<div class="content">
|
||||
<h3>Tags</h3>
|
||||
<div class="tags">
|
||||
{{ range .Params.tags }}
|
||||
<span class="tag has-background-grey-lighter is-medium"><a href="{{ ($.Site.GetPage (printf "/%s" .)).Permalink }}">{{ . }}</a></span>
|
||||
{{ end }}
|
||||
</div>
|
||||
</div>
|
||||
{{ end }}
|
||||
</div>
|
||||
<div class="column">
|
||||
{{- partial "related.html" . -}}
|
||||
</div>
|
||||
</div>
|
||||
</article>
|
||||
</div>
|
||||
</div>
|
||||
{{ end }}
|
||||
11
layouts/index.html
Normal file
11
layouts/index.html
Normal file
@@ -0,0 +1,11 @@
|
||||
{{ define "content" }}
|
||||
<div class="columns is-gapless is-centered is-mobile">
|
||||
<div class="column" style="max-width:60em;">
|
||||
<div class="section content">
|
||||
<article class="is-normal has-text-justified">
|
||||
{{- .Content -}}
|
||||
</article>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{{ end }}
|
||||
69
layouts/partials/header.html
Normal file
69
layouts/partials/header.html
Normal file
@@ -0,0 +1,69 @@
|
||||
<script>
|
||||
document.addEventListener('DOMContentLoaded', () => {
|
||||
|
||||
// Get all "navbar-burger" elements
|
||||
const $navbarBurgers = Array.prototype.slice.call(document.querySelectorAll('.navbar-burger'), 0);
|
||||
|
||||
// Check if there are any navbar burgers
|
||||
if ($navbarBurgers.length > 0) {
|
||||
|
||||
// Add a click event on each of them
|
||||
$navbarBurgers.forEach( el => {
|
||||
el.addEventListener('click', () => {
|
||||
|
||||
// Get the target from the "data-target" attribute
|
||||
const target = el.dataset.target;
|
||||
const $target = document.getElementById(target);
|
||||
|
||||
// Toggle the "is-active" class on both the "navbar-burger" and the "navbar-menu"
|
||||
el.classList.toggle('is-active');
|
||||
$target.classList.toggle('is-active');
|
||||
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
});
|
||||
</script>
|
||||
<header>
|
||||
<nav class="navbar is-fixed-top" aria-label="main navigation">
|
||||
<div class="navbar-brand">
|
||||
<a class="navbar-item has-text-weight-normal is-size-4 is-smallcaps" href="{{ .Site.BaseURL }}">
|
||||
{{ .Site.Title|safeHTML }}
|
||||
</a>
|
||||
<a role="button" class="navbar-burger burger" aria-label="menu" aria-expanded="false" data-target="navMenu">
|
||||
<span aria-hidden="true"></span>
|
||||
<span aria-hidden="true"></span>
|
||||
<span aria-hidden="true"></span>
|
||||
</a>
|
||||
</div>
|
||||
<div id="navMenu" class="navbar-menu">
|
||||
<div class="navbar-end">
|
||||
{{ range .Site.Menus.main }}
|
||||
{{ if .HasChildren }}
|
||||
<div class="navbar-item has-dropdown is-hoverable">
|
||||
<a class="navbar-link is-smallcaps">
|
||||
{{ .Name }}
|
||||
</a>
|
||||
<div class="navbar-dropdown is-right">
|
||||
{{ $len := len .Children }}
|
||||
{{ range $i, $child := .Children }}
|
||||
<a href="{{ $child.URL }}" title="{{ $child.Name }}" class="navbar-item is-smallcaps">
|
||||
{{ $child.Name }}
|
||||
</a>
|
||||
{{ if not (eq (add $len -1) $i) }}
|
||||
<hr class="navbar-divider">
|
||||
{{ end }}
|
||||
{{ end }}
|
||||
</div>
|
||||
</div>
|
||||
{{ else }}
|
||||
<a href="{{ .URL }}" title="{{ .Name }}" class="mr-3 navbar-item is-smallcaps">
|
||||
{{ .Name }}
|
||||
</a>
|
||||
{{ end }}
|
||||
{{ end }}
|
||||
</div>
|
||||
</div>
|
||||
</nav>
|
||||
</header>
|
||||
28
layouts/partials/html-head.html
Normal file
28
layouts/partials/html-head.html
Normal file
@@ -0,0 +1,28 @@
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
|
||||
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bulma@0.9.2/css/bulma.min.css">
|
||||
|
||||
<meta name="author" content="{{ $.Site.Params.author }}">
|
||||
<meta name="description" content="{{ $.Site.Params.description }}">
|
||||
{{ if .Page.Title }}
|
||||
<title>{{ .Page.Title }} – {{ .Site.Title | safeHTML }}</title>
|
||||
{{ else }}
|
||||
<title>{{ .Site.Title | safeHTML }}</title>
|
||||
{{ end }}
|
||||
|
||||
{{ hugo.Generator }}
|
||||
|
||||
{{ if .Site.Params.allow_robots }}
|
||||
<meta name="robots" content="all">
|
||||
{{ else }}
|
||||
<meta name="robots" content="noindex, nofollow">
|
||||
{{ end }}
|
||||
|
||||
<link rel="stylesheet" href="/css/main.css" >
|
||||
<link rel="stylesheet" href="/css/syntax.css" >
|
||||
<link rel="stylesheet" href="/fonts/fontawesome/css/all.css">
|
||||
<link rel="shortcut icon" href="/favicon.svg" type="image/x-icon" />
|
||||
</head>
|
||||
103
layouts/partials/pagelist-default.html
Normal file
103
layouts/partials/pagelist-default.html
Normal file
@@ -0,0 +1,103 @@
|
||||
<div class="content">
|
||||
<table class="table is-striped is-hoverable is-bordered">
|
||||
{{ if isset .Params "infos" }}
|
||||
{{ if gt (len .Params.infos) 1 }}
|
||||
<thead>
|
||||
<tr>
|
||||
{{ range .Params.infos }}
|
||||
<th>{{ title .name }}</th>
|
||||
{{ end }}
|
||||
</tr>
|
||||
</thead>
|
||||
{{ end }}
|
||||
{{ end }}
|
||||
<tbody>
|
||||
{{ range $page := (.Paginator 15).Pages }}
|
||||
<tr>
|
||||
{{ range $info := $.Params.infos }}
|
||||
{{ $key := "" }}
|
||||
{{ if eq (index $info "key") nil }}
|
||||
{{ $key = $info.name }}
|
||||
{{ else }}
|
||||
{{ $key = $info.key }}
|
||||
{{ end }}
|
||||
|
||||
{{ $value := (index $page.Params $key) }}
|
||||
|
||||
{{ $type := "" }}
|
||||
{{ if ne (index $info "type") nil }}
|
||||
{{ $type = $info.type }}
|
||||
{{ end }}
|
||||
|
||||
{{ $link := false }}
|
||||
{{ $linktarget := "" }}
|
||||
|
||||
{{/* get default link */}}
|
||||
{{ if ne (index $info "defaultlink") nil }}
|
||||
{{ $link = $info.defaultlink }}
|
||||
{{ end }}
|
||||
|
||||
{{/* look for overwrites */}}
|
||||
{{ if ne (index $page.Params "links") nil }}
|
||||
{{ if ne (index $page.Params.links $key) nil }}
|
||||
{{ $link = default $link (index (index $page.Params.links $key) "enable") }}
|
||||
{{ end }}
|
||||
{{ end }}
|
||||
|
||||
{{/* get the link target */}}
|
||||
{{ if ne (index $page.Params "links") nil }}
|
||||
{{ if ne (index $page.Params.links $key) nil }}
|
||||
{{ $linktarget = default "" (index (index $page.Params.links $key) "target") }}
|
||||
{{ end }}
|
||||
{{ end }}
|
||||
|
||||
{{/* fall back to default target if none given */}}
|
||||
{{ if and ($link) (eq $linktarget "") }}
|
||||
{{ $linktarget = $page.Permalink }}
|
||||
{{ end }}
|
||||
|
||||
{{ $externallink := "" }}
|
||||
{{ if ne (index $page.Params "externallink") nil }}
|
||||
{{ $externallink = (index $page.Params "externallink") }}
|
||||
{{ else if ne (index $info "externallink") nil }}
|
||||
{{ $externallink = (index $info "externallink") }}
|
||||
{{ end }}
|
||||
|
||||
{{ $datespan := false }}
|
||||
{{ $dateto := "" }}
|
||||
|
||||
{{ if (eq $type "date") }}
|
||||
{{ if ne (index $page.Params "dateto") nil }}
|
||||
{{ $datespan = true }}
|
||||
{{ $dateto = (index $page.Params "dateto") }}
|
||||
{{ end }}
|
||||
<td>
|
||||
<time class="list-time" datetime="{{- dateFormat "2006-01-02" $value -}}">
|
||||
{{- dateFormat "2006-01-02" $value -}}
|
||||
</time>
|
||||
{{- if $datespan -}}
|
||||
<br>
|
||||
<time class="dateto" datetime="{{ dateFormat "2006-01-02" $dateto -}}">
|
||||
–
|
||||
{{ dateFormat "2006-01-02" $dateto -}}
|
||||
</time>
|
||||
{{ end }}
|
||||
</td>
|
||||
{{ else }}
|
||||
<td>
|
||||
{{ if (eq $link true) }}
|
||||
<a href="{{ $linktarget }}">
|
||||
{{ $value }}
|
||||
</a>
|
||||
{{ else }}
|
||||
{{ $value }}
|
||||
{{ end }}
|
||||
</td>
|
||||
{{ end }}
|
||||
{{ end }}
|
||||
</tr>
|
||||
{{ end }}
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
{{ partial "pagination.html" . }}
|
||||
74
layouts/partials/pagination.html
Normal file
74
layouts/partials/pagination.html
Normal file
@@ -0,0 +1,74 @@
|
||||
{{- $pag := $.Paginator -}}
|
||||
{{- if gt $pag.TotalPages 1 -}}
|
||||
<nav class="pagination is-centered" aria-label="pagination">
|
||||
<a
|
||||
class="pagination-previous{{ if not $pag.HasPrev }} is-invisible {{- end }}"
|
||||
{{ if $pag.HasPrev -}} href="{{ $pag.Prev.URL }}" {{- end }}
|
||||
aria-label="Previous page">
|
||||
<span class="is-hidden-touch">← </span> Previous
|
||||
</a>
|
||||
<a
|
||||
class="pagination-next{{ if not $pag.HasNext }} is-invisible {{- end }}"
|
||||
{{ if $pag.HasNext -}} href="{{ $pag.Next.URL }}" {{- end }}
|
||||
aria-label="Next page">
|
||||
Next<span class="is-hidden-touch"> →</span>
|
||||
</a>
|
||||
|
||||
<ul class="pagination-list">
|
||||
{{- with $pag.First -}}
|
||||
<li>
|
||||
<a
|
||||
href="{{- .URL -}}"
|
||||
class="pagination-link{{ if (eq $pag.PageNumber 1) }} is-current {{- end }}"
|
||||
aria-label="First page">
|
||||
1
|
||||
</a>
|
||||
</li>
|
||||
{{- end -}}
|
||||
|
||||
{{- $ellipse_already_printed_high := false -}}
|
||||
{{- $ellipse_already_printed_low := false -}}
|
||||
|
||||
{{/* all pages but the first and the last */}}
|
||||
{{- range $pag.Pagers | first (sub (len $pag.Pagers) 1) | last (sub (len $pag.Pagers) 2) -}}
|
||||
|
||||
{{- if gt (sub .PageNumber $pag.PageNumber) 1 -}}
|
||||
{{- if not (eq $ellipse_already_printed_high true) -}}
|
||||
<li><span class="pagination-ellipsis">…</span></li>
|
||||
{{- $ellipse_already_printed_high = true -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- else if gt (sub $pag.PageNumber .PageNumber) 1 -}}
|
||||
{{- if not (eq $ellipse_already_printed_low true) -}}
|
||||
<li><span class="pagination-ellipsis">…</span></li>
|
||||
{{- $ellipse_already_printed_low = true -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- else -}}
|
||||
{{- $is_current := eq .PageNumber $pag.PageNumber -}}
|
||||
<li>
|
||||
<a
|
||||
href="{{- .URL -}}"
|
||||
class="pagination-link{{ if $is_current }} is-current {{- end }}"
|
||||
aria-label="Page number {{ .PageNumber }}"
|
||||
{{ if $is_current }}aria-current="page"{{ end }}>
|
||||
{{- .PageNumber -}}
|
||||
</a>
|
||||
</li>
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- with $pag.Last -}}
|
||||
<li>
|
||||
<a
|
||||
href="{{- .URL -}}"
|
||||
class="pagination-link{{ if (eq $pag.PageNumber .PageNumber) }} is-current {{- end }}"
|
||||
aria-label="Last page">
|
||||
{{- .PageNumber -}}
|
||||
</a>
|
||||
</li>
|
||||
{{- end -}}
|
||||
|
||||
</ul>
|
||||
</nav>
|
||||
{{- end -}}
|
||||
18
layouts/partials/related.html
Normal file
18
layouts/partials/related.html
Normal file
@@ -0,0 +1,18 @@
|
||||
{{ $related := .Site.RegularPages.Related . | first 3 }}
|
||||
|
||||
{{ if gt (len $related) 0 }}
|
||||
{{ with $related }}
|
||||
<div class="content">
|
||||
<h3>See also</h3>
|
||||
<ul>
|
||||
{{ range . }}
|
||||
<li>
|
||||
<a href="{{ .RelPermalink }}">
|
||||
{{- .Title -}}
|
||||
</a>
|
||||
</li>
|
||||
{{ end }}
|
||||
</ul>
|
||||
</div>
|
||||
{{ end }}
|
||||
{{ end }}
|
||||
19
layouts/partials/site-footer.html
Normal file
19
layouts/partials/site-footer.html
Normal file
@@ -0,0 +1,19 @@
|
||||
<footer class="section has-background-white">
|
||||
<div class="level">
|
||||
<div class="level-left">
|
||||
<div class="level-item">
|
||||
{{ partial "social-follow.html" . }}
|
||||
</div>
|
||||
<a class="level-item px-5" href="https://www.credly.com/badges/870a6345-ed4e-416e-9c46-c9af9c6d2c77/public_url" title="AWS Certified Solutions Architect – Associate">
|
||||
<figure class="image is-48x48">
|
||||
<img src="/assets/badges/aws-certified-solutions-architect-associate.png">
|
||||
</figure>
|
||||
</a>
|
||||
</div>
|
||||
<div class="level-right">
|
||||
<div class="has-text-centered level-item">
|
||||
<a class="has-text-black" href="https://code.hkoerber.de/hannes/blog"><span class="far fa-copyright"></span> {{ now.Format "2006" }} {{ .Site.Params.author }}</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</footer>
|
||||
9
layouts/partials/social-follow.html
Normal file
9
layouts/partials/social-follow.html
Normal file
@@ -0,0 +1,9 @@
|
||||
<div class="buttons">
|
||||
{{ range $social := .Site.Params.social }}
|
||||
<a href="{{ $social.link }}" class="button" title="{{ $social.description | default (printf "Me on %s" $social.name|title) }}">
|
||||
<span class="icon is-medium">
|
||||
<i class="{{ $social.style }} {{ $social.icon }} fa-lg"></i>
|
||||
</span>
|
||||
</a>
|
||||
{{ end }}
|
||||
</div>
|
||||
222
layouts/projects/list.html
Normal file
222
layouts/projects/list.html
Normal file
@@ -0,0 +1,222 @@
|
||||
{{ define "content" }}
|
||||
{{ $column_count := 2 }}
|
||||
{{ $project_count := len .Params.projects }}
|
||||
{{ $contribution_count := len .Params.contributions }}
|
||||
<div class="section">
|
||||
<div class="columns is-variable is-6">
|
||||
<div class="column">
|
||||
<h1 class="subtitle is-3 has-text-centered has-text-weight-normal mb-3">Projects</h1>
|
||||
<hr>
|
||||
<div class="tile is-ancestor mt-3">
|
||||
<div class="tile is-vertical">
|
||||
{{ range $i := (seq 0 $column_count $project_count) }}
|
||||
<div class="tile is-block-touch">
|
||||
{{ $projects_in_row := first $column_count (after $i $.Params.projects) }}
|
||||
{{ range $projects_in_row }}
|
||||
<div class="tile is-parent">
|
||||
<div class="tile is-child card has-background-success-light" style="display: flex;flex-direction: column;">
|
||||
<div class="card-header">
|
||||
<div class="card-header-title is-centered">
|
||||
{{ .name }}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{{ with .image }}
|
||||
{{ $type := .type|default "picture" }}
|
||||
{{ if (eq $type "picture") }}
|
||||
<div class="card-image">
|
||||
<figure class="image">
|
||||
<img src="{{ .path }}" alt="{{ .alt }}">
|
||||
</figure>
|
||||
</div>
|
||||
{{ else if (eq $type "picture-padded") }}
|
||||
<div class="card-image">
|
||||
<figure class="image py-4 px-4">
|
||||
<img src="{{ .path }}" alt="{{ .alt }}">
|
||||
</figure>
|
||||
</div>
|
||||
{{ end }}
|
||||
{{ end }}
|
||||
|
||||
<div class="card-content" style="display: flex; flex-direction: column; flex-grow: 1;">
|
||||
{{ with .icon }}
|
||||
<div class="level">
|
||||
<div class="level-item">
|
||||
<figure class="image is-96x96">
|
||||
<img src="{{ .path }}" alt="{{ .alt }}">
|
||||
</figure>
|
||||
</div>
|
||||
</div>
|
||||
{{ end }}
|
||||
|
||||
<div class="content">
|
||||
{{ range .description }}
|
||||
<p>
|
||||
{{ .|markdownify}}
|
||||
</p>
|
||||
{{ end }}
|
||||
</div>
|
||||
|
||||
<div class="block" style="margin-top: auto;">
|
||||
<div class="field is-grouped is-grouped-multiline">
|
||||
{{ range .tags }}
|
||||
<div class="control">
|
||||
<div class="tags has-addons">
|
||||
{{ $color := "" }}
|
||||
{{ if eq .type "language" }}
|
||||
{{ $color = "info" }}
|
||||
{{ else if eq .type "tech" }}
|
||||
{{ $color = "success" }}
|
||||
{{ else }}
|
||||
{{ errorf "Unknown tag type \"%s\"" .type }}
|
||||
{{ end }}
|
||||
<span class="tag is-dark">{{ .type }}</span>
|
||||
<span class="tag is-{{ $color }}">{{ .value|title }}</span>
|
||||
</div>
|
||||
</div>
|
||||
{{ end }}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<footer class="card-footer" style="margin-top: auto;">
|
||||
<p class="card-footer-item" style="margin-bottom: 0;">
|
||||
<span>
|
||||
<span class="icon">
|
||||
<i class="fab fa-github"></i>
|
||||
</span>
|
||||
View on <a href="{{ .links.github }}">GitHub</a>
|
||||
</span>
|
||||
</p>
|
||||
{{ if isset .links "projectpage" }}
|
||||
<p class="card-footer-item">
|
||||
<span>
|
||||
<span class="icon">
|
||||
<i class="fas fa-info-circle"></i>
|
||||
</span>
|
||||
See <a href="{{ .links.github }}">Project Page</a>
|
||||
</span>
|
||||
</p>
|
||||
{{ end }}
|
||||
</footer>
|
||||
</div>
|
||||
</div>
|
||||
{{ end }}
|
||||
{{/* Pad the last row with empty space */}}
|
||||
{{ if (lt (len $projects_in_row) $column_count) }}
|
||||
{{ range (seq 1 (sub $column_count (len $projects_in_row))) }}
|
||||
<div class="tile is-parent">
|
||||
<div class="tile is-child">
|
||||
</div>
|
||||
</div>
|
||||
{{ end }}
|
||||
{{ end }}
|
||||
</div>
|
||||
{{ end }}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="column">
|
||||
<h1 class="subtitle is-3 has-text-centered has-text-weight-normal mb-3">Contributions</h1>
|
||||
<hr>
|
||||
<div class="tile is-ancestor mt-3">
|
||||
<div class="tile is-vertical">
|
||||
{{ range $i := (seq 0 $column_count $contribution_count) }}
|
||||
<div class="tile is-block-touch">
|
||||
{{ $contributions_in_row := first $column_count (after $i $.Params.contributions) }}
|
||||
{{ range $contributions_in_row }}
|
||||
<div class="tile is-parent">
|
||||
<div class="tile is-child has-background-info-light card" style="display: flex;flex-direction: column;">
|
||||
<div class="card-header">
|
||||
<div class="card-header-title is-centered">
|
||||
{{ .name }}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{{ with .image }}
|
||||
{{ $type := .type|default "picture" }}
|
||||
{{ if (eq $type "picture") }}
|
||||
<div class="card-image">
|
||||
<figure class="image">
|
||||
<img src="{{ .path }}" alt="{{ .alt }}">
|
||||
</figure>
|
||||
</div>
|
||||
{{ end }}
|
||||
{{ end }}
|
||||
|
||||
<div class="card-content" style="display: flex; flex-direction: column; flex-grow: 1;">
|
||||
{{ with .icon }}
|
||||
<div class="level">
|
||||
<div class="level-item">
|
||||
<figure class="image is-96x96">
|
||||
<img src="{{ .path }}" alt="{{ .alt }}">
|
||||
</figure>
|
||||
</div>
|
||||
</div>
|
||||
{{ end }}
|
||||
|
||||
<div class="content">
|
||||
{{ if eq (len .changes) 1 }}
|
||||
<p>
|
||||
{{ markdownify (index .changes 0) }}
|
||||
</p>
|
||||
{{ else }}
|
||||
<ul>
|
||||
{{ range .changes }}
|
||||
<li>
|
||||
{{ markdownify . }}
|
||||
</li>
|
||||
{{ end }}
|
||||
</ul>
|
||||
{{ end }}
|
||||
</div>
|
||||
<div class="block" style="margin-top: auto;">
|
||||
<div class="field is-grouped is-grouped-multiline">
|
||||
{{ range .tags }}
|
||||
<div class="control">
|
||||
<div class="tags has-addons">
|
||||
{{ $color := "" }}
|
||||
{{ if eq .type "language" }}
|
||||
{{ $color = "info" }}
|
||||
{{ else if eq .type "tech" }}
|
||||
{{ $color = "success" }}
|
||||
{{ else }}
|
||||
{{ errorf "Unknown tag type \"%s\"" .type }}
|
||||
{{ end }}
|
||||
<span class="tag is-dark">{{ .type }}</span>
|
||||
<span class="tag is-{{ $color }}">{{ .value|title }}</span>
|
||||
</div>
|
||||
</div>
|
||||
{{ end }}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<footer class="card-footer" style="margin-top: auto;">
|
||||
<p class="card-footer-item">
|
||||
<span>
|
||||
<span class="icon">
|
||||
<i class="fab fa-github"></i>
|
||||
</span>
|
||||
View on <a href="{{ .links.github }}">GitHub</a>
|
||||
</span>
|
||||
</p>
|
||||
</footer>
|
||||
</div>
|
||||
</div>
|
||||
{{ end }}
|
||||
{{/* Pad the last row with empty space */}}
|
||||
{{ if (lt (len $contributions_in_row) $column_count) }}
|
||||
{{ range (seq 1 (sub $column_count (len $contributions_in_row))) }}
|
||||
<div class="tile is-parent">
|
||||
<div class="tile is-child">
|
||||
</div>
|
||||
</div>
|
||||
{{ end }}
|
||||
{{ end }}
|
||||
</div>
|
||||
{{ end }}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{{ end }}
|
||||
7
layouts/robots.txt
Normal file
7
layouts/robots.txt
Normal file
@@ -0,0 +1,7 @@
|
||||
User-agent: *
|
||||
{{ if .Site.Params.allow_robots -}}
|
||||
Disallow: /assets/
|
||||
Disallow: /keybase.txt
|
||||
{{ else -}}
|
||||
Disallow: /
|
||||
{{ end }}
|
||||
3
layouts/shortcodes/figcaption.html
Normal file
3
layouts/shortcodes/figcaption.html
Normal file
@@ -0,0 +1,3 @@
|
||||
{{- $content := .Inner -}}
|
||||
<figcaption class="is-size-7 has-text-left has-text-weight-light mt-1">{{ $content }}</figcaption>
|
||||
{{- /* Do not remove comment, fix for extra whitespace after shortcode */ -}}
|
||||
3
layouts/shortcodes/myhighlight.html
Normal file
3
layouts/shortcodes/myhighlight.html
Normal file
@@ -0,0 +1,3 @@
|
||||
{{- $content := .Inner -}}
|
||||
<span class="is-smallcaps has-text-weight-medium has-text-danger">{{ $content }}</span>
|
||||
{{- /* Do not remove comment, fix for extra whitespace after shortcode */ -}}
|
||||
5
layouts/shortcodes/staticRef.html
Normal file
5
layouts/shortcodes/staticRef.html
Normal file
@@ -0,0 +1,5 @@
|
||||
{{- .Scratch.Set "path" (.Get 0) -}}
|
||||
{{- if hasPrefix (.Scratch.Get "path") "/" -}}
|
||||
{{- .Scratch.Set "path" (slicestr (.Scratch.Get "path") 1) -}}
|
||||
{{- end -}}
|
||||
{{- .Scratch.Get "path" | absLangURL -}}
|
||||
20
layouts/taxonomy/list.html
Normal file
20
layouts/taxonomy/list.html
Normal file
@@ -0,0 +1,20 @@
|
||||
{{ define "content" }}
|
||||
<div class="content section">
|
||||
<h1 class="subtitle is-3 has-text-centered has-text-weight-normal">All posts with the {{ title .Data.Singular }} "{{ .Title }}"</h1>
|
||||
<table class="table is-striped is-hoverable is-bordered mt-6">
|
||||
<tbody>
|
||||
{{ range (index .Site.Taxonomies.tags .Data.Term) }}
|
||||
<tr>
|
||||
<td>
|
||||
<a href="{{ .Page.RelPermalink }}">{{ .Page.Title }}</a>
|
||||
</td>
|
||||
</tr>
|
||||
{{ end }}
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<hr>
|
||||
<div class="section">
|
||||
<a href={{ printf "/%s" .Data.Plural }}>List of all {{ .Data.Plural }}</a>
|
||||
</div>
|
||||
{{ end }}
|
||||
14
layouts/taxonomy/terms.html
Normal file
14
layouts/taxonomy/terms.html
Normal file
@@ -0,0 +1,14 @@
|
||||
{{ define "content" }}
|
||||
<div class="content section">
|
||||
<h1 class="subtitle is-3 has-text-centered has-text-weight-normal">List of all {{ title .Data.Plural }}</h1>
|
||||
<div class="is-flex is-flex-direction-column is-flex-wrap-wrap">
|
||||
<ul class="mt-6">
|
||||
{{ range $name, $taxonomy := .Site.Taxonomies.tags }}
|
||||
{{ with $.Site.GetPage (printf "/%s" $name) }}
|
||||
<li><span class="tag has-background-grey-lighter is-medium"><a href="{{ .Permalink }}">{{ $name }}</a></span></li>
|
||||
{{ end }}
|
||||
{{ end }}
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
{{ end }}
|
||||
Reference in New Issue
Block a user