{{ $a := . }} {{ $works := slice }} {{ if eq $a.ID "anonym" }} {{ $anonymWorks := LookupAnonymWorks }} {{ range $_, $work := $anonymWorks }} {{ $works = append $works (dict "Item" $work) }} {{ end }} {{ else }} {{ $works = LookupWorks $a }} {{ end }} {{ if ne (len $works) 0 }}

Werke

{{ range $_, $w := $works }}
{{- if ne (len $w.Item.Citation.InnerXML ) 0 -}}
{{- Safe $w.Item.Citation.HTML -}} {{- range $_, $url := $w.Item.URLs -}} {{ $url.Chardata }} {{- end -}}
{{- end -}} {{- /* Find all pieces that reference this work */ -}} {{ $workPieces := LookupPieces $w.Item }} {{ if len $workPieces }}
{{- /* Group pieces by category + author combination */ -}} {{- $pieceGroups := dict -}} {{- range $_, $p := $workPieces -}} {{- /* Get categories for this piece */ -}} {{- $categoryFlags := GetCategoryFlags $p.Item -}} {{- $categories := slice -}} {{- if $categoryFlags.Rezension -}} {{- $categories = append $categories "Rezension" -}} {{- end -}} {{- if $categoryFlags.Auszug -}} {{- $categories = append $categories "Auszug" -}} {{- end -}} {{- if $categoryFlags.Theaterkritik -}} {{- $categories = append $categories "Theaterkritik" -}} {{- end -}} {{- if $categoryFlags.Uebersetzung -}} {{- $categories = append $categories "Übersetzung" -}} {{- end -}} {{- if $categoryFlags.Kommentar -}} {{- $categories = append $categories "Kommentar" -}} {{- end -}} {{- if $categoryFlags.Replik -}} {{- $categories = append $categories "Replik" -}} {{- end -}} {{- if $categoryFlags.Anzeige -}} {{- $categories = append $categories "Anzeige" -}} {{- end -}} {{- if $categoryFlags.Provinienz -}} {{- $categories = append $categories "Provinienz" -}} {{- end -}} {{- if eq (len $categories) 0 -}} {{- $categories = append $categories "Beitrag" -}} {{- end -}} {{- /* Get authors for this piece (excluding current person) */ -}} {{- $pieceAuthors := slice -}} {{- range $agentref := $p.Item.AgentRefs -}} {{- if and (or (eq $agentref.Category "") (eq $agentref.Category "autor")) (ne $agentref.Ref $a.ID) -}} {{- $pieceAuthors = append $pieceAuthors $agentref.Ref -}} {{- end -}} {{- end -}} {{- $sortedAuthors := sortStrings $pieceAuthors -}} {{- /* Create group key: categories + authors */ -}} {{- $sortedCategories := sortStrings $categories -}} {{- $groupKey := printf "%s|%s" (joinWithUnd $sortedCategories) (joinWithUnd $sortedAuthors) -}} {{- /* Add piece to group (check for duplicates by ID) */ -}} {{- $existing := index $pieceGroups $groupKey -}} {{- if $existing -}} {{- /* Check if piece is already in group */ -}} {{- $found := false -}} {{- range $existingPiece := $existing -}} {{- if eq $existingPiece.Item.ID $p.Item.ID -}} {{- $found = true -}} {{- end -}} {{- end -}} {{- if not $found -}} {{- $pieceGroups = merge $pieceGroups (dict $groupKey (append $existing $p)) -}} {{- end -}} {{- else -}} {{- $pieceGroups = merge $pieceGroups (dict $groupKey (slice $p)) -}} {{- end -}} {{- end -}} {{- /* Display each group */ -}} {{- range $groupKey, $groupPieces := $pieceGroups -}}
{{- /* Extract categories and authors from group key */ -}} {{- $keyParts := split $groupKey "|" -}} {{- $categoryName := index $keyParts 0 -}} {{- $authorPart := index $keyParts 1 -}} {{- /* Use plural if multiple pieces grouped together */ -}} {{- $displayCategory := $categoryName -}} {{- if gt (len $groupPieces) 1 -}} {{- if eq $categoryName "Rezension" -}} {{- $displayCategory = "Rezensionen" -}} {{- else if eq $categoryName "Auszug" -}} {{- $displayCategory = "Auszüge" -}} {{- else if eq $categoryName "Theaterkritik" -}} {{- $displayCategory = "Theaterkritiken" -}} {{- else if eq $categoryName "Übersetzung" -}} {{- $displayCategory = "Übersetzungen" -}} {{- else if eq $categoryName "Kommentar" -}} {{- $displayCategory = "Kommentare" -}} {{- else if eq $categoryName "Replik" -}} {{- $displayCategory = "Repliken" -}} {{- else if eq $categoryName "Anzeige" -}} {{- $displayCategory = "Anzeigen" -}} {{- else if eq $categoryName "Beitrag" -}} {{- $displayCategory = "Beiträge" -}} {{- end -}} {{- end -}} {{ $displayCategory }}{{- if ne $authorPart "" }} von {{ range $i, $authorID := (split $authorPart " und ") }}{{- if gt $i 0 }} und {{ end }}{{- $agent := GetAgent $authorID -}}{{- if and $agent (gt (len $agent.Names) 0) -}}{{ index $agent.Names 0 }}{{- end -}}{{ end }}{{- end }}: {{- /* Show citations separated by commas */ -}} {{ " " }}{{- range $pieceIndex, $p := $groupPieces -}} {{- range $issueIndex, $issue := $p.Item.IssueRefs -}} {{- if or (gt $pieceIndex 0) (gt $issueIndex 0) }}, {{ end -}} {{- template "_citation" $issue -}} {{- end -}} {{- /* Add "Ganzer Beitrag" link if piece spans multiple issues */ -}} {{- if gt (len $p.Item.IssueRefs) 1 -}} {{ " " }} {{- end -}} {{- end -}}
{{- end -}}
{{ end }}
{{ end }}
{{ end }}