Better beiträge view

This commit is contained in:
Simon Martens
2025-09-19 22:37:28 +02:00
parent 2e6803afbe
commit b39a7fa7ee
8 changed files with 154 additions and 86 deletions

View File

@@ -2,10 +2,10 @@
<div class="w-full hyphens-auto">
<div class="space-y-4">
<!-- Header with icon and type (small) -->
<div class="flex items-center gap-2 mb-2">
<!-- Header with icon and type -->
<div class="flex items-center gap-2 mb-4">
<i class="ri-file-text-line text-slate-600"></i>
<h3 class="text-sm font-medium text-slate-600">Einzelbeitrag</h3>
<h3 class="text-base font-semibold text-slate-800">Einzelbeitrag</h3>
</div>
<!-- Main piece entry -->
@@ -27,29 +27,75 @@
<!-- Summary with boxed numbers -->
<div class="mb-4">
<p class="text-sm text-slate-600">
<p class="text-slate-600">
<span class="inline-flex items-center gap-1">
<span class="bg-slate-800 text-white px-1.5 py-0.5 rounded text-xs font-bold">{{ $model.TotalPageCount }}</span>
<span class="font-bold">{{ $model.TotalPageCount }}</span>
Seiten in
<span class="bg-slate-800 text-white px-1.5 py-0.5 rounded text-xs font-bold">{{ len $model.IssueContexts }}</span>
<span class="font-bold">{{ len $model.IssueContexts }}</span>
Ausgaben gefunden:
</span>
</p>
</div>
<!-- Issue and page links with highlighting data attributes -->
<div class="space-y-1">
<div class="space-y-6">
{{ range $pageEntry := $model.AllPages }}
<!-- Find the issue ref for this page to get date -->
{{ range $issueRef := $model.AllIssueRefs }}
{{ if and (eq $issueRef.When.Year $pageEntry.IssueYear) (eq $issueRef.Nr $pageEntry.IssueNumber) (le $issueRef.Von $pageEntry.PageNumber) (ge $issueRef.Bis $pageEntry.PageNumber) }}
<div class="inhalts-entry issue-link-entry pl-4 border-l-4 border-slate-300 hover:bg-slate-100">
<a href="/{{ $pageEntry.IssueYear }}/{{ $pageEntry.IssueNumber }}/{{ $pageEntry.PageNumber }}"
class="page-number-inhalts text-slate-700 hover:text-red-700 text-sm hover:underline transition-colors duration-200 bg-blue-50 hover:bg-blue-100 relative"
data-page-number="{{ $pageEntry.PageNumber }}">
{{ if $issueRef.When.Day }}{{ $issueRef.When.Day }}.{{ end }}{{ if $issueRef.When.Month }}{{ $issueRef.When.Month }}.{{ end }}{{ $issueRef.When.Year }} [Nr. {{ $pageEntry.IssueNumber }}], {{ $pageEntry.PageNumber }}
{{ template "_page_link_indicator" (dict "pageNumber" $pageEntry.PageNumber "targetPage" $.targetPage) }}
</a>
<!-- Individual page entry matching issue view style -->
<div class="mb-4 pl-4 border-l-4 border-slate-300 page-entry {{ if not $pageEntry.OtherPieces }}py-2{{ end }}"
data-page-container="{{ $pageEntry.PageNumber }}">
<div class="flex items-center justify-between gap-2 {{ if $pageEntry.OtherPieces }}mb-2{{ end }}">
<div class="flex items-center gap-2">
<span class="part-number bg-transparent text-slate-800 text-sm font-bold px-1.5 py-0.5 rounded border border-slate-400 flex items-center justify-center">
{{ $pageEntry.PartNumber }}
</span>
<button onclick="document.getElementById('piece-page-{{ $pageEntry.PageNumber }}').scrollIntoView({ behavior: 'smooth', block: 'start' })"
class="page-number-inhalts font-bold text-slate-700 bg-slate-100 px-2 py-1 rounded text-sm transition-colors duration-200 hover:bg-slate-200 cursor-pointer relative"
data-page-number="{{ $pageEntry.PageNumber }}">
<span class="page-label">
{{- $issueKey := printf "%d-%d" $pageEntry.IssueYear $pageEntry.IssueNumber -}}
{{- $issueData := GetIssue $issueKey -}}
{{- if $issueData -}}
{{ $issueData.Datum.When.Day }}.{{ $issueData.Datum.When.Month }}.{{ $issueData.Datum.When.Year }} [Nr. {{ $pageEntry.IssueNumber }}], {{ $pageEntry.PageNumber }}
{{- else -}}
{{ $pageEntry.IssueYear }} [Nr. {{ $pageEntry.IssueNumber }}], {{ $pageEntry.PageNumber }}
{{- end -}}
</span>
{{ template "_page_link_indicator" (dict "pageNumber" $pageEntry.PageNumber "targetPage" $.targetPage) }}
</button>
<a href="/{{ $pageEntry.IssueYear }}/{{ $pageEntry.IssueNumber }}"
class="w-6 h-6 bg-blue-100 hover:bg-blue-200 text-blue-700 border border-blue-300 rounded flex items-center justify-center transition-colors duration-200 cursor-pointer no-underline"
title="Zur Ausgabe {{ $pageEntry.IssueYear }}/{{ $pageEntry.IssueNumber }} wechseln">
<i class="ri-book-open-line text-xs"></i>
</a>
</div>
<button class="page-permalink-btn text-slate-400 hover:text-slate-700 text-xs p-1 rounded hover:bg-slate-100 transition-colors duration-200"
title="Link zu dieser Seite kopieren"
onclick="copyPagePermalink('{{ $pageEntry.PageNumber }}', this)"
data-page="{{ $pageEntry.PageNumber }}">
<i class="ri-link text-sm"></i>
</button>
</div>
<!-- Content area -->
<div class="space-y-0">
{{ if $pageEntry.OtherPieces }}
{{ range $otherPiece := $pageEntry.OtherPieces }}
<div class="inhalts-entry py-1 px-0 bg-slate-50 rounded hover:bg-slate-100 transition-colors duration-200"
data-page="{{ $pageEntry.PageNumber }}">
<div class="italic text-slate-600 text-xs mb-1">Außerdem:</div>
{{ template "_inhaltsverzeichnis_eintrag" $otherPiece.PieceByIssue }}
</div>
{{ end }}
{{ else }}
<!-- Empty but visible entry to prevent JS from hiding the page -->
<div class="inhalts-entry py-0 px-0" style="height: 1px; visibility: hidden;">
<!-- This empty but visible element prevents updatePageEntryVisibility() from hiding the page -->
</div>
{{ end }}
</div>
</div>
{{ break }}
{{ end }}
@@ -58,4 +104,4 @@
</div>
</div>
</div>
</div>
</div>

View File

@@ -8,14 +8,23 @@
<div class="grid grid-cols-2 gap-4">
{{ range $pageIndex, $page := $model.Images.AllPages }}
{{ $pageEntry := index $model.AllPages $pageIndex }}
{{ $issueContext := printf "%d Nr. %d" $pageEntry.IssueYear $pageEntry.IssueNumber }}
{{- $issueKey := printf "%d-%d" $pageEntry.IssueYear $pageEntry.IssueNumber -}}
{{- $issueData := GetIssue $issueKey -}}
{{- $issueContext := "" -}}
{{- if $issueData -}}
{{- $issueContext = printf "%d.%d.%d Nr. %d" $issueData.Datum.When.Day $issueData.Datum.When.Month $issueData.Datum.When.Year $pageEntry.IssueNumber -}}
{{- else -}}
{{- $issueContext = printf "%d Nr. %d" $pageEntry.IssueYear $pageEntry.IssueNumber -}}
{{- end -}}
<!-- Page container -->
<div class="piece-page-container newspaper-page-container" id="piece-page-{{ $page.PageNumber }}" data-page-container="{{ $page.PageNumber }}">
<!-- Page indicator row -->
<div class="flex justify-start items-center gap-2 mb-3">
<span class="part-number bg-slate-100 text-slate-800 text-sm font-bold px-1.5 py-0.5 rounded border border-slate-400 flex items-center justify-center">
{{ $pageEntry.PartNumber }}
</span>
<span class="page-indicator text-sm font-bold text-slate-600 bg-blue-50 px-2 py-1 rounded transition-all duration-300 flex items-center gap-1 relative" data-page="{{ $page.PageNumber }}">
{{ PageIcon "single" }}
{{ $issueContext }}, {{ $page.PageNumber }}
{{ template "_page_link_indicator" (dict "pageNumber" $page.PageNumber "targetPage" $.targetPage) }}
</span>
@@ -57,22 +66,6 @@
{{ end }}
</div>
<!-- Other pieces on this page -->
{{ if $pageEntry.OtherPieces }}
<div class="mt-4 p-4 bg-blue-50 border border-blue-200 rounded">
<h4 class="text-sm font-semibold text-blue-800 mb-3 flex items-center gap-2">
<i class="ri-file-list-2-line"></i>
Außerdem auf dieser Seite:
</h4>
<div class="space-y-2">
{{ range $otherPiece := $pageEntry.OtherPieces }}
<div class="text-sm">
{{ template "_inhaltsverzeichnis_eintrag" $otherPiece }}
</div>
{{ end }}
</div>
</div>
{{ end }}
</div>
{{ end }}
</div>