Files
OPENBUREAU/layouts/_partials/wiki-nav.html
T
karim d9ba2f7bbe feature: Wiki — verlinktes Werkstattwissen mit Gruppen-Navigation
Neue Hugo-Sektion /wiki als 'effektives Wiki' im KISS-Sinn:
- Zweispaltiges Layout: gruppierte Seitenleiste (nach Frontmatter 'group')
  mit Live-Filter + Inhalt mit TOC und 'zuletzt bearbeitet'/bearbeiten-Link
- Übersichtsseite gruppiert alle Einträge; WIKI im Hauptmenü
- Seiten ohne group landen unter 'Allgemein' (robust)
- Start-Inhalte: Meta-Seite (wie es funktioniert), Typus (→ Bibliothek),
  Dateiablage/Benennung; Archetype setzt group/summary
- Bewusst dateibasiert: jede Seite verlinkt zur Bearbeitung ins Repo

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-04 11:56:35 +02:00

42 lines
1.7 KiB
HTML

{{- /* Wiki-Seitenleiste: alle Wiki-Seiten nach `group` gruppiert, mit Filter.
Seiten ohne `group` landen unter „Allgemein“. */ -}}
{{- $cur := .RelPermalink -}}
{{- $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 -}}
<nav class="wiki-nav" aria-label="Wiki-Navigation">
<a class="wiki-nav-home{{ if .IsSection }} is-current{{ end }}" href="/wiki/">Übersicht</a>
<input class="wiki-filter" type="search" placeholder="filtern…" aria-label="Wiki filtern" autocomplete="off" />
{{- range $g, $ps := $groups }}
<div class="wiki-nav-group">
<div class="wiki-nav-title">{{ $g }}</div>
<ul>
{{- range sort $ps "Title" }}
<li><a href="{{ .RelPermalink }}"{{ if eq .RelPermalink $cur }} class="is-current" aria-current="page"{{ end }}>{{ .LinkTitle }}</a></li>
{{- end }}
</ul>
</div>
{{- end }}
</nav>
<script>
(function () {
if (window.__wikiFilter) return; window.__wikiFilter = 1;
var inp = document.querySelector('.wiki-filter'); if (!inp) return;
inp.addEventListener('input', function () {
var q = inp.value.trim().toLowerCase();
document.querySelectorAll('.wiki-nav-group').forEach(function (g) {
var any = false;
g.querySelectorAll('li').forEach(function (li) {
var hit = li.textContent.toLowerCase().indexOf(q) > -1;
li.style.display = hit ? '' : 'none'; if (hit) any = true;
});
g.style.display = any ? '' : 'none';
});
});
})();
</script>