mirror of
https://codeberg.org/VnPower/PixivFE
synced 2024-12-06 19:16:23 +01:00
more novelSeries wip
This commit is contained in:
@@ -25,15 +25,18 @@
|
||||
{{- if .AiType == 2 }}
|
||||
<span class="badge bg-warning text-dark me-2 mb-2">AI-generated</span>
|
||||
{{- end }}
|
||||
{{- range .Tags }}
|
||||
{* NOTE: early block to catch the R-18 tag *}
|
||||
{{- if isEmphasize(.) }}
|
||||
<span class="badge bg-danger me-2 mb-2">{{ . }}</span>
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
{{- if .IsOriginal }}
|
||||
<span class="badge bg-primary me-2 mb-2">Original</span>
|
||||
{{- end }}
|
||||
{{- if .Brief.Genre != "0" }}
|
||||
<span class="badge bg-secondary me-2 mb-2">{{ novelGenre: .Brief.Genre }}</span>
|
||||
{{- end }}
|
||||
{{- range .Tags }}
|
||||
{{- if isEmphasize(.) }}
|
||||
<span class="badge bg-danger me-2 mb-2">{{ . }}</span>
|
||||
{* Intentionally empty to not render anything to avoid duplication *}
|
||||
{{- else }}
|
||||
<span class="badge fw-normal text-muted me-2 mb-2 p-0 text-wrap text-break text-start">
|
||||
<a href="/tags/{{ escapeString(.) }}" class="text-decoration-none text-wrap text-break">#{{ . }}</a>
|
||||
|
||||
+15
-21
@@ -23,7 +23,7 @@
|
||||
|
||||
<!-- Series name -->
|
||||
{{- if .Novel.SeriesNavData }}
|
||||
<h3 class="fw-medium mb-2">
|
||||
<h3 class="fw-normal mb-2">
|
||||
<a href="/novel/series/{{ .Novel.SeriesNavData.SeriesID }}" class="text-body-secondary text-decoration-none">
|
||||
{{- .Novel.SeriesNavData.Title }} #{{- .Novel.SeriesNavData.Order}}
|
||||
</a>
|
||||
@@ -32,20 +32,18 @@
|
||||
|
||||
<!-- Author -->
|
||||
<div class="d-flex align-items-center mb-2">
|
||||
<a href="/users/{{ .User.ID }}/novels" class="text-decoration-none">
|
||||
<img src="{{ .User.Avatar }}" alt="{{ .User.Name }}" class="rounded-circle me-2" style="width: 30px; height: 30px" />
|
||||
</a>
|
||||
|
||||
<h4 class="mb-0">
|
||||
<a href="/users/{{ .User.ID }}" class="text-body-secondary text-decoration-none">
|
||||
{{ .User.Name }}
|
||||
<a href="/users/{{ .User.ID }}/novels" class="text-decoration-none">
|
||||
<img src="{{ .User.Avatar }}" alt="{{ .User.Name }}" class="rounded-circle me-2" style="width: 30px; height: 30px" />
|
||||
</a>
|
||||
</h4>
|
||||
|
||||
<h4 class="mb-0">
|
||||
<a href="/users/{{ .User.ID }}" class="text-body-secondary text-decoration-none">
|
||||
{{ .User.Name }}
|
||||
</a>
|
||||
</h4>
|
||||
</div>
|
||||
|
||||
<!-- Word count and reading time -->
|
||||
<p class="text-muted small mb-3">
|
||||
<p class="small text-body-secondary">
|
||||
<span>{{ .Novel.WordCount }} word(s)</span> · <span>{{ floor: .Novel.ReadingTime / 60 }} mins</span>
|
||||
</p>
|
||||
|
||||
@@ -57,7 +55,7 @@
|
||||
</div>
|
||||
|
||||
<!-- Description -->
|
||||
<p class="mb-3">{{ raw: .Novel.Description }}</p>
|
||||
<p>{{ raw: .Novel.Description }}</p>
|
||||
|
||||
<!-- Tags -->
|
||||
<div class="d-flex flex-wrap align-items-center mb-2">
|
||||
@@ -67,7 +65,7 @@
|
||||
{{- range .Novel.Tags.Tags }}
|
||||
{* NOTE: early block to catch the R-18 tag *}
|
||||
{{- if isEmphasize(.Name) }}
|
||||
<span class="badge bg-danger me-2 mb-2">{{ . }}</span>
|
||||
<span class="badge bg-danger me-2 mb-2">{{ .Name }}</span>
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
{{- if .Novel.IsOriginal }}
|
||||
@@ -90,20 +88,16 @@
|
||||
<!-- Metadata -->
|
||||
<div class="d-flex flex-wrap text-body-secondary small me-2">
|
||||
<div class="me-3 mb-2 mb-lg-0">
|
||||
<i class="bi bi-eye me-1"></i>
|
||||
<span>{{- .Novel.Views }}</span>
|
||||
<i class="bi bi-eye me-2"></i>{{- .Novel.Views }}
|
||||
</div>
|
||||
<div class="me-3 mb-2 mb-lg-0">
|
||||
<i class="bi bi-heart-fill me-1"></i>
|
||||
<span>{{- .Novel.Bookmarks }}</span>
|
||||
<i class="bi bi-heart-fill me-2"></i>{{- .Novel.Bookmarks }}
|
||||
</div>
|
||||
<div class="me-3 mb-2 mb-lg-0">
|
||||
<i class="bi bi-hand-thumbs-up-fill me-1"></i>
|
||||
<span>{{- .Novel.Likes }}</span>
|
||||
<i class="bi bi-hand-thumbs-up-fill me-2"></i>{{- .Novel.Likes }}
|
||||
</div>
|
||||
<div>
|
||||
<i class="bi bi-calendar me-1"></i>
|
||||
<span>{{- parseTime: .Novel.CreateDate }}</span>
|
||||
<i class="bi bi-calendar me-2"></i>{{- parseTime: .Novel.CreateDate }}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
@@ -16,45 +16,67 @@
|
||||
<!-- Title -->
|
||||
<h1 class="mb-2">{{ .NovelSeries.Title }}</h1>
|
||||
|
||||
<!-- Description -->
|
||||
<p class="mb-3">{{ raw: parsePixivRedirect(.NovelSeries.Caption) }}</p>
|
||||
|
||||
<!-- Metadata -->
|
||||
<div class="d-flex flex-wrap text-body-secondary small mb-3">
|
||||
<div class="me-3 mb-2">
|
||||
<i class="bi bi-book me-1"></i>
|
||||
<span>{{ .NovelSeries.Total }} Episode(s)</span>
|
||||
</div>
|
||||
<div class="me-3 mb-2">
|
||||
<i class="bi bi-calendar me-1"></i>
|
||||
<span>Updated on {{parseTime: .NovelSeries.UpdateDate }}</span>
|
||||
</div>
|
||||
<div class="me-3 mb-2">
|
||||
<i class="bi bi-fonts me-1"></i>
|
||||
<span>{{ .NovelSeries.PublishedTotalCharacterCount }} character(s)</span>
|
||||
</div>
|
||||
<div class="mb-2">
|
||||
<i class="bi bi-clock me-1"></i>
|
||||
<span>{{ floor: .NovelSeries.PublishedReadingTime / 60 }} mins</span>
|
||||
</div>
|
||||
<!-- Author -->
|
||||
<div class="d-flex align-items-center mb-2">
|
||||
<a href="/users/{{ .User.ID }}/novels" class="text-decoration-none">
|
||||
<img src="{{ .User.Avatar }}" alt="{{ .User.Name }}" class="rounded-circle me-2" style="width: 30px; height: 30px" />
|
||||
</a>
|
||||
<h4 class="mb-0">
|
||||
<a href="/users/{{ .User.ID }}" class="text-body-secondary text-decoration-none">
|
||||
{{ .User.Name }}
|
||||
</a>
|
||||
</h4>
|
||||
</div>
|
||||
|
||||
<!-- Word count and reading time -->
|
||||
<p class="small text-body-secondary">
|
||||
<span>{{ .NovelSeries.PublishedTotalCharacterCount }} character(s)</span> · <span>{{ floor: .NovelSeries.PublishedReadingTime / 60 }} mins</span>
|
||||
</p>
|
||||
|
||||
<!-- View Pixiv original button -->
|
||||
<div class="d-flex">
|
||||
<a href="https://pixiv.net/novel/series/{{ .NovelSeries.ID }}" class="custom-btn-secondary btn-sm mb-3">
|
||||
<i class="bi bi-box-arrow-up-right me-2"></i>View on pixiv.net
|
||||
</a>
|
||||
</div>
|
||||
|
||||
<!-- Description -->
|
||||
<p>{{ raw: parsePixivRedirect(.NovelSeries.Caption) }}</p>
|
||||
|
||||
<!-- Tags -->
|
||||
<div class="d-flex flex-wrap align-items-center mb-3">
|
||||
{{- if .NovelSeries.XRestrict != 0 }}
|
||||
<span class="badge bg-danger me-2 mb-2">
|
||||
{{ if .NovelSeries.XRestrict == 1 }} R-18 {{ else }} R-18G {{ end }}
|
||||
</span>
|
||||
{{- end }}
|
||||
{{- if .NovelSeries.AiType == 2 }}
|
||||
<span class="badge bg-warning text-dark me-2 mb-2">AI-generated</span>
|
||||
{{- end }}
|
||||
{{- if .NovelSeries.GenreID != "0" }}
|
||||
<span class="badge bg-secondary me-2 mb-2">{{ novelGenre: .NovelSeries.GenreID }}</span>
|
||||
{{- if .NovelSeries.XRestrict != 0 }}
|
||||
{* NOTE: different logic than usual due to isEmphasize not existing *}
|
||||
<span class="badge bg-danger me-2 mb-2">{{ if .NovelSeries.XRestrict == 1 }} R-18 {{ else }} R-18G {{ end }}</span>
|
||||
{{- end }}
|
||||
{{- if .NovelSeries.IsOriginal }}
|
||||
<span class="badge bg-primary me-2 mb-2">Original</span>
|
||||
{{- end }}
|
||||
{{- if .NovelSeries.GenreID != "0" }}
|
||||
<span class="badge bg-secondary me-2 mb-2">{{ novelGenre: .NovelSeries.GenreID }}</span>
|
||||
{{- end }}
|
||||
{{- range .NovelSeries.Tags }}
|
||||
{{- if isEmphasize(.) }}
|
||||
{* Intentionally empty to not render anything to avoid duplication *}
|
||||
{{- else }}
|
||||
<span class="badge fw-normal text-muted me-2 mb-2 p-0 text-wrap text-break text-start">
|
||||
<a href="/tags/{{ escapeString(.) }}" class="text-decoration-none text-wrap text-break">#{{ . }}</a>
|
||||
</span>
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
</div>
|
||||
|
||||
<!-- Metadata -->
|
||||
<div class="d-flex flex-wrap text-body-secondary small mb-3">
|
||||
<div class="me-3 mb-2 mb-lg-0">
|
||||
<i class="bi bi-book me-2"></i>{{ .NovelSeries.Total }} episode(s)
|
||||
</div>
|
||||
<div class="me-3 mb-2 mb-lg-0">
|
||||
<i class="bi bi-calendar me-2"></i>Updated on {{parseTime: .NovelSeries.UpdateDate }}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Read first episode button -->
|
||||
@@ -69,27 +91,11 @@
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="col-12 col-lg-9">
|
||||
<!-- Author information -->
|
||||
<div class="custom-card bg-black mb-4">
|
||||
<div class="card-header border-0 rounded-5 bg-charcoal-surface1 py-3 px-4">
|
||||
<div class="d-flex align-items-center">
|
||||
<a href="/users/{{ .User.ID }}/novels">
|
||||
<img src="{{ .User.Avatar }}" alt="{{ .User.Name }}" class="rounded-circle object-fit-cover me-3" style="width: 48px; height: 48px;">
|
||||
</a>
|
||||
<a href="/users/{{ .User.ID }}/novels" class="text-body">
|
||||
<h2 class="m-0">{{ .User.Name }}</h2>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="col-12 col-lg-9">
|
||||
<h2 class="mb-4">{{ len(.NovelSeriesContents) }} works in this series</h2>
|
||||
<div class="col-12 mt-5">
|
||||
<h2>{{ len(.NovelSeriesContents) }} works in this series</h2>
|
||||
<div class="row row-cols-1 row-cols-lg-2 g-4">
|
||||
{{- range .NovelSeriesContents }}
|
||||
<div class="col">
|
||||
<div class="col mt-1">
|
||||
<div class="custom-novel-card bg-black p-3 py-4 thumbnail-hover-dark">
|
||||
{{- include "fragments/novelseriescontents-tn" . }}
|
||||
</div>
|
||||
|
||||
Reference in New Issue
Block a user