{{ $a := . }} {{ $works := LookupWorks $a }} {{ $allPieces := LookupPieces $a }} {{- /* Filter pieces for work-related categories */ -}} {{- $workPieces := slice -}} {{- range $_, $p := $allPieces -}} {{- $categoryFlags := GetCategoryFlags $p.Item -}} {{- if or $categoryFlags.Rezension $categoryFlags.Auszug $categoryFlags.Theaterkritik $categoryFlags.Uebersetzung $categoryFlags.Kommentar $categoryFlags.Replik $categoryFlags.Anzeige $categoryFlags.Provinienz -}} {{- $workPieces = append $workPieces $p -}} {{- end -}} {{- end -}} {{- if or (ne (len $works) 0) (ne (len $workPieces) 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 -}} {{ $workPieces := LookupPieces $w.Item }} {{ if len $workPieces }}
{{- /* Group pieces by category and display inline */ -}} {{- $groupedByCategory := dict -}} {{- range $_, $p := $workPieces -}} {{- $categoryFlags := GetCategoryFlags $p.Item -}} {{- $categories := slice -}} {{- if $categoryFlags.Rezension -}} {{- $categories = append $categories "Rezension" -}} {{- end -}} {{- if $categoryFlags.Gedicht -}} {{- $categories = append $categories "Gedicht" -}} {{- end -}} {{- if $categoryFlags.Aufsatz -}} {{- $categories = append $categories "Aufsatz" -}} {{- end -}} {{- if $categoryFlags.Theaterkritik -}} {{- $categories = append $categories "Theaterkritik" -}} {{- end -}} {{- if $categoryFlags.Brief -}} {{- $categories = append $categories "Brief" -}} {{- end -}} {{- if $categoryFlags.Erzaehlung -}} {{- $categories = append $categories "Erzählung" -}} {{- end -}} {{- if $categoryFlags.Kommentar -}} {{- $categories = append $categories "Kommentar" -}} {{- end -}} {{- if $categoryFlags.Uebersetzung -}} {{- $categories = append $categories "Übersetzung" -}} {{- end -}} {{- if $categoryFlags.Auszug -}} {{- $categories = append $categories "Auszug" -}} {{- end -}} {{- if $categoryFlags.Replik -}} {{- $categories = append $categories "Replik" -}} {{- end -}} {{- if $categoryFlags.Lokalnachrichten -}} {{- $categories = append $categories "Lokalnachrichten" -}} {{- end -}} {{- if $categoryFlags.Lotterie -}} {{- $categories = append $categories "Lotterie" -}} {{- end -}} {{- if $categoryFlags.Nachruf -}} {{- $categories = append $categories "Nachruf" -}} {{- end -}} {{- if $categoryFlags.Weltnachrichten -}} {{- $categories = append $categories "Weltnachrichten" -}} {{- end -}} {{- if $categoryFlags.EinkommendeFremde -}} {{- $categories = append $categories "Einkommende Fremde" -}} {{- end -}} {{- if $categoryFlags.Wechselkurse -}} {{- $categories = append $categories "Wechselkurse" -}} {{- end -}} {{- if $categoryFlags.Buecher -}} {{- $categories = append $categories "Bücher" -}} {{- end -}} {{- if $categoryFlags.Lokalanzeigen -}} {{- $categories = append $categories "Lokalanzeigen" -}} {{- end -}} {{- if $categoryFlags.Vorladung -}} {{- $categories = append $categories "Vorladung" -}} {{- end -}} {{- if $categoryFlags.GelehrteNachrichten -}} {{- $categories = append $categories "Gelehrte Nachrichten" -}} {{- end -}} {{- if $categoryFlags.Anzeige -}} {{- $categories = append $categories "Anzeige" -}} {{- end -}} {{- if $categoryFlags.Proklamation -}} {{- $categories = append $categories "Proklamation" -}} {{- end -}} {{- if $categoryFlags.Desertionsliste -}} {{- $categories = append $categories "Desertionsliste" -}} {{- end -}} {{- if $categoryFlags.Notenblatt -}} {{- $categories = append $categories "Notenblatt" -}} {{- end -}} {{- if $categoryFlags.Vorlesungsverzeichnis -}} {{- $categories = append $categories "Vorlesungsverzeichnis" -}} {{- end -}} {{- if $categoryFlags.Abbildung -}} {{- $categories = append $categories "Abbildung" -}} {{- end -}} {{- if $categoryFlags.Ineigenersache -}} {{- $categories = append $categories "In eigener Sache" -}} {{- end -}} {{- if $categoryFlags.Provinienz -}} {{- $categories = append $categories "Provinienz" -}} {{- end -}} {{- if eq (len $categories) 0 -}} {{- $categories = append $categories "Beitrag" -}} {{- end -}} {{- /* Get additional authors for this specific piece */ -}} {{- $pieceAdditionalAuthorIDs := slice -}} {{- range $agentref := $p.Item.AgentRefs -}} {{- if and (or (eq $agentref.Category "") (eq $agentref.Category "autor")) (ne $agentref.Ref $a.ID) -}} {{- $pieceAdditionalAuthorIDs = append $pieceAdditionalAuthorIDs $agentref.Ref -}} {{- end -}} {{- end -}} {{- $sortedAdditionalAuthorIDs := sortStrings $pieceAdditionalAuthorIDs -}} {{- /* Create grouping key with category + additional authors */ -}} {{- $sortedCategories := sortStrings $categories -}} {{- $categoryName := joinWithUnd $sortedCategories -}} {{- $groupKey := printf "%s|%s" $categoryName (joinWithUnd $sortedAdditionalAuthorIDs) -}} {{- $existing := index $groupedByCategory $groupKey -}} {{- if $existing -}} {{- $groupedByCategory = merge $groupedByCategory (dict $groupKey (append $existing $p)) -}} {{- else -}} {{- $groupedByCategory = merge $groupedByCategory (dict $groupKey (slice $p)) -}} {{- end -}} {{- end -}} {{- /* Display each category group */ -}} {{- range $groupKey, $categoryPieces := $groupedByCategory -}}
{{- /* Extract category and additional authors from group key */ -}} {{- $keyParts := split $groupKey "|" -}} {{- $categoryName := index $keyParts 0 -}} {{ $categoryName }} {{- /* Get additional authors from first piece in group */ -}} {{- $firstPiece := index $categoryPieces 0 -}} {{- $additionalAuthorIDs := slice -}} {{- range $agentref := $firstPiece.Item.AgentRefs -}} {{- if and (or (eq $agentref.Category "") (eq $agentref.Category "autor")) (ne $agentref.Ref $a.ID) -}} {{- $additionalAuthorIDs = append $additionalAuthorIDs $agentref.Ref -}} {{- end -}} {{- end -}} {{- if $additionalAuthorIDs -}} {{ " " }}von {{ range $i, $authorID := $additionalAuthorIDs }}{{- 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 all citations for this category inline with commas */ -}} {{ " " }}{{- range $pieceIndex, $p := $categoryPieces -}} {{- range $issueIndex, $issue := $p.Item.IssueRefs -}} {{- if or (gt $pieceIndex 0) (gt $issueIndex 0) }}, {{ end -}} {{ $issueData := GetIssue (printf "%d-%d" $issue.When.Year $issue.Nr) }} {{- $url := printf "/%s/%d" $issue.When $issue.Nr -}} {{- if $issue.Von -}} {{- if $issue.Beilage -}} {{- $url = printf "%s#beilage-%d-page-%d" $url $issue.Beilage $issue.Von -}} {{- else -}} {{- $url = printf "%s/%d" $url $issue.Von -}} {{- end -}} {{- end -}} {{- if $issueData -}} {{ $issueData.Datum.When.Day }}.{{ $issueData.Datum.When.Month }}.{{ $issueData.Datum.When.Year }}/{{ $issue.Nr }}, S. {{ $issue.Von }}{{- if and $issue.Bis (ne $issue.Von $issue.Bis) }}-{{ $issue.Bis }}{{ end }} {{- else -}} {{ $issue.When.Day }}.{{ $issue.When.Month }}.{{ $issue.When.Year }}/{{ $issue.Nr }}, S. {{ $issue.Von }}{{- if and $issue.Bis (ne $issue.Von $issue.Bis) }}-{{ $issue.Bis }}{{ end }} {{- end -}} {{- end -}} {{- end -}} {{- /* Add "Ganzer Beitrag" link if piece spans multiple issues */ -}} {{- $firstPiece := index $categoryPieces 0 -}} {{- if gt (len $firstPiece.Item.IssueRefs) 1 -}} {{ " " }} {{- end -}}
{{- end -}}
{{ end }}
{{ end }} {{- /* Process standalone work pieces that aren't linked to specific works */ -}} {{- if ne (len $workPieces) 0 -}} {{- /* Group standalone work pieces by category and additional authors */ -}} {{- $standaloneGrouped := dict -}} {{- range $_, $p := $workPieces -}} {{- /* Skip pieces that are already covered by works above */ -}} {{- $isPieceInWorks := false -}} {{- range $_, $w := $works -}} {{- $workPiecesCheck := LookupPieces $w.Item -}} {{- range $_, $wp := $workPiecesCheck -}} {{- if eq $wp.Item.ID $p.Item.ID -}} {{- $isPieceInWorks = true -}} {{- end -}} {{- end -}} {{- end -}} {{- if not $isPieceInWorks -}} {{- /* 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 ne (len $categories) 0 -}} {{- /* Get additional authors for this specific piece */ -}} {{- $pieceAdditionalAuthorIDs := slice -}} {{- range $agentref := $p.Item.AgentRefs -}} {{- if and (or (eq $agentref.Category "") (eq $agentref.Category "autor")) (ne $agentref.Ref $a.ID) -}} {{- $pieceAdditionalAuthorIDs = append $pieceAdditionalAuthorIDs $agentref.Ref -}} {{- end -}} {{- end -}} {{- $sortedAdditionalAuthorIDs := sortStrings $pieceAdditionalAuthorIDs -}} {{- /* Create grouping key with category + additional authors */ -}} {{- $sortedCategories := sortStrings $categories -}} {{- $categoryName := joinWithUnd $sortedCategories -}} {{- $groupKey := printf "%s|%s" $categoryName (joinWithUnd $sortedAdditionalAuthorIDs) -}} {{- $existing := index $standaloneGrouped $groupKey -}} {{- if $existing -}} {{- $standaloneGrouped = merge $standaloneGrouped (dict $groupKey (append $existing $p)) -}} {{- else -}} {{- $standaloneGrouped = merge $standaloneGrouped (dict $groupKey (slice $p)) -}} {{- end -}} {{- end -}} {{- end -}} {{- end -}} {{- /* Display standalone work pieces */ -}} {{- range $groupKey, $categoryPieces := $standaloneGrouped -}}
{{- /* Extract category and additional authors from group key */ -}} {{- $keyParts := split $groupKey "|" -}} {{- $categoryName := index $keyParts 0 -}} {{ $categoryName }} {{- /* Get additional authors from first piece in group */ -}} {{- $firstPiece := index $categoryPieces 0 -}} {{- $additionalAuthorIDs := slice -}} {{- range $agentref := $firstPiece.Item.AgentRefs -}} {{- if and (or (eq $agentref.Category "") (eq $agentref.Category "autor")) (ne $agentref.Ref $a.ID) -}} {{- $additionalAuthorIDs = append $additionalAuthorIDs $agentref.Ref -}} {{- end -}} {{- end -}} {{- if $additionalAuthorIDs -}} {{ " " }}von {{ range $i, $authorID := $additionalAuthorIDs }}{{- 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 all citations for this category inline with commas */ -}} {{ " " }}{{- range $pieceIndex, $p := $categoryPieces -}} {{- range $issueIndex, $issue := $p.Item.IssueRefs -}} {{- if or (gt $pieceIndex 0) (gt $issueIndex 0) }}, {{ end -}} {{ $issueData := GetIssue (printf "%d-%d" $issue.When.Year $issue.Nr) }} {{- $url := printf "/%s/%d" $issue.When $issue.Nr -}} {{- if $issue.Von -}} {{- if $issue.Beilage -}} {{- $url = printf "%s#beilage-%d-page-%d" $url $issue.Beilage $issue.Von -}} {{- else -}} {{- $url = printf "%s/%d" $url $issue.Von -}} {{- end -}} {{- end -}} {{- if $issueData -}} {{ $issueData.Datum.When.Day }}.{{ $issueData.Datum.When.Month }}.{{ $issueData.Datum.When.Year }}/{{ $issue.Nr }}, S. {{ $issue.Von }}{{- if and $issue.Bis (ne $issue.Von $issue.Bis) }}-{{ $issue.Bis }}{{ end }} {{- else -}} {{ $issue.When.Day }}.{{ $issue.When.Month }}.{{ $issue.When.Year }}/{{ $issue.Nr }}, S. {{ $issue.Von }}{{- if and $issue.Bis (ne $issue.Von $issue.Bis) }}-{{ $issue.Bis }}{{ end }} {{- end -}} {{- end -}} {{- end -}} {{- /* Add "Ganzer Beitrag" link if piece spans multiple issues */ -}} {{- $firstPiece := index $categoryPieces 0 -}} {{- if gt (len $firstPiece.Item.IssueRefs) 1 -}} {{ " " }} {{- end -}}
{{- end -}} {{- end -}}
{{ end }}