First commit

This commit is contained in:
2026-01-14 23:24:24 +01:00
commit c9f15b87b3
214 changed files with 9851 additions and 0 deletions

View File

@@ -0,0 +1,25 @@
<script>
(function() {
const comicRegex = /\/comics\/([a-zA-Z0-9]+)\//;
let referrerMatches = document.referrer.match(comicRegex);
let locationMatches = document.location.href.match(comicRegex);
if (!referrerMatches || !referrerMatches[1]
|| !locationMatches || !locationMatches[1]
|| referrerMatches[1] != locationMatches[1]
)
return;
const numberRegex = /\/comics\/[A-Za-z0-9]+\/(\d+)\//;
referrerMatches = document.referrer.match(numberRegex);
locationMatches = document.location.href.match(numberRegex);
let referrerNum = 0;
if (referrerMatches && referrerMatches[1])
referrerNum = parseInt(referrerMatches[1], 10);
let locationNum = 0;
if (locationMatches && locationMatches[1])
locationNum = parseInt(locationMatches[1], 10);
if (locationNum > referrerNum)
document.documentElement.classList.add('forward');
else
document.documentElement.classList.add('back');
})();
</script>

43
hugo/layouts/baseof.html Normal file
View File

@@ -0,0 +1,43 @@
<!DOCTYPE html>
<html class="no-js" lang="de">
<head>
<meta charset="utf-8">
<meta http-equiv="x-ua-compatible" content="ie=edge">
<title>{{ block "title" . }}{{ .Site.Title }}{{ end }}</title>
{{ with .Params.description -}}
<meta name="description" content="{{ . }}">
{{- end }}
<meta name="author" content="Stefan Mühlinghaus">
<meta name="viewport" content="initial-scale=1, user-scalable=no">
<link rel="icon" type="image/vnd.microsoft.icon" href="/img/favicon.ico">
{{ block "htmlheadbefore" . }}{{ end }}
<link rel="preload" href="/css/main.css" as="style">
<link rel="stylesheet" href="/css/main.css">
<script>(function(H){H.className=H.className.replace(/\bno-js\b/,'js')})(document.documentElement)</script>
<script defer src="/js/menu.js"></script>
{{ block "htmlheadafter" . }}{{ end }}
</head>
<body>
<!--[if lt IE 8]><p class="browsehappy">Sie benutzen einen <strong>veralteten</strong> Browser. Bitte <a href="http://browsehappy.com/">aktualisieren Sie Ihren Browser</a> um Ihre Erfahrung auf alphabreed zu verbessern. <![endif]-->
<header>
<a href="/" title="alphabreed Startseite"> <img src="/img/alphabreed.png" alt="alphabreed"></a>
<nav>
<ul>
{{- $page := . }}
{{- range site.Menus.main }}
{{- if $page.IsMenuCurrent .Menu . }}
<li class="active"><a href="{{.URL}}">{{.Name}}</a></li>
{{- else if $page.HasMenuCurrent .Menu . }}
<li class="active"><a href="{{.URL}}">{{.Name}}</a></li>
{{- else }}
<li><a href="{{.URL}}">{{.Name}}</a></li>
{{- end }}
{{- end }}
</ul>
</nav>
</header>
<div id="main">
{{ block "main" . }}{{ .Content }}{{ end }}
</div>
</body>
</html>

View File

@@ -0,0 +1,3 @@
{{ define "title" }}
{{- .Title }} :: {{ .Site.Title -}}
{{ end }}

View File

@@ -0,0 +1,19 @@
<!DOCTYPE html>
<html class="no-js" lang="de">
<head>
<meta charset="utf-8">
<meta http-equiv="x-ua-compatible" content="ie=edge">
<title>{{ block "title" . }}{{ .Site.Title }}{{ end }}</title>
<meta name="author" content="Stefan Mühlinghaus">
<meta name="viewport" content="initial-scale=1, user-scalable=no">
<link rel="icon" type="image/vnd.microsoft.icon" href="/img/favicon.ico">
<link rel="preload" href="/css/bookmarks.css" as="style">
<link rel="stylesheet" href="/css/bookmarks.css">
<script>(function(H){H.className=H.className.replace(/\bno-js\b/,'js')})(document.documentElement)</script>
<script defer src="/js/alpine-alphabreed.js"></script>
<script defer src="/js/alpine-3.15.3.min.js"></script>
</head>
<body>
{{ block "main" . }}{{ .Content }}{{ end }}
</body>
</html>

View File

@@ -0,0 +1,9 @@
{{ define "main" }}
{{ .Content }}
{{ range .Pages }}
<div class="box">
<h2><a href="{{ .RelPermalink }}">{{ .Title }}</a></h2>
<p>{{ .Description }}</p>
</div>
{{ end }}
{{ end }}

View File

@@ -0,0 +1,44 @@
{{ define "title" }}{{ .Title }}, Seite 1 :: {{ .Site.Title }}{{ end }}
{{ define "htmlheadbefore" }}
{{ $images := .Resources.ByType "image" }}
{{ $imageCount := len $images }}
{{ $firstImage := index $images 0 }}
<link rel="preload" href="{{ $firstImage.RelPermalink }}" as="image">
{{ if gt $imageCount 1 }}
<link rel="next" href="2/">
{{ end }}
{{ partial "comicpageslide.html" . }}
{{ end }}
{{ define "main" }}
{{ $images := .Resources.ByType "image" }}
{{ $imageCount := len $images }}
{{ $firstImage := index $images 0 }}
<h1>{{ .Title }}, Seite 1</h1>
<nav class="comicnav">
<span></span>
<span></span>
{{ if gt $imageCount 1 }}
<a class="next" href="2/">Weiter</a>
<a class="last" href="{{ $imageCount }}/">Ende</a>
{{ else }}
<span></span>
<span></span>
{{ end }}
</nav>
<div id="comicpage">
<img src="{{ $firstImage.RelPermalink }}">
</div>
<nav class="comicnav">
<span></span>
<span></span>
{{ if gt $imageCount 1 }}
<a class="next" href="2/">Weiter</a>
<a class="last" href="{{ $imageCount }}/">Ende</a>
{{ else }}
<span></span>
<span></span>
{{ end }}
</nav>
{{ end }}

View File

@@ -0,0 +1,36 @@
{{ define "_partials/comicnav.html" }}
<nav class="comicnav">
<a class="first" href="../">Anfang</a>
<a class="prev" href="{{ .Params.prev }}">Zurück</a>
{{ if .Params.next }}
<a class="next" href="{{ .Params.next }}">Weiter</a>
{{ else }}
<span></span>
{{ end }}
{{ if .Params.last }}
<a class="last" href="{{ .Params.last }}">Ende</a>
{{ else }}
<span></span>
{{ end }}
</nav>
{{ end }}
{{ define "title" }}{{ .Title }} :: {{ .Site.Title }}{{ end }}
{{ define "htmlheadbefore" }}
<link rel="preload" href="../{{ .Params.image }}" as="image">
<link rel="prev" href="{{ .Params.prev }}">
{{ if .Params.next }}
<link rel="next" href="{{ .Params.next }}">
{{ end }}
{{ partial "comicpageslide.html" . }}
{{ end }}
{{ define "main" }}
<h1>{{ .Title }}</h1>
{{ partial "comicnav.html" . }}
<div id="comicpage">
<img src="../{{ .Params.image }}">
</div>
{{ partial "comicnav.html" . }}
{{ end }}

View File

@@ -0,0 +1,11 @@
{{ define "main" }}
<nav class="submenu box">
<h2>Bereiche:</h2>
<ul>
{{ range .Pages }}
<li><a href="{{ .RelPermalink }}">{{ .Title }}</a></li>
{{ end }}
</ul>
</nav>
{{ .Content }}
{{ end }}

View File

@@ -0,0 +1,47 @@
{{ define "title" }}{{ .Params.fullname }}, Folge 1 :: {{ .Site.Title }}{{ end }}
{{ define "main" }}
{{ $episodes := .Params.episodes }}
{{ $episodeCount := len $episodes }}
{{ $firstEpisode := index $episodes 0 }}
{{ $gameplayPage := . }}
<nav class="submenu box">
<h2>Bereiche:</h2>
<ul>
{{ range .Parent.Pages }}
{{ if .Eq $gameplayPage }}
<li class="active">
{{ else }}
<li>
{{ end }}
<a href="{{ .RelPermalink }}">{{ .Title }}</a>
</li>
{{ end }}
</ul>
</nav>
<h1>{{ .Params.fullname }}</h1>
{{ if $firstEpisode.title }}
<h2>{{ $firstEpisode.title }}</h2>
{{ end }}
{{ if $firstEpisode.description }}
<p>{{ $firstEpisode.description }}</p>
{{ end }}
<p><video src="{{ $firstEpisode.video }}" type="video/mp4" playsinline controls style="width:100%; aspect-ratio:16 / 9; display:block;"></video></p>
{{ if gt $episodeCount 1 }}
<div class="box videos">
{{ range $index, $episode := $episodes }}
{{ $episodeNum := math.Add $index 1 }}
{{ if eq $index 0 }}
<div class="active">
<a href="./">Folge 01 {{ $episode.title }}</a>
</div>
{{ else }}
<div>
<a href="{{ $episodeNum }}/">Folge {{ printf "%02d" $episodeNum }} {{ $episode.title }}</a>
</div>
{{ end }}
{{ end }}
</div>
{{ end }}
{{ .Content }}
{{ end }}

View File

@@ -0,0 +1,54 @@
{{ define "title" }}{{ .Title }} :: {{ .Site.Title }}{{ end }}
{{ define "main" }}
{{ $episodes := .Params.episodes }}
{{ $episodeCount := len $episodes }}
{{ $episodeIndex := .Params.index }}
{{ $gameplayPage := .Parent }}
<nav class="submenu box">
<h2>Bereiche:</h2>
<ul>
{{ range .Parent.Parent.Pages }}
{{ if .Eq $gameplayPage }}
<li class="active">
{{ else }}
<li>
{{ end }}
<a href="{{ .RelPermalink }}">{{ .Title }}</a>
</li>
{{ end }}
</ul>
</nav>
<h1>{{ .Params.gameplay }}</h1>
{{ if .Params.name }}
<h2>{{ .Params.name }}</h2>
{{ end }}
<p>{{ .Description }}</p>
<p><video src="{{ .Params.video }}" type="video/mp4" playsinline controls style="width:100%; aspect-ratio:16 / 9; display:block;"></video></p>
{{ if gt $episodeCount 1 }}
<div class="box videos">
{{ range $index, $episode := $episodes }}
{{ $episodeNum := math.Add $index 1 }}
{{ $isCurrent := eq $index $episodeIndex }}
{{ if eq $index 0 }}
{{ if $isCurrent }}
<div class="active">
{{ else }}
<div>
{{ end }}
<a href="../">Folge 01 {{ $episode.title }}</a>
</div>
{{ else }}
{{ if $isCurrent }}
<div class="active">
{{ else }}
<div>
{{ end }}
<a href="../{{ $episodeNum }}/">Folge {{ printf "%02d" $episodeNum }} {{ $episode.title }}</a>
</div>
{{ end }}
{{ end }}
</div>
{{ end }}
{{ .Content }}
{{ end }}

3
hugo/layouts/home.html Normal file
View File

@@ -0,0 +1,3 @@
{{ define "main" }}
{{ .Content }}
{{ end }}

19
hugo/layouts/if/all.html Normal file
View File

@@ -0,0 +1,19 @@
{{ define "title" }}
{{- .Title }} :: {{ .Site.Title -}}
{{ end }}
{{ define "main" }}
<nav class="submenu box">
<h2>Bereiche:</h2>
<ul>
{{- $page := . }}
{{- range site.Menus.if }}
{{- if $page.IsMenuCurrent .Menu . }}
<li class="active"><a href="{{.URL}}">{{.Name}}</a></li>
{{- else }}
<li><a href="{{.URL}}">{{.Name}}</a></li>
{{- end }}
{{- end }}
</ul>
</nav>
{{ .Content }}
{{ end }}

View File

@@ -0,0 +1,23 @@
<!DOCTYPE html>
<html class="no-js" lang="de">
<head>
<meta charset="utf-8">
<meta http-equiv="x-ua-compatible" content="ie=edge">
<title>{{ block "title" . }}{{ .Site.Title }}{{ end }}</title>
{{ with .Params.description -}}
<meta name="description" content="{{ . }}">
{{- end }}
<meta name="author" content="Stefan Mühlinghaus">
<meta name="viewport" content="initial-scale=1, user-scalable=no">
<link rel="icon" type="image/vnd.microsoft.icon" href="/img/favicon.ico">
<link rel="preload" href="/css/pico-2.1.1.min.css" as="style">
<link rel="stylesheet" href="/css/pico-2.1.1.min.css">
<script>(function(H){H.className=H.className.replace(/\bno-js\b/,'js')})(document.documentElement)</script>
<script defer src="/js/alpine-3.15.3.min.js"></script>
</head>
<body>
<main class="container">
{{ .Content }}
</main>
</body>
</html>

View File

@@ -0,0 +1,40 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta http-equiv="x-ua-compatible" content="ie=edge">
<title>{{ block "title" . }}{{ .Site.Title }}{{ end }}</title>
<meta name="author" content="Stefan Mühlinghaus">
<meta name="viewport" content="initial-scale=1, user-scalable=no">
<meta name="apple-mobile-web-app-status-bar-style" content="black">
<meta name="theme-color" content="#222">
<meta name="robots" content="noindex, nofollow">
<link rel="icon" type="image/vnd.microsoft.icon" href="/img/favicon.ico">
<script defer src="/js/alpine-alphabreed.js"></script>
<script defer src="/js/alpine-3.15.3.min.js"></script>
<style>
html, body, form, textarea { padding:0; margin:0;
height:100%; }
html { background-color:#333; color:#ccc;
font-family:monospace; font-size:15px; }
main { height:100%; }
textarea { border:none; padding:20px; width:100%;
font-family:inherit; box-sizing:border-box; resize:none;
background-color:inherit; color:inherit;
font-size:inherit; outline:none; }
#pending { position:fixed; top:10px; right:10px; width:20px;
height:20px; border:3px solid #ccc; border-radius:20px;
border-color:#ccc #ccc transparent transparent;
opacity:0; transition:opacity 0.5s; transition-delay:0.5s;
animation:0.7s linear infinite rotate; }
#pending.show { opacity:1; }
@keyframes rotate {
from { transform:rotate(0deg); }
to { transform:rotate(359deg); }
}
</style>
</head>
<body>
{{ .Content }}
</body>
</html>

6
hugo/layouts/single.html Normal file
View File

@@ -0,0 +1,6 @@
{{ define "title" }}
{{- .Title }} :: {{ .Site.Title -}}
{{ end }}
{{ define "main" }}
{{ .Content }}
{{ end }}