ia: Umbenennung — Library→Archiv, Wiki→Library (URLs, Content, Code)

Neue Informationsarchitektur:
- ARCHIV (/archiv) = die fertigen Texte (vormals Library): Essays mit Byline,
  Quellen/Zitieren, Dialog, Versionsverlauf. Section "archiv".
- LIBRARY (/library) = das verlinkte Werkstattwissen (vormals Wiki): zwei-
  spaltig mit Gruppen-Navigation + Filter. Section "library".

Umgesetzt:
- content/ + layouts/ verschoben (git mv), Menü (ARCHIV+LIBRARY, kein WIKI),
  Startseiten-Journal zieht jetzt Section "archiv", Querverweise umgeschrieben
  (/library→/archiv, /wiki→/library).
- CMS: files.js klassifiziert archiv/<sec>→beitrag, library/→biblio;
  stats.js + Admin (Typ "Library-Seite", KIND_LABEL, Pfade) nachgezogen.
- single.html: Byline/Provenance/Dialog an Section "archiv" gebunden.
- Beide Header zentriert (section-header) — einheitlicher Look.
- Interne Dialog-Werte (thread.kind='library', Forum "Beiträge") unverändert.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
2026-06-04 22:13:50 +02:00
parent 54f03270d0
commit 790141bafe
33 changed files with 208 additions and 215 deletions
+3 -3
View File
@@ -17,7 +17,7 @@
{{ end }}
{{/* Byline + Meta nur bei Library-Beiträgen — Seiten wie Manifest,
Kontakt, Spenden brauchen weder Autor noch „Aktualisiert am". */}}
{{ if eq .Section "library" }}
{{ if eq .Section "archiv" }}
{{ $author := .Params.author | default site.Params.author.name }}
{{ $aslug := urlize $author }}
{{ if not .Params.author }}{{ with index site.Data.authors site.Params.author.email }}{{ with .slug }}{{ $aslug = . }}{{ end }}{{ end }}{{ end }}
@@ -62,7 +62,7 @@
{{/* Tags: bei Seiten (nicht-Library) wie bisher unter dem Text. Bei Library
wandern sie in die Aktionsreihe (rechts neben Dialog) im Partial. */}}
{{ if ne .Section "library" }}
{{ if ne .Section "archiv" }}
{{- with .Params.tags }}
<ul class="tag-pills" aria-label="Tags">
{{- range . -}}<li><a href="/tags/{{ . | urlize }}/">{{ . }}</a></li>{{- end -}}
@@ -71,7 +71,7 @@
{{ end }}
{{/* Artikel-Fuß (zitieren, Dialog, Tags, Versionen) — nur bei Library. */}}
{{ if eq .Section "library" }}
{{ if eq .Section "archiv" }}
{{ partial "provenance.html" . }}
<script src="/version-history.js"></script>
{{ end }}
@@ -1,7 +1,7 @@
{{- /* Wiki-Seitenleiste: alle Wiki-Seiten nach `group` gruppiert, mit Filter.
{{- /* Library-Seitenleiste: alle Library-Seiten nach `group` gruppiert, mit Filter.
Seiten ohne `group` landen unter „Allgemein“. */ -}}
{{- $cur := .RelPermalink -}}
{{- $pages := where site.RegularPages "Section" "wiki" -}}
{{- $pages := where site.RegularPages "Section" "library" -}}
{{- $groups := dict -}}
{{- range $pages -}}
{{- $g := .Params.group | default "Allgemein" -}}
+113
View File
@@ -0,0 +1,113 @@
{{ define "main" }}
{{ .Content }}
{{ if .IsSection }}
{{ if eq .Path "/archiv" }}
{{/* Archiv root: Atlas — gruppiert nach Untersection */}}
<section class="atlas">
{{ range .Sections.ByWeight }}
{{ $section := path.Base .RelPermalink }}
<article class="atlas-section" data-section="{{ $section }}">
<h2><a href="{{ .RelPermalink }}">{{ .Title }}</a></h2>
{{ with .Params.description }}<p class="text-muted">{{ . }}</p>{{ end }}
<ul class="atlas-list">
{{ range first 6 .RegularPages.ByDate.Reverse }}
<li>
<a href="{{ .RelPermalink }}">{{ .LinkTitle }}</a>
<span class="list-meta text-muted"> · {{ partial "date.html" .Date }}</span>
</li>
{{ end }}
</ul>
{{ if gt (len .RegularPages) 6 }}
<p class="more"><a href="{{ .RelPermalink }}">alle in {{ .Title }} →</a></p>
{{ end }}
</article>
{{ end }}
{{/* Tag-Cloud */}}
{{ with site.Taxonomies.tags }}
<article class="atlas-tags">
<h2>Tags</h2>
<ul class="tag-cloud">
{{ range $name, $taxonomy := . }}
<li><a href="/tags/{{ $name | urlize }}/">{{ $name }} <span class="text-muted">({{ len $taxonomy }})</span></a></li>
{{ end }}
</ul>
</article>
{{ end }}
</section>
{{ else if eq .Path "/archiv/software" }}
{{/* Software: kuratierte Landing — Werkzeuge (mit externem Link) getrennt
von Texten & Anleitungen. */}}
<header class="section-header" data-section="software">
<p class="section-rubric">Archiv</p>
<h1 class="section-title">{{ .Title }}</h1>
{{ with .Params.description }}<p class="section-description">{{ . }}</p>{{ end }}
</header>
{{ $tools := where .RegularPages "Params.external" "!=" nil }}
{{ $texts := where .RegularPages "Params.external" nil }}
{{ with $tools }}
<section class="software-tools">
<h2 class="software-h">Werkzeuge</h2>
<ul class="tool-list">
{{ range .ByWeight }}
<li class="tool-item"{{ with .Params.color }} data-color="{{ . }}"{{ end }}>
<a class="tool-main" href="{{ .RelPermalink }}">
<span class="tool-name">{{ .LinkTitle }}</span>
{{ with .Params.summary }}<span class="tool-sum text-muted">{{ . }}</span>{{ end }}
</a>
{{ with .Params.external }}<a class="tool-ext" href="{{ . }}" rel="noopener" aria-label="extern öffnen"></a>{{ end }}
</li>
{{ end }}
</ul>
</section>
{{ end }}
<section class="software-texts">
<h2 class="software-h">Texte &amp; Anleitungen</h2>
<div class="time-list" data-section="software">
<ul>
{{ range $texts.ByDate.Reverse }}
<li class="list-item">
<div class="list-title-row">
<div class="list-title">
<a href="{{ .RelPermalink }}">{{ .LinkTitle }}</a>
{{ with .Params.summary }}<div class="list-summary text-muted">{{ . }}</div>{{ end }}
</div>
<div class="list-meta">{{ partial "date.html" .Date }}</div>
</div>
</li>
{{ end }}
</ul>
</div>
</section>
{{ else }}
{{/* Library subsection: chronologisch */}}
{{ $section := path.Base .RelPermalink }}
<header class="section-header" data-section="{{ $section }}">
<p class="section-rubric">Archiv</p>
<h1 class="section-title">{{ .Title }}</h1>
{{ with .Params.description }}<p class="section-description">{{ . }}</p>{{ end }}
</header>
<div class="time-list" data-section="{{ $section }}">
<ul>
{{ range .RegularPages.ByDate.Reverse }}
<li class="list-item">
<div class="list-title-row">
<div class="list-title">
<a href="{{ .RelPermalink }}">{{ .LinkTitle }}</a>
{{ with .Params.summary }}
<div class="list-summary text-muted">{{ . }}</div>
{{ end }}
</div>
<div class="list-meta">{{ partial "date.html" .Date }}</div>
</div>
</li>
{{ end }}
</ul>
</div>
{{ end }}
{{ end }}
{{ end }}
+4 -4
View File
@@ -1,8 +1,8 @@
{{ define "main" }}
{{ .Content }}
{{ $library := where site.RegularPages "Section" "library" }}
{{ $journal := first 20 $library.ByDate.Reverse }}
{{ $archiv := where site.RegularPages "Section" "archiv" }}
{{ $journal := first 20 $archiv.ByDate.Reverse }}
<section class="journal" aria-label="Journal — neueste Beiträge">
<header class="journal-header">
@@ -21,8 +21,8 @@
</ol>
</div>
{{ if gt (len $library) 20 }}
<p class="more"><a href="/library/">→ Alle Beiträge in der Library</a></p>
{{ if gt (len $archiv) 20 }}
<p class="more"><a href="/archiv/">→ Alle Beiträge im Archiv</a></p>
{{ end }}
</section>
{{ end }}
+32 -104
View File
@@ -1,113 +1,41 @@
{{ define "main" }}
{{ .Content }}
<header class="section-header">
<h1 class="section-title">{{ .Title }}</h1>
</header>
{{ if .IsSection }}
{{ if eq .Path "/library" }}
{{/* Library root: Atlas — gruppiert nach Untersection */}}
<section class="atlas">
{{ range .Sections.ByWeight }}
{{ $section := path.Base .RelPermalink }}
<article class="atlas-section" data-section="{{ $section }}">
<h2><a href="{{ .RelPermalink }}">{{ .Title }}</a></h2>
{{ with .Params.description }}<p class="text-muted">{{ . }}</p>{{ end }}
<ul class="atlas-list">
{{ range first 6 .RegularPages.ByDate.Reverse }}
<li>
<a href="{{ .RelPermalink }}">{{ .LinkTitle }}</a>
<span class="list-meta text-muted"> · {{ partial "date.html" .Date }}</span>
</li>
{{ end }}
</ul>
{{ if gt (len .RegularPages) 6 }}
<p class="more"><a href="{{ .RelPermalink }}">alle in {{ .Title }} →</a></p>
{{ end }}
</article>
{{ end }}
<div class="wiki">
<aside class="wiki-side">{{ partial "library-nav.html" . }}</aside>
{{/* Tag-Cloud */}}
{{ with site.Taxonomies.tags }}
<article class="atlas-tags">
<h2>Tags</h2>
<ul class="tag-cloud">
{{ range $name, $taxonomy := . }}
<li><a href="/tags/{{ $name | urlize }}/">{{ $name }} <span class="text-muted">({{ len $taxonomy }})</span></a></li>
{{ end }}
</ul>
</article>
{{ end }}
</section>
{{ else if eq .Path "/library/software" }}
{{/* Software: kuratierte Landing — Werkzeuge (mit externem Link) getrennt
von Texten & Anleitungen. */}}
<header class="section-header" data-section="software">
<p class="section-rubric">Library</p>
<h1 class="section-title">{{ .Title }}</h1>
{{ with .Params.description }}<p class="section-description">{{ . }}</p>{{ end }}
</header>
<div class="wiki-page">
<div class="single-content">{{ .Content }}</div>
{{ $tools := where .RegularPages "Params.external" "!=" nil }}
{{ $texts := where .RegularPages "Params.external" nil }}
{{ with $tools }}
<section class="software-tools">
<h2 class="software-h">Werkzeuge</h2>
<ul class="tool-list">
{{ range .ByWeight }}
<li class="tool-item"{{ with .Params.color }} data-color="{{ . }}"{{ end }}>
<a class="tool-main" href="{{ .RelPermalink }}">
<span class="tool-name">{{ .LinkTitle }}</span>
{{ with .Params.summary }}<span class="tool-sum text-muted">{{ . }}</span>{{ end }}
</a>
{{ with .Params.external }}<a class="tool-ext" href="{{ . }}" rel="noopener" aria-label="extern öffnen"></a>{{ end }}
</li>
{{ end }}
</ul>
</section>
{{ $pages := where site.RegularPages "Section" "library" }}
{{ $groups := dict }}
{{ range $pages }}
{{ $g := .Params.group | default "Allgemein" }}
{{ $existing := index $groups $g | default slice }}
{{ $groups = merge $groups (dict $g ($existing | append .)) }}
{{ end }}
<section class="software-texts">
<h2 class="software-h">Texte &amp; Anleitungen</h2>
<div class="time-list" data-section="software">
<ul>
{{ range $texts.ByDate.Reverse }}
<li class="list-item">
<div class="list-title-row">
<div class="list-title">
{{ if $pages }}
<div class="wiki-index">
{{ range $g, $ps := $groups }}
<section class="wiki-group">
<h2>{{ $g }}</h2>
<ul>
{{ range sort $ps "Title" }}
<li>
<a href="{{ .RelPermalink }}">{{ .LinkTitle }}</a>
{{ with .Params.summary }}<div class="list-summary text-muted">{{ . }}</div>{{ end }}
</div>
<div class="list-meta">{{ partial "date.html" .Date }}</div>
</div>
</li>
{{ end }}
</ul>
</div>
</section>
{{ else }}
{{/* Library subsection: chronologisch */}}
{{ $section := path.Base .RelPermalink }}
<header class="section-header" data-section="{{ $section }}">
<p class="section-rubric">Library</p>
<h1 class="section-title">{{ .Title }}</h1>
{{ with .Params.description }}<p class="section-description">{{ . }}</p>{{ end }}
</header>
<div class="time-list" data-section="{{ $section }}">
<ul>
{{ range .RegularPages.ByDate.Reverse }}
<li class="list-item">
<div class="list-title-row">
<div class="list-title">
<a href="{{ .RelPermalink }}">{{ .LinkTitle }}</a>
{{ with .Params.summary }}
<div class="list-summary text-muted">{{ . }}</div>
{{ end }}
</div>
<div class="list-meta">{{ partial "date.html" .Date }}</div>
</div>
</li>
{{ with .Params.summary }}<span class="text-muted">{{ . }}</span>{{ end }}
</li>
{{ end }}
</ul>
</section>
{{ end }}
</ul>
</div>
{{ end }}
{{ end }}
</div>
{{ else }}
<p class="text-muted"><em>Noch keine Einträge — der erste entsteht im Redaktions-Editor.</em></p>
{{ end }}
</div>
</div>
{{ end }}
@@ -1,11 +1,12 @@
{{ define "main" }}
<header class="section-header">
<p class="section-rubric">{{ with .Params.group }}{{ . }}{{ else }}Library{{ end }}</p>
<h1 class="section-title">{{ .Title }}</h1>
{{ with .Params.summary }}<p class="section-description">{{ . }}</p>{{ end }}
</header>
<div class="wiki">
<header class="section-header">
<p class="section-rubric">{{ with .Params.group }}{{ . }}{{ else }}Wiki{{ end }}</p>
<h1 class="section-title">{{ .Title }}</h1>
{{ with .Params.summary }}<p class="section-description">{{ . }}</p>{{ end }}
</header>
<aside class="wiki-side">{{ partial "wiki-nav.html" . }}</aside>
<aside class="wiki-side">{{ partial "library-nav.html" . }}</aside>
<div class="wiki-page">
{{ $hasToC := .Params.toc | default false }}
-40
View File
@@ -1,40 +0,0 @@
{{ define "main" }}
<div class="wiki">
<header class="section-header">
<h1 class="section-title">{{ .Title }}</h1>
</header>
<aside class="wiki-side">{{ partial "wiki-nav.html" . }}</aside>
<div class="wiki-page">
<div class="single-content">{{ .Content }}</div>
{{ $pages := where site.RegularPages "Section" "wiki" }}
{{ $groups := dict }}
{{ range $pages }}
{{ $g := .Params.group | default "Allgemein" }}
{{ $existing := index $groups $g | default slice }}
{{ $groups = merge $groups (dict $g ($existing | append .)) }}
{{ end }}
{{ if $pages }}
<div class="wiki-index">
{{ range $g, $ps := $groups }}
<section class="wiki-group">
<h2>{{ $g }}</h2>
<ul>
{{ range sort $ps "Title" }}
<li>
<a href="{{ .RelPermalink }}">{{ .LinkTitle }}</a>
{{ with .Params.summary }}<span class="text-muted"> — {{ . }}</span>{{ end }}
</li>
{{ end }}
</ul>
</section>
{{ end }}
</div>
{{ else }}
<p class="text-muted"><em>Noch keine Einträge — der erste entsteht im Redaktions-Editor.</em></p>
{{ end }}
</div>
</div>
{{ end }}