1
1
Fork 0
Dieser Commit ist enthalten in:
Sebastian Tobie 2022-06-26 21:55:39 +02:00
Commit 17f405192f
29 geänderte Dateien mit 681 neuen und 0 gelöschten Zeilen

12
.editorconfig Normale Datei
Datei anzeigen

@ -0,0 +1,12 @@
# EditorConfig is awesome: https://EditorConfig.org
# top-most EditorConfig file
root = true
[*]
indent_style = space
indent_size = 4
end_of_line = lf
charset = utf-8
trim_trailing_whitespace = false
insert_final_newline = false

3
.gitignore vendored Normale Datei
Datei anzeigen

@ -0,0 +1,3 @@
public
.hugo_build.lock
resources/_gen

25
config.toml Normale Datei
Datei anzeigen

@ -0,0 +1,25 @@
baseURL = 'https://excalibur.home.tobie/'
defaultContentLanguage = "de"
disableAliases = true
enableEmoji = true
enableGitInfo = false
languageCode = 'de-de'
paginate = 3
#theme = ["github.com/theNewDynamic/gohugo-theme-ananke"]
disableHugoGeneratorInject = true
disableKinds = ["sitemap", "RSS", "robotsTXT", "taxonomy"]
ignoreErrors = ["error-disable-taxonomy"]
theme = 'meins'
title = "Sebastian Tobie"
[taxonomies]
tag = "tags"
[minify]
disableCSS = false
disableHTML = false
disableJS = false
disableJSON = false
disableSVG = false
disableXML = false
minifyOutput = false

Datei anzeigen

@ -0,0 +1,8 @@
---
title: Lebenslauf
menu:
main:
weight: 100
draft: true
---
{{% lebenslauf %}}

8
content/_index.md Normale Datei
Datei anzeigen

@ -0,0 +1,8 @@
---
title: Home
menu:
main:
weight: -1
---
# Hallo
Hallo

7
content/blog/_index.md Normale Datei
Datei anzeigen

@ -0,0 +1,7 @@
---
title: "Blog"
menu:
main:
weight: 1
---
BLA BLA BLA

15
content/blog/abtreibung.md Normale Datei
Datei anzeigen

@ -0,0 +1,15 @@
---
title: "Abtreibungsrecht"
date: 2022-06-26T17:24:30+02:00
draft: true
---
# Meine Gedanken zum Abtreibungsrecht
Am {{< date "2022-06-24" "2. January" >}} haben der Supreme Court der Vereinigten Staaten und der Bundestag zwei unterschiedliche Entscheidungen getroffen.
Der Supreme Court entschied sich die in den USA davor gültige Regelung das bis zur Lebensfähigkeit der Abruch möglich ist zu kippen.
Jetzt gibt es in vielen Staaten {{< hervorhebung "euphemsimus" "warning" >}}Heartbeat Laws{{< /hervorhebung >}} die ungeborenes Leben nach der 6 Schwangerschaftswoche schützen soll.
Das ist fast so streng wie die Strengste Auslegung im Islam (40 Tage), die von den Republikanern selber als unforttschrittlich gezeigt werden,
in den restlichen Auslegungen wird die Seele am 120. Schwangerschaftstag empfangen.
Währendessen hat der Bundestag erlaubt Ärzten auf ihren Webseiten zu informieren

11
content/über/index.md Normale Datei
Datei anzeigen

@ -0,0 +1,11 @@
---
title: "Impressum"
date: 2022-06-19T18:17:34+02:00
menu:
main:
weight: 1000
_build:
list: never
---
# Impressum

39
data/lebenslauf.xml Normale Datei
Datei anzeigen

@ -0,0 +1,39 @@
<lebenslauf>
<schule>
<name>Realstufe der Anne-Frank-Schule Fritzlar</name>
<von>2010-08-01</von>
<bis>2013-07-31</bis>
</schule>
<schule>
<name>Höhere Handelsschule an der Reichspräsident Friedrich Ebert Schule Fritzlar</name>
<von>2013-08-01</von>
<bis>2014-07-01</bis>
</schule>
<arbeit>
<firma>Berufsbildungswerk Südhessen gGmbH</firma>
<job>Teilnehmer Brufsvorbeitende Maßnahme</job>
<von>2014-09-01</von>
<bis>2015-08-01</bis>
</arbeit>
<arbeit>
<firma>Berufsbildungswerk Südhessen gGmbH</firma>
<job>Auszubildender Fachinformatiker für Systemintegration</job>
<von>2015-08-01</von>
<bis>2018-06-01</bis>
</arbeit>
<arbeit>
<firma>ANG GmbH</firma>
<job>Fachinformatiker für Systemintegration</job>
<von>2015-10-01</von>
<bis>HEUTE</bis>
</arbeit>
<fähigkeit>
<name>Golang</name>
<framework></framework>
</fähigkeit>
<fähigkeit>
<name>Python</name>
<framework>Flask</framework>
<framework>Django</framework>
</fähigkeit>
</lebenslauf>

5
go.mod Normale Datei
Datei anzeigen

@ -0,0 +1,5 @@
module go.sebtobie.de/website
go 1.18
require github.com/theNewDynamic/gohugo-theme-ananke v0.0.0-20220610193657-470ea40982f5 // indirect

2
go.sum Normale Datei
Datei anzeigen

@ -0,0 +1,2 @@
github.com/theNewDynamic/gohugo-theme-ananke v0.0.0-20220610193657-470ea40982f5 h1:VGGhujiIbPAGTzunwhrs4AGzDU3//45crPtbN0iW+Ck=
github.com/theNewDynamic/gohugo-theme-ananke v0.0.0-20220610193657-470ea40982f5/go.mod h1:yY14BLqqh5G61rO81YcJKMHY1rClY5iIiUK+K2JKSUM=

BIN
static/favicon.ico Normale Datei

Binäre Datei nicht angezeigt.

Nachher

Breite:  |  Höhe:  |  Größe: 70 B

20
themes/meins/LICENSE Normale Datei
Datei anzeigen

@ -0,0 +1,20 @@
The MIT License (MIT)
Copyright (c) 2022 YOUR_NAME_HERE
Permission is hereby granted, free of charge, to any person obtaining a copy of
this software and associated documentation files (the "Software"), to deal in
the Software without restriction, including without limitation the rights to
use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
the Software, and to permit persons to whom the Software is furnished to do so,
subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

Datei anzeigen

@ -0,0 +1,6 @@
---
title: "{{ replace .Name "-" " " | title }}"
date: {{ .Date }}
draft: true
---
# {{ replace .Name "-" " " | title }}

Datei anzeigen

@ -0,0 +1,5 @@
---
title: "{{ replace .Name "-" " " | title }}"
date: {{ .Date }}
draft: false
---

Datei anzeigen

@ -0,0 +1,185 @@
@mixin theming($background, $foreground) {
$link: #0000FF;
$link_visited: mix($link, $foreground, $weight: 50%);
$link_notvisited: mix($link, $foreground, $weight: 75%);
--background: #{$background};
--text: #{$foreground};
a:visited {
color: $link_visited;
}
a:link {
color: $link_notvisited;
}
span {
&.warning {
transition-property: background-color;
transition-duration: 1s;
transition-timing-function: linear;
&:hover {
background-color: mix(#FFFF00, $background, 50%);
transition-property: background-color;
transition-duration: 1s;
transition-timing-function: linear;
}
}
}
}
@mixin theme($schema, $background, $foreground) {
body.#{$schema} {
@include theming($background, $foreground);
}
@media (prefers-color-scheme: $schema) {
body {
@include theming($background, $foreground);
}
}
}
@include theme("dark", #333333, #ffffff);
@include theme("black", #000000, #ffffff);
@include theme("light", #ffffff, #000000);
@media (not ((prefers-color-scheme: light) or (prefers-color-scheme: dark) or (prefers-color-scheme: black))) {
body {
@include theming(#000001, #ffffff);
}
}
body {
padding: 0;
margin: 0;
display: flex;
flex-direction: column;
align-items: center;
min-height: 100vh;
background-color: var(--background);
color: var(--text);
>header,
>footer {
width: 100vw;
}
>main {
flex: 1 1 auto;
flex-direction: column;
}
>.menu {
flex-direction: row;
margin: 2em 0;
padding: 0;
justify-content: center;
align-items: center;
>li {
list-style: none;
flex-wrap: wrap;
padding: 0.5em;
border: 0.1em;
border-color: black;
border-style: solid;
}
}
>.menu,
>main {
max-width: 90vw;
display: flex;
>* {
margin: 0;
margin-bottom: 2em;
}
h1,
h2,
h3,
h4,
h5,
h6 {
margin-left: auto;
margin-right: auto;
}
}
>header,
>footer,
>.menu {
flex: 0 min-content;
}
>div.colorscheme {
display: none;
}
&.interactive>div.colorscheme {
display: flex;
flex-direction: column;
}
}
.colorscheme {
position: fixed;
top: 0;
right: 0;
>input[type=radio] {
display: none;
&:checked+label {
background-color: red;
}
&+label {
background-color: green;
}
}
.icon,
label {
display: block;
height: 3em;
width: 3em;
}
}
.icon {
height: 1em;
width: 1em;
stroke-width: 5;
stroke-linecap: round;
}
form {
display: grid;
grid-template-columns: min-content auto;
column-gap: 1em;
row-gap: 0.5em;
input[type="submit"] {
grid-column: 1 / 3;
}
}
span {
&.euphemsimus {
font-style: italic;
&::before {
content: open-quote;
}
&::after {
content: close-quote;
}
}
}

Datei anzeigen

@ -0,0 +1,24 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg class="icons" version="1.1" viewBox="0 0 100 100" xmlns="http://www.w3.org/2000/svg">
<g id="light">
<circle cx="50" cy="50" stroke="#ffffff" fill="none" r="30" id="lightcircle" />
<line x1="50" y1="20" x2="50" y2="10" stroke="#ffffff" id="n" />
<line x1="20" y1="50" x2="10" y2="50" stroke="#ffffff" id="w" />
<line x1="90" y1="50" x2="80" y2="50" stroke="#ffffff" id="e" />
<line x1="50" y1="90" x2="50" y2="80" stroke="#ffffff" id="s" />
<line x1="21.92" y1="21.92" x2="28.72" y2="28.72" stroke="#ffffff" id="nw" />
<line x1="71.27" y1="28.72" x2="78.07" y2="21.92" stroke="#ffffff" id="ne" />
<line x1="21.92" y1="78.07" x2="28.72" y2="71.27" stroke="#ffffff" id="sw" />
<line x1="78.07" y1="78.07" x2="71.27" y2="71.27" stroke="#ffffff" id="se" />
</g>
<g id="dark">
<path d="m 50,20 a 30,30 0 0 0 0,60 Q 10,50 50,20" stroke="#000000" />
</g>
<g id="black">
<circle cx="50" cy="50" fill="#000000" stroke="#000000" r="30" />
</g>
<g id="auto">
<circle cx="50" cy="50" stroke="#ffffff" fill="none" r="30" id="autocircle" />
<text x="50" y="50" text-anchor="middle" font-size="55" font-family="sans-serif" dominant-baseline="middle" fill="#ffffff">A</text>
</g>
</svg>

Nachher

Breite:  |  Höhe:  |  Größe: 1.3 KiB

Datei anzeigen

@ -0,0 +1,82 @@
class Storage {
enabled: boolean
constructor() {
try {
if (localStorage) {
localStorage.setItem("__test", "")
localStorage.removeItem("__test")
this.enabled = true
console.debug("localstorage enabled")
}
} catch {
console.debug("Local storage not available")
}
}
set(key: string, value: any): void {
if (this.enabled) {
try {
localStorage.setItem(key, JSON.stringify(value))
} catch {
}
}
}
get(key: string, _default: any = null): any {
if (this.enabled) {
try {
let value = localStorage.getItem(key);
if (value !== null) {
return JSON.parse(value)
}
} catch {
}
}
return _default;
}
}
var storage = new Storage();
function settheme(theme: string): EventListener {
let body = document.getElementsByTagName("body")[0]
let classes = new Set(["dark", "black", "light"])
classes.delete(theme)
return function () {
console.info("Overriding theme to", theme)
body.classList.remove(...classes)
if (theme !== "auto") {
if (!body.classList.contains(theme)) {
body.classList.add(theme)
}
}
storage.set("theme", theme)
}
}
function init() {
let theme_elems = document.getElementsByClassName("theme")
let themeconfig: string = storage.get("theme", "auto")
for (let i = 0; i < theme_elems.length; i++) {
let theme_el = theme_elems.item(i) as HTMLInputElement
if (theme_el !== null) {
let theme = settheme(theme_el.id)
if (themeconfig === theme_el.id) {
theme(new Event("change"))
console.log(typeof theme_el, theme_el)
theme_el.select()
}
theme_el.addEventListener("change", theme)
console.info("added event to ", theme_el, "for theme", theme_el.id)
}
}
let body = document.getElementsByTagName("body")[0]
body.classList.add("interactive")
}
export {
init,
}

2
themes/meins/i18n/de.toml Normale Datei
Datei anzeigen

@ -0,0 +1,2 @@
schule = "Schule"
arbeit = "Bisherige Arbeitsplätze"

Datei anzeigen

@ -0,0 +1,54 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
{{- $sourcemap := "" -}}
{{- if not hugo.IsProduction -}}
{{- $sourcemap = "inline" -}}
{{- end -}}
{{- $cssoptions := (dict "outputStyle" "compressed" "enableSourceMap" (not hugo.IsProduction))
-}}
{{- $jsoptions := (dict "minify" (not hugo.IsProduction) "format" "esm" "sourceMap" $sourcemap ) -}}
{{- $scss := resources.Get "css/style.scss" | toCSS $cssoptions | fingerprint "sha512" -}}
{{- $module := resources.Get "js/index.ts" | js.Build $jsoptions | fingerprint "sha512" -}}
<link rel="stylesheet" href="{{ $scss.RelPermalink }}" integrity="{{ $scss.Data.Integrity}}">
<script name="/main" type="module" src="{{ $module.RelPermalink }}" integrity="{{ $module.Data.Integrity }}"></script>
<script type="module">
import { init } from "{{ $module.RelPermalink }}";
init();
</script>
<title>{{.Title}}</title>
<meta name="referrer" content="no-referrer">
<meta name="color-scheme" content="light dark black">
{{- range (slice "description" ) -}}
{{- $header := . -}}
{{- if in $.Params $header -}}
<meta name="{{ $header }}" content="{{ .Param $header }}">
{{- end -}}
{{- end -}}
</head>
<body>
<div role="none" class="colorscheme">
<input class="theme" id="auto" selected type="radio" name="colorscheme">
<label for="auto">{{ partial "icon" "auto" }}</label>
{{ range (slice "light" "dark" "black") }}
<input class="theme" id="{{ . }}" type="radio" name="colorscheme">
<label for="{{ . }}">{{ partial "icon" . }}</label>
{{ end }}
</div>
<header></header>
{{ if .Site.Menus.main }}
<ul role="navigation" aria-label="Main" class="menu">
{{ range .Site.Menus.main }}
<li>
<a href="{{.URL}}">{{ .Name}}</a>
</li>
{{ end }}
</ul>
{{ end }}
<main>{{ block "main" . }}
{{ .Content }}
{{ end }}</main>
<footer>{{ block "footer" . }}{{ end }}</footer>
</body>
</html>

Datei anzeigen

@ -0,0 +1,22 @@
{{ define "main" }}
<div>
<h1>{{ .Title }}</h1>
{{.Content}}
</div>
{{ range .Paginator.Pages }}
<a alt="" href="{{.Permalink}}">
<article>
<h2>{{ .Title }}</h2>
{{ .Render "Summary"}}
</article>
</a>
{{ end }}
<nav aria-label="Page Navigation">
{{ if .Paginator.HasPrev }}
<a href="{{ .Paginator.Prev.URL }}">Vorherige Seite</a>
{{ end }}
{{ if .Paginator.HasNext }}
<a href="{{ .Paginator.Next.URL }}">Nächste Seite</a>
{{ end }}
</nav>
{{ end }}

Datei anzeigen

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

Datei anzeigen

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

Datei anzeigen

@ -0,0 +1,12 @@
<!--
Icon shortcut
Params:
icon
Example: {{/*
{{% icon "icon" %}}
*/}}
-->
{{ $icon := resources.Get "img/symbols.svg" | fingerprint }}
<svg class="icon" viewBox="0 0 100 100">
<use xlink:href="{{ $icon.RelPermalink }}#{{ . }}" />
</svg>

Datei anzeigen

@ -0,0 +1,14 @@
<!--
date renderer
Params:
date
Creates a lightSlider on your page, call it with: {{/*
{{% lightslider name="<your-slider-name>" url="<url_or_path-to-your-slider.json" [includejs="true"] %}}
*/}}
Example: {{/*
{{% date "2006-01-02" "2. Jan" %}}
*/}}
-->
{{ $t := .Get 0 | time }}
{{ $format := .Get 1 }}
<time datetime="{{ time.Format "2006-01-02" $t }}">{{ time.Format $format $t }}</time>

Datei anzeigen

@ -0,0 +1,6 @@
{{ $class := .Get 0 }}
{{ if .Get 1 }}
<span class="{{ .Get 1 }}">
{{ end }}
<span title="{{ .Get 0 | title }}" class="{{ $class }}" >{{ .Inner }}</span>
{{ if .Get 1 }}</span>{{ end }}

Datei anzeigen

@ -0,0 +1,46 @@
<!--
Lebenslauf renderer
Params:
file=The datafile
Creates a lightSlider on your page, call it with: {{/*
{{% lightslider name="<your-slider-name>" url="<url_or_path-to-your-slider.json" [includejs="true"] %}}
*/}}
Example: {{/*
{{% lebenslauf %}}
*/}}
-->
{{ $data := .Site.Data.lebenslauf }}
<h2>{{ i18n "schule" }}</h2>
{{ if $data.schule }}
<table>
{{ range sort $data.schule "von" "asc" }}
<tr>
<td>{{ index . "name" }}</td>
<td><time datetime="{{ index . "von" }}">{{ index . "von" | time | time.Format "January 2006" }}</time> bis <time datetime="{{ index . "bis" }}">{{ index . "bis" | time | time.Format "January 2006" }}</time></td>
{{ if index . "kommentar" }}
<td>{{ index . "kommentar" }}</td>
{{ end}}
</tr>
{{ end }}
</table>
{{ end }}
<h2>{{ i18n "arbeit" }}</h2>
{{ if $data.arbeit }}
<table>
{{ range sort $data.arbeit "von" "asc" }}
<tr>
<td>{{ index . "firma" }}</td>
{{ $bis := index . "bis" }}
{{ $bisd := now }}
{{ if (ne $bis "HEUTE") }}
{{ $bisd = $bis | time }}
{{ end }}
<td>{{ index . "job"}}</td>
<td>{{ index . "von" | time | time.Format "January 2006" }} bis {{ $bisd | time.Format "January 2006" }}</td>
{{ if index . "kommentar" }}
<td>{{ index . "kommentar" }}</td>
{{ end}}
</tr>
{{ end }}
</table>
{{ end }}

47
themes/meins/lebenslauf.xsd Normale Datei
Datei anzeigen

@ -0,0 +1,47 @@
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="unqualified">
<xs:element name="lebenslauf">
<xs:complexType>
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:element ref="schule" />
<xs:element ref="arbeit" />
<xs:element ref="fähigkeit"/>
</xs:choice>
</xs:complexType>
</xs:element>
<xs:element name="schule">
<xs:complexType>
<xs:all>
<xs:element name="von" type="xs:date" />
<xs:element ref="bis" />
<xs:element name="name" type="xs:string" />
<xs:element name="kommentar" minOccurs="0" maxOccurs="1"/>
</xs:all>
</xs:complexType>
</xs:element>
<xs:element name="arbeit">
<xs:complexType>
<xs:all>
<xs:element name="von" type="xs:date" />
<xs:element ref="bis" />
<xs:element name="firma" type="xs:string" />
<xs:element name="job" type="xs:string" />
<xs:element name="kommentar" minOccurs="0" maxOccurs="1"/>
</xs:all>
</xs:complexType>
</xs:element>
<xs:simpleType name="datum">
<xs:restriction base="xs:string">
<xs:pattern value="HEUTE|[0-9]{4}-[0-9]{2}-[0-9]{2}" />
</xs:restriction>
</xs:simpleType>
<xs:element name="bis" type="datum" />
<xs:element name="fähigkeit">
<xs:complexType>
<xs:sequence>
<xs:element name="name" type="xs:string" />
<xs:element name="framework" minOccurs="0" maxOccurs="unbounded" />
<xs:element name="kommentar" minOccurs="0" maxOccurs="1"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>

15
themes/meins/theme.toml Normale Datei
Datei anzeigen

@ -0,0 +1,15 @@
# theme.toml template for a Hugo theme
# See https://github.com/gohugoio/hugoThemes#themetoml for an example
name = "Meins"
license = "MIT"
licenselink = "https://github.com/yourname/yourtheme/blob/master/LICENSE"
description = ""
homepage = "http://example.com/"
tags = []
features = []
min_version = "0.41.0"
[author]
name = ""
homepage = ""