fix all templates to make test pass

This commit is contained in:
iacore
2024-08-24 10:15:23 +00:00
parent 187edad0a3
commit e7e5ab6c00
23 changed files with 227 additions and 214 deletions
+7 -7
View File
@@ -1,5 +1,5 @@
{{extends "layout/default.jet.html"}}
{{block body()}}
{{ extends "layout/default" }}
{{ block body() }}
<div class="container">
<h1>About PixivFE</h1>
<p>PixivFE is a Pixiv frontend. It lets you enjoy art on Pixiv without needless interruption.</p>
@@ -7,22 +7,22 @@
<h2>Server information</h2>
<ul>
<li>
<b>Version:</b> {{ Version }}<br />PixivFE's version this server is
<b>Version:</b> {{ .Version }}<br />PixivFE's version this server is
running
</li>
<li>
<b>Started PixivFE (UTC)</b>: {{ Time }} <br />The date when PixivFE
<b>Started PixivFE (UTC)</b>: {{ .Time }} <br />The date when PixivFE
started on this server
</li>
<li>
<b>Default image proxy server</b>: {{ ImageProxy }}<br />The default image
<b>Default image proxy server</b>: {{ .ImageProxy }}<br />The default image
proxy server that was set on this server, used to proxy images from
i.pximg.net
</li>
<li>
<b>Accept-Language header</b>: {{ AcceptLanguage }}<br />The value of the
<b>Accept-Language header</b>: {{ .AcceptLanguage }}<br />The value of the
Accept-Language header this server uses to request to Pixiv's APIs.
</li>
</ul>
</div>
{{end}}
{{ end }}
+3 -3
View File
@@ -1,5 +1,5 @@
{{extends "layout/default.jet.html"}}
{{block body()}}
{{ extends "layout/default" }}
{{ block body() }}
<div class="container illust" id="checkpoint">
{{ include "components/artwork" .Illust }}
<div class="illust-other-works">
@@ -54,4 +54,4 @@
{{ include "components/small-tn" .Illust.RelatedWorks }}
</div>
</div>
{{end}}
{{ end }}
+5 -4
View File
@@ -1,7 +1,8 @@
{{extends "layout/default.jet.html"}}
{{block body()}}
{{ range Artworks }}
{{ extends "layout/default" }}
{{ block body() }}
{{ range .Artworks }}
<div class="container illust">
{{ include "components/artwork" . }}
</div>
{{ end }}{{end}}
{{ end }}
{{ end }}
+9 -9
View File
@@ -1,23 +1,23 @@
{{extends "layout/default.jet.html"}}
{{block body()}}
{{ extends "layout/default" }}
{{ block body() }}
<div class="container">
<h1>Discover artworks</h1>
<div class="switcher">
<div class="switch-title">Type</div>
<a href="/discovery" class="switch-button">Artworks</a>
<a href="/discovery/novel" class="switch-button">Novels</a>
<a href="/discovery" class="switch-button">.Artworks</a>
<a href="/discovery/novel" class="switch-button">.Novels</a>
</div>
<div class="switcher">
<div class="switch-title">Filter</div>
<a href='{{replaceQuery(Queries, "mode", "all")}}' class="switch-button">All</a>
<a href='{{replaceQuery(Queries, "mode", "safe")}}' class="switch-button">Safe</a>
<a href='{{replaceQuery(Queries, "mode", "r18")}}' class="switch-button">R-18</a>
<a href='{{replaceQuery(.Queries, "mode", "all")}}' class="switch-button">All</a>
<a href='{{replaceQuery(.Queries, "mode", "safe")}}' class="switch-button">Safe</a>
<a href='{{replaceQuery(.Queries, "mode", "r18")}}' class="switch-button">R-18</a>
</div>
<div class="artwork-container">
{{ include "components/small-tn" Artworks }}
{{ include "components/small-tn" .Artworks }}
</div>
<div class="pagination">
<a href="" class="pagination-button">Reload</a>
</div>
</div>
{{end}}
{{ end }}
+4 -4
View File
@@ -1,13 +1,13 @@
{{extends "layout/default.jet.html"}}
{{block body()}}
{{ extends "layout/default" }}
{{ block body() }}
<div class="container error">
<h1>An error occured</h1>
<p>This is what you got instead ¯\_(ツ)_/¯</p>
<br />
{{ Error }}
{{ .Error }}
<hr />
<p>If you think this error should not occur, you can help
us by submitting an issue to the <a href="https://codeberg.org/VnPower/PixivFE/issues/new">upstream repository</a>!
</p>
</div>
{{end}}
{{ end }}
+7 -7
View File
@@ -1,5 +1,5 @@
{{extends "layout/default.jet.html"}}
{{block body()}}
{{ extends "layout/default" }}
{{ block body() }}
<div class="container">
<h1>Newest works from people you follow</h1>
<div class="switcher">
@@ -8,12 +8,12 @@
<a href="/following_works?mode=safe&page=1" class="switch-button">Safe</a>
<a href="/following_works?mode=r18&page=1" class="switch-button">R-18</a>
</div>
<div class="artwork-container">{{ include "components/small-tn" Artworks }}</div>
<div class="artwork-container">{{ include "components/small-tn" .Artworks }}</div>
<div class="pagination">
{{ url := "/self/following_works" + "?mode=" + Mode + "&page=" }}
<small>Page {{ CurPage }}</small>
{{ url := "/self/following_works" + "?mode=" + .Mode + "&page=" }}
<small>Page {{ .CurPage }}</small>
<br />
{{ raw: createPaginator(url, "#checkpoint", Page, -1) }}
{{ raw: createPaginator(url, "#checkpoint", .Page, -1) }}
</div>
</div>
{{end}}
{{ end }}
+3 -3
View File
@@ -1,5 +1,5 @@
{{extends "layout/default.jet.html"}}
{{block body()}}
{{ extends "layout/default" }}
{{ block body() }}
<div class="container">
{{ if !.LoggedIn }}
@@ -41,4 +41,4 @@
{{ end }}
</div>
{{end}}
{{ end }}
+4 -4
View File
@@ -1,5 +1,5 @@
{{extends "layout/default.jet.html"}}
{{block body()}}
{{ extends "layout/default" }}
{{ block body() }}
<div class="container">
<h1>Newest works from all users</h1>
<div class="switcher">
@@ -7,6 +7,6 @@
<a href="/newest" class="switch-button">Safe</a>
<a href="/newest?mode=r18" class="switch-button">R-18</a>
</div>
<div class="artwork-container">{{ include "components/small-tn" Items }}</div>
<div class="artwork-container">{{ include "components/small-tn" .Items }}</div>
</div>
{{end}}
{{ end }}
+23 -23
View File
@@ -1,35 +1,35 @@
{{extends "layout/default.jet.html"}}
{{block body()}}
{{ extends "layout/default" }}
{{ block body() }}
<div class="container novel" id="checkpoint">
<div class="novel-detail">
<div class="novel-cover">
<a href="{{ Novel.CoverURL }}">
<img src="{{ Novel.CoverURL }}" alt="{{ Novel.Title }}" />
<a href="{{ .Novel.CoverURL }}">
<img src="{{ .Novel.CoverURL }}" alt="{{ .Novel.Title }}" />
</a>
</div>
<div class="novel-metadata">
<div class="novel-title">{{ Novel.Title }}</div>
<small><span>{{ Novel.WordCount }} word(s)</span>&nbsp;<span>{{ floor: Novel.ReadingTime / 60 }}
<div class="novel-title">{{ .Novel.Title }}</div>
<small><span>{{ .Novel.WordCount }} word(s)</span>&nbsp;<span>{{ floor: .Novel.ReadingTime / 60 }}
min</span></small>
<p class="novel-description">{{ raw: Novel.Description }}</p>
<p class="novel-description">{{ raw: .Novel.Description }}</p>
<div class="illust-tags">
{{ if Novel.AiType == 2 }}
{{ if .Novel.AiType == 2 }}
<span class="illust-tag">
<span class="illust-tag-name" id="highlight">AI-generated</span>
</span>
{{ end }}
{{ if Novel.IsOriginal }}
{{ if .Novel.IsOriginal }}
<span class="illust-tag">
<span class="illust-tag-name">Original</span>
</span>
{{ end }}
{{ if Novel.Genre != "0" }}
{{ if .Novel.Genre != "0" }}
<span class="illust-tag">
<span class="illust-tag-name">{{ novelGenre: Novel.Genre }}</span>
<span class="illust-tag-name">{{ novelGenre: .Novel.Genre }}</span>
</span>
{{ end }}
{{ range Novel.Tags.Tags }} {{ if isEmphasize(.Name) }}
{{ range .Novel.Tags.Tags }} {{ if isEmphasize(.Name) }}
<span class="illust-tag">
<span class="illust-tag-name" id="highlight">{{ .Name }}</span>
</span>
@@ -43,19 +43,19 @@
<div class="illust-tags">
<span class="illust-tag-attr">
<img src="/img/eye.png" alt="Views" />
{{ Novel.Views }}
{{ .Novel.Views }}
</span>
<span class="illust-tag-attr">
<img src="/img/heart-solid.png" alt="Bookmarks" />
{{ Novel.Bookmarks }}
{{ .Novel.Bookmarks }}
</span>
<span class="illust-tag-attr">
<img src="/img/like.png" alt="Likes" />
{{ Novel.Likes }}
{{ .Novel.Likes }}
</span>
<span class="illust-tag-attr">
<img src="/img/calendar.png" alt="Date" />
{{ parseTime: Novel.CreateDate }}
{{ parseTime: .Novel.CreateDate }}
</span>
</div>
</div>
@@ -108,25 +108,25 @@
</div>
</div>
<!-- ----------- -->
<div class="novel-content" id="content" data-font="{{ FontType }}" data-lang="{{ Language }}"
data-view="{{ ViewMode }}">
<div class="novel-content" id="content" data-font="{{ .FontType }}" data-lang="{{ .Language }}"
data-view="{{ .ViewMode }}">
<div class="novel-content-text">
{{ raw: renderNovel(Novel.Content) }}
{{ raw: renderNovel(.Novel.Content) }}
</div>
</div>
<div class="novel-attr">
<a href="/users/{{ User.ID }}"><img src="{{ User.Avatar }}" alt="{{ User.Name }}" class="novel-avatar" />
<a href="/users/{{ .User.ID }}"><img src="{{ .User.Avatar }}" alt="{{ .User.Name }}" class="novel-avatar" />
</a>
<div class="attr-wrap">
<div class="novel-title">
<a href="/users/{{ User.ID }}">{{ User.Name }}</a>
<a href="/users/{{ .User.ID }}">{{ .User.Name }}</a>
</div>
</div>
</div>
<div class="novel-container">
{{ range NovelRelated }}
{{ range .NovelRelated }}
{{ include "components/novel-tn" . }}
{{ end }}
</div>
</div>
{{end}}
{{ end }}
+4 -4
View File
@@ -1,5 +1,5 @@
{{extends "layout/default.jet.html"}}
{{block body()}}
{{ extends "layout/default" }}
{{ block body() }}
<div class="container">
<h1>Discover novels</h1>
<div class="switcher">
@@ -15,7 +15,7 @@
<a href="{{url}}r18" class="switch-button">R-18</a>
</div>
<div class="novel-container">
{{ range Novels }}
{{ range .Novels }}
{{ include "components/novel-tn" . }}
{{ end }}
</div>
@@ -23,4 +23,4 @@
<a href="" class="pagination-button">Reload</a>
</div>
</div>
{{end}}
{{ end }}
+6 -6
View File
@@ -1,12 +1,12 @@
{{extends "layout/default.jet.html"}}
{{block body()}}
{{ extends "layout/default" }}
{{ block body() }}
<div class="container illust">
<h2>{{Article.Title}}</h2>
{{ range _, desc := Article.Description }}
<h2>{{.Article.Title}}</h2>
{{ range _, desc := .Article.Description }}
<p>{{desc}}</p>
{{ end }}
{{ range _, item := Article.Items }}
{{ range _, item := .Article.Items }}
<div class="illust-images">
<div class="illust-attr">
@@ -27,4 +27,4 @@
</div>
{{ end }}
</div>
{{end}}
{{ end }}
+4 -4
View File
@@ -1,8 +1,8 @@
{{extends "layout/default.jet.html"}}
{{block body()}}
{{ extends "layout/default" }}
{{ block body() }}
<div class="container">
<div class="vision-container">
{{ range _, article := Data }}
{{ range _, article := .Data }}
<div class="vision-preview vision-preview-large">
<div class="vision-thumbnail">
<img src="{{article.Thumbnail}}" alt="{{article.Title}}" />
@@ -26,4 +26,4 @@
{{ end }}
</div>
</div>
{{end}}
{{ end }}
+18 -18
View File
@@ -1,20 +1,20 @@
{{extends "layout/default.jet.html"}}
{{block body()}}
{{ extends "layout/default" }}
{{ import "components/switcher" }}
{{ block body() }}
<div class="container">
<h1>{{ Title }}</h1>
<h1>{{ .Title }}</h1>
<div class="switcher">
{{ Mode := isset(Queries.mode) ? Queries.mode : "daily" }}
{{ Content := isset(Queries.content) ? Queries.content : "all" }}
{{ Mode := isset(.Queries.mode) ? .Queries.mode : "daily" }}
{{ Content := isset(.Queries.content) ? .Queries.content : "all" }}
{{ url := "" }}
{{ if Mode == "original" || Mode == "male" || Mode == "female" || Mode == ""}}
{{ url = "/ranking?date=" + Data.CurrentDate +
{{ url = "/ranking?date=" + .Data.CurrentDate +
"&page=1&content=" }}
{{ else }}
{{ url = "/ranking?mode=" + Mode + "&date=" + Data.CurrentDate + "&page=1&content=" }}
{{ url = "/ranking?mode=" + Mode + "&date=" + .Data.CurrentDate + "&page=1&content=" }}
{{ end }}
<div class="switch-title">Content</div>
{{ path := slice("all", "illust", "manga", "ugoira") }}
@@ -24,7 +24,7 @@
<br />
<div class="switcher">
{{ url := "/ranking?content=" + Content +"&date=" + Data.CurrentDate
{{ url := "/ranking?content=" + Content +"&date=" + .Data.CurrentDate
+ "&page=1&mode=" }}
<div class="switch-title">Modes</div>
@@ -56,13 +56,13 @@
<div class="switcher">
{{ url := "/ranking?content=" + Content + "&mode=" + Mode +
"&page=1" }}
<div class="switch-title">Date (current: {{ Data.CurrentDate }})</div>
{{ if Data.PrevDate != "false" }}
<a href="{{ url }}&date={{Data.PrevDate}}" class="switch-button"
<div class="switch-title">Date (current: {{ .Data.CurrentDate }})</div>
{{ if .Data.PrevDate != "false" }}
<a href="{{ url }}&date={{.Data.PrevDate}}" class="switch-button"
>Yesterday</a
>
{{ end }} {{ if Data.NextDate != "false" }}
<a href="{{ url }}&date={{Data.NextDate}}" class="switch-button"
{{ end }} {{ if .Data.NextDate != "false" }}
<a href="{{ url }}&date={{.Data.NextDate}}" class="switch-button"
>Next day</a
>
{{ end }}
@@ -73,15 +73,15 @@
<br />
<div class="artwork-container">
{{ include "components/ranking-tn" Data.Contents }}
{{ include "components/ranking-tn" .Data.Contents }}
</div>
<div class="pagination">
{{ url := "/ranking?content=" + Content +"&date=" + Data.CurrentDate
{{ url := "/ranking?content=" + Content +"&date=" + .Data.CurrentDate
+ "&mode=" + Mode + "&page=" }}
<small>Page {{ Page }}/{{ PageLimit }}</small>
<small>Page {{ .Page }}/{{ .PageLimit }}</small>
<br />
{{ raw: createPaginator(url, "#checkpoint", Page, PageLimit) }}
{{ raw: createPaginator(url, "#checkpoint", .Page, .PageLimit) }}
</div>
</div>
{{end}}
{{ end }}
+11 -11
View File
@@ -1,9 +1,9 @@
{{extends "layout/default.jet.html"}}
{{block body()}}
{{ extends "layout/default" }}
{{ block body() }}
<div class="container">
<h1>Ranking calendar ({{ ThisMonth.MonthLiteral }} {{ Year }})</h1>
<h1>Ranking calendar ({{ .ThisMonth.MonthLiteral }} {{ .Year }})</h1>
<div class="switcher">
{{ url := "/rankingCalendar?date=" + ThisMonth.Link + "&mode=" }}
{{ url := "/rankingCalendar?date=" + .ThisMonth.Link + "&mode=" }}
<span class="switch-title">Modes</span>
<a href="{{ url }}daily" class="switch-button">Daily</a>
<a href="{{ url }}weekly" class="switch-button">Weekly</a>
@@ -24,12 +24,12 @@
<div>
<form action="/rankingCalendar" method="post">
<input type="hidden" name="mode" value="{{ Mode }}" />
<input type="hidden" name="mode" value="{{ .Mode }}" />
<label for="date">
Date picker (mm/dd/yyyy):
</label>
<span>
<input type="date" name="date" min="2007-09-01" max="{{Year}}-{{ ThisMonth.MonthPadded }}-01" value="{{Year}}-{{ ThisMonth.MonthPadded }}-01"/>
<input type="date" name="date" min="2007-09-01" max="{{.Year}}-{{ .ThisMonth.MonthPadded }}-01" value="{{.Year}}-{{ .ThisMonth.MonthPadded }}-01"/>
</span>
<span>
<input type="submit" value="Go" />
@@ -49,13 +49,13 @@
<div>Sat</div>
</div>
<div class="calendar-board">
{{ raw: Render }}
{{ raw: .Render }}
</div>
</div>
<div class="pagination">
{{ url := "/rankingCalendar?mode=" + Mode + "&date=" }}
<a href="{{ url }}{{ MonthBefore.Link }}" class="pagination-button ">Last month</a>
<a href="{{ url }}{{ MonthAfter.Link }}" class="pagination-button ">Next month</a>
{{ url := "/rankingCalendar?mode=" + .Mode + "&date=" }}
<a href="{{ url }}{{ .MonthBefore.Link }}" class="pagination-button ">Last month</a>
<a href="{{ url }}{{ .MonthAfter.Link }}" class="pagination-button ">Next month</a>
</div>
</div>
{{end}}
{{ end }}
+5 -5
View File
@@ -1,5 +1,5 @@
{{extends "layout/default.jet.html"}}
{{block body()}}
{{ extends "layout/default" }}
{{ block body() }}
<div class="container" data-hx-boost="false">
<h1>Settings</h1>
<p>
@@ -58,7 +58,7 @@
<input type="radio" name="image-proxy" required="true" value="" />
No (use built-in proxy)
</label>
{{ range WorkingProxyList }}
{{ range .WorkingProxyList }}
<label>
<input type="radio" name="image-proxy" required="true" value="{{.}}" />
{{.}}
@@ -66,7 +66,7 @@
{{ end }}
<details>
<summary>See all built-in proxies</summary>
{{ range ProxyList }}
{{ range .ProxyList }}
<label>
<input type="radio" name="image-proxy" required="true" value="{{.}}" />
{{.}}
@@ -187,4 +187,4 @@
<input class="critical" type="submit" value="Reset all cookies/preferences" />
</form>
</div>
{{end}}
{{ end }}
+37 -37
View File
@@ -1,28 +1,28 @@
{{extends "layout/default.jet.html"}}
{{block body()}}
{{ extends "layout/default" }}
{{ import "components/switcher" }}
{{ block body() }}
<div class="container">
<div class="tag-header">
{{ if Tag.Metadata.ID }}
<a href="/artworks/{{ Tag.Metadata.ID }}">
<img class="tag-thumbnail" src="{{ Tag.Metadata.Image }}" alt="{{ Tag.Name }}" />
{{ if .Tag.Metadata.ID }}
<a href="/artworks/{{ .Tag.Metadata.ID }}">
<img class="tag-thumbnail" src="{{ .Tag.Metadata.Image }}" alt="{{ .Tag.Name }}" />
</a>
{{ end }}
<div class="tag-details">
<b class="main-tag">#{{ Tag.Name }}</b>
<span class="translated-tag">{{ Tag.Metadata.Name }}</span>
<b class="main-tag">#{{ .Tag.Name }}</b>
<span class="translated-tag">{{ .Tag.Metadata.Name }}</span>
<br />
<br />
<span><b>{{ Data.Artworks.Total }}</b> works</span>
<span><b>{{ .Data.Artworks.Total }}</b> works</span>
<p class="tag-description">{{ Tag.Metadata.Detail }}</p>
<p class="tag-description">{{ .Tag.Metadata.Detail }}</p>
</div>
</div>
<div class="artwork-container-scroll">
{{ range Data.RelatedTags }}
{{ range .Data.RelatedTags }}
<a href="/tags/{{ . }}">
<div class="tag-container">
<div class="main">#{{ . }}</div>
@@ -30,42 +30,42 @@
</a>
{{ end }}
</div>
{{ Category := isset(Queries.category) ? Queries.category : "artworks" }}
{{ Order := isset(Queries.order) ? Queries.order : "date_d" }}
{{ Mode := isset(Queries.mode) ? Queries.mode : "safe" }}
{{ Ratio := isset(Queries.ratio) ? Queries.ratio : "" }}
{{ SearchMode := isset(Queries.smode) ? Queries.smode : "" }}
{{ Category := isset(.Queries.category) ? .Queries.category : "artworks" }}
{{ Order := isset(.Queries.order) ? .Queries.order : "date_d" }}
{{ Mode := isset(.Queries.mode) ? .Queries.mode : "safe" }}
{{ Ratio := isset(.Queries.ratio) ? .Queries.ratio : "" }}
{{ SearchMode := isset(.Queries.smode) ? .Queries.smode : "" }}
<div class="switcher">
<div class="switch-title">Category</div>
{{ URL := unfinishedQuery(QueriesC, "category") }}
{{ URL := unfinishedQuery(.QueriesC, "category") }}
{{ path := slice("artworks", "illustrations", "manga")}}
{{ name := slice("Artworks", "Illustrations", "Manga")}}
{{ yield Switcher(baseURL=URL, paths=path, names=name, currentPath=Category) }}
</div>
<div class="switcher">
<div class="switch-title">Order</div>
{{ URL := unfinishedQuery(QueriesC, "order") }}
{{ URL := unfinishedQuery(.QueriesC, "order") }}
{{ path := slice("date_d", "date")}}
{{ name := slice("Newest", "Oldest")}}
{{ yield Switcher(baseURL=URL, paths=path, names=name, currentPath=Order) }}
</div>
<div class="switcher">
<div class="switch-title">Filter</div>
{{ URL := unfinishedQuery(QueriesC, "mode") }}
{{ URL := unfinishedQuery(.QueriesC, "mode") }}
{{ path := slice("all", "safe", "r18")}}
{{ name := slice("All", "Safe", "R-18")}}
{{ yield Switcher(baseURL=URL, paths=path, names=name, currentPath=Mode) }}
</div>
<div class="switcher">
<div class="switch-title">Ratio</div>
{{ URL := unfinishedQuery(QueriesC, "ratio") }}
{{ URL := unfinishedQuery(.QueriesC, "ratio") }}
{{ path := slice("", "-0.5", "0", "0.5")}}
{{ name := slice("All", "Portrait", "Square", "Landscape")}}
{{ yield Switcher(baseURL=URL, paths=path, names=name, currentPath=Ratio) }}
</div>
<div class="switcher">
<div class="switch-title">Search mode</div>
{{ URL := unfinishedQuery(QueriesC, "smode") }}
{{ URL := unfinishedQuery(.QueriesC, "smode") }}
{{ path := slice("", "s_tag_full", "s_tag", "s_tc")}}
{{ name := slice("None", "Exact (tags)", "Partial (tags)", "Title/Caption")}}
{{ yield Switcher(baseURL=URL, paths=path, names=name, currentPath=SearchMode) }}
@@ -74,48 +74,48 @@
<summary>
<h2>Advanced settings</h2>
</summary>
{{ URL := unfinishedQuery(QueriesC, "") }}
<form action="{{ URL }}&name={{ QueriesC.Query.Name }}" method="post">
{{ URL := unfinishedQuery(.QueriesC, "") }}
<form action="{{ URL }}&name={{ .QueriesC.Query["Name"] }}" method="post">
<label for="wlt">Minimum image width</label>
<input type="text" name="wlt" value="{{ QueriesC.Query.Wlt }}" />
<input type="text" name="wlt" value="{{ .QueriesC.Query["Wlt"] }}" />
<label for="wgt">Maximum image width</label>
<input type="text" name="wgt" value="{{ QueriesC.Query.Wgt }}" />
<input type="text" name="wgt" value="{{ .QueriesC.Query["Wgt"] }}" />
<label for="hlt">Minimum image height</label>
<input type="text" name="hlt" value="{{ QueriesC.Query.Hlt }}" />
<input type="text" name="hlt" value="{{ .QueriesC.Query["Hlt"] }}" />
<label for="hgt">Maximum image height</label>
<input type="text" name="hgt" value="{{ QueriesC.Query.Hgt }}" />
<input type="text" name="hgt" value="{{ .QueriesC.Query["Hgt"] }}" />
<label for="scd">Posted after (format: yyyy-mm-dd)</label>
<input type="text" name="scd" value="{{ QueriesC.Query.Scd }}" />
<input type="text" name="scd" value="{{ .QueriesC.Query["Scd"] }}" />
<label for="ecd">Posted before (format: yyyy-mm-dd)</label>
<input type="text" name="ecd" value="{{ QueriesC.Query.Ecd }}" />
<input type="text" name="ecd" value="{{ .QueriesC.Query["Ecd"] }}" />
<label for="tool">Tool</label>
<input type="text" name="tool" value="{{ QueriesC.Query.Tool }}" />
<input type="text" name="tool" value="{{ .QueriesC.Query["Tool"] }}" />
<input type="submit" value="Set" />
</form>
</details>
{{ if Data.Popular.Recent }}
{{ if .Data.Popular.Recent }}
<h2>Popular artworks</h2>
<h3>Recent</h3>
<div class="artwork-container-scroll">
{{ include "components/small-tn" Data.Popular.Recent }}
{{ include "components/small-tn" .Data.Popular.Recent }}
</div>
<h3>All Time</h3>
<div class="artwork-container-scroll">
{{ include "components/small-tn" Data.Popular.Permanent }}
{{ include "components/small-tn" .Data.Popular.Permanent }}
</div>
{{ end }}
{* Switchers here *}
<br />
<h2>Works</h2>
<div class="artwork-container">
{{ include "components/small-tn" Data.Artworks.Artworks }}
{{ include "components/small-tn" .Data.Artworks.Artworks }}
</div>
<div class="pagination">
{{ url := unfinishedQuery(QueriesC, "page") }}
<small>Page {{ Page }}</small>
{{ url := unfinishedQuery(.QueriesC, "page") }}
<small>Page {{ .Page }}</small>
<br />
{{ raw: createPaginator(url, "#checkpoint", Page, -1) }}
{{ raw: createPaginator(url, "#checkpoint", .Page, -1) }}
</div>
</div>
{{end}}
{{ end }}
+13 -13
View File
@@ -1,5 +1,5 @@
{{extends "layout/default.jet.html"}}
{{block body()}}
{{ extends "layout/default" }}
{{ block body() }}
{{ if Token }}
<div class="switcher">
@@ -12,17 +12,17 @@
<a href="/self/following_works">See more</a>
</div>
<div class="artwork-container-scroll">
{{ include "components/small-tn" Artworks.Following }}
{{ include "components/small-tn" .Artworks.Following }}
</div>
<br />
<h2>Recently completed commissions</h2>
<div class="artwork-container">
{{ include "components/small-tn" Artworks.Commissions }}
{{ include "components/small-tn" .Artworks.Commissions }}
</div>
<br />
<h2>Recommended works</h2>
<div class="artwork-container">
{{ include "components/small-tn" Artworks.Recommended }}
{{ include "components/small-tn" .Artworks.Recommended }}
</div>
<br />
@@ -31,7 +31,7 @@
<a href="/ranking">See more</a>
</div>
<div class="artwork-container-scroll">
{{ range rank := Artworks.Rankings }}
{{ range rank := .Artworks.Rankings }}
<div class="artwork-large artwork">
<div class="artwork-additional">
<div class="artwork-position">{{ rank + 1 }}</div>
@@ -67,7 +67,7 @@
{* <h2>Pixivision</h2>
<div class="thumbnail-container">
{{ range Artworks.Pixivision }}
{{ range .Artworks.Pixivision }}
<a href="{{ .URL }}" class="spotlight-thumbnail">
<img
src="{{ .Thumbnail }}"
@@ -84,10 +84,10 @@
<h2>Works by recommended users</h2>
<div class="artwork-container">
{{ include "components/small-tn" Artworks.Users }}
{{ include "components/small-tn" .Artworks.Users }}
</div>
<br />
{{ range Artworks.RecommendByTags }}
{{ range .Artworks.RecommendByTags }}
<h2>Recommended illustrations tagged #{{.Name}}</h2>
<div class="artwork-container">
{{ include "components/small-tn" .Artworks }}
@@ -98,7 +98,7 @@
<p>Please check out the sidebar for more features. There used to be a small ranking container here...</p>
{* <h2>Newest works</h2>
<div class="artwork-container-scroll">
{{ include "components/small-tn" Artworks.Newest }}
{{ include "components/small-tn" .Artworks.Newest }}
</div>
{{ else }}
<p><a href="/login">Login</a> to access more features!</p>
@@ -112,7 +112,7 @@
<a href="/ranking">See more</a>
</div>
<div class="artwork-container-scroll">
{{ range rank := Artworks.Rankings }}
{{ range rank := .Artworks.Rankings }}
<div class="artwork-large artwork">
<div class="artwork-additional">
<div class="artwork-position">{{ rank + 1 }}</div>
@@ -148,7 +148,7 @@
{* <h2>Pixivision</h2>
<div class="thumbnail-container">
{{ range Artworks.Pixivision }}
{{ range .Artworks.Pixivision }}
<a href="{{ .URL }}" class="spotlight-thumbnail">
<img
src="{{ .Thumbnail }}"
@@ -164,4 +164,4 @@
<br /> *}
{{ end }}
{{end}}
{{ end }}
+3 -3
View File
@@ -1,8 +1,8 @@
{{extends "layout/default.jet.html"}}
{{block body()}}
{{ extends "layout/default" }}
{{ block body() }}
<div class="container error">
<h1>Unauthorized</h1>
<p>You need to <a href="/settings#login">log in</a> to use this feature.</p>
</div>
{{end}}
{{ end }}
+26 -26
View File
@@ -1,27 +1,27 @@
{{extends "layout/default.jet.html"}}
{{block body()}}
{{ if ! User.BackgroundImage }}
{{ extends "layout/default" }}
{{ block body() }}
{{ if ! .User.BackgroundImage }}
<div class="background-cover"></div>
{{ else }}
<div class="background-cover" id="hasbg">
<img src="{{ User.BackgroundImage }}" alt="{{ User.Name }}" />
<img src="{{ .User.BackgroundImage }}" alt="{{ .User.Name }}" />
</div>
{{ end }}
<div class="container user">
<div class="user-avatar">
<img src="{{User.Avatar}}" alt="Avatar Of User">
<img src="{{.User.Avatar}}" alt="Avatar Of User">
</div>
<div class="user-details">
<h1>{{ User.Name }}</h1>
<h1>{{ .User.Name }}</h1>
<div>
<a href="https://pixiv.net/u/{{ User.ID }}">pixiv.net/u/{{ User.ID }}</a>
<a href="https://pixiv.net/u/{{ .User.ID }}">pixiv.net/u/{{ .User.ID }}</a>
<br />
</div>
<small> {{ User.Following }} Following | {{ User.MyPixiv }} MyPixiv </small>
<small> {{ .User.Following }} Following | {{ .User.MyPixiv }} MyPixiv </small>
<div class="user-social">
{{ if User.Webpage }}
<span><a href="{{ User.Webpage }}"><img src="/img/globe.png" alt="Webpage" /></a></span>
{{ end }} {{ range index, item := User.Social }}
{{ if .User.Webpage }}
<span><a href="{{ .User.Webpage }}"><img src="/img/globe.png" alt="Webpage" /></a></span>
{{ end }} {{ range index, item := .User.Social }}
<span>
<a href="{{ item.url }}">
<img src="/img/{{ index }}.svg" alt="{{ index }}" />
@@ -29,11 +29,11 @@
</span>
{{ end }}
</div>
<p>{{ raw: parsePixivRedirect(User.Comment) }}</p>
<p>{{ raw: parsePixivRedirect(.User.Comment) }}</p>
</div>
<div>Frequently Used Tags</div>
<div class="tag-list">
{{ range User.FrequentTags }}
{{ range .User.FrequentTags }}
<a href="/tags/{{ .Name }}">
#{{ .Name }}
{* <div>
@@ -49,21 +49,21 @@
</div>
<div class="switcher">
<div class="switch-title">Category</div>
<a href="/users/{{ User.ID }}/#checkpoint" class="switch-button">All</a>
<a href="/users/{{ User.ID }}/illustrations#checkpoint" class="switch-button">Illustrations</a>
<a href="/users/{{ User.ID }}/manga#checkpoint" class="switch-button">Mangas</a>
<a href="/users/{{ User.ID }}/novels#checkpoint" class="switch-button">Novels</a>
<a href="/users/{{ User.ID }}/bookmarks#checkpoint" class="switch-button">Bookmarks</a>
<a href="/users/{{ .User.ID }}/#checkpoint" class="switch-button">All</a>
<a href="/users/{{ .User.ID }}/illustrations#checkpoint" class="switch-button">Illustrations</a>
<a href="/users/{{ .User.ID }}/manga#checkpoint" class="switch-button">Mangas</a>
<a href="/users/{{ .User.ID }}/novels#checkpoint" class="switch-button">Novels</a>
<a href="/users/{{ .User.ID }}/bookmarks#checkpoint" class="switch-button">Bookmarks</a>
</div>
<div>
{{ if Category != "novels" }}
{{ if .Category != "novels" }}
<div class="artwork-container-header">
<h2 id="checkpoint">Illustrations and Mangas</h2>
{{ combinedUrl := "/artworks-multi/" + joinArtworkIds(User.Artworks) }}
{{ combinedUrl := "/artworks-multi/" + joinArtworkIds(.User.Artworks) }}
<div class="artwork-actions"><a href="{{combinedUrl}}">View all art on this page</a></div>
</div>
<div class="artwork-container">
{{ include "components/small-tn" User.Artworks }}
{{ include "components/small-tn" .User.Artworks }}
</div>
{{ else }}
@@ -71,17 +71,17 @@
<h2 id="checkpoint">Novels</h2>
</div>
<div class="novel-container">
{{ range User.Novels }}
{{ range .User.Novels }}
{{ include "components/novel-tn" . }}
{{ end }}
</div>
{{ end }}
</div>
<div class="pagination">
{{ url := "/users/" + User.ID + "/" + Category + "?page="}}
<small>Page {{ Page }}/{{ PageLimit }}</small>
{{ url := "/users/" + .User.ID + "/" + .Category + "?page="}}
<small>Page {{ .Page }}/{{ .PageLimit }}</small>
<br />
{{ raw: createPaginator(url, "#checkpoint", Page, PageLimit) }}
{{ raw: createPaginator(url, "#checkpoint", .Page, .PageLimit) }}
</div>
</div>
{{end}}
{{ end }}
+15 -15
View File
@@ -1,26 +1,26 @@
{{extends "layout/default.jet.html"}}
{{block body()}}
{{ extends "layout/default" }}
{{ block body() }}
<?xml version="1.0" encoding="utf-8"?>{* <?xml-stylesheet href="/feed.xsl" type="text/xsl"?> *}
<feed xmlns="http://www.w3.org/2005/Atom">
<id>{{ BaseURL }}/users/{{ User.ID }}/{{ Category }}</id>
<link rel="alternate" href="{{ BaseURL }}/users/{{ User.ID }}/{{ Category }}"/>
<id>{{ BaseURL }}/users/{{ .User.ID }}/{{ .Category }}</id>
<link rel="alternate" href="{{ BaseURL }}/users/{{ .User.ID }}/{{ .Category }}"/>
<link rel="self" href="{{ PageURL }}"/>
<link rel="first" href="{{ BaseURL }}/users/{{ User.ID }}/{{ Category }}.atom.xml?page=1"/>
<link rel="last" href="{{ BaseURL }}/users/{{ User.ID }}/{{ Category }}.atom.xml?page={{ PageLimit }}"/>
{{ if Page - 1 >= 1 }}
<link rel="previous" href="{{ BaseURL }}/users/{{ User.ID }}/{{ Category }}.atom.xml?page={{ Page - 1 }}"/>
<link rel="first" href="{{ BaseURL }}/users/{{ .User.ID }}/{{ .Category }}.atom.xml?page=1"/>
<link rel="last" href="{{ BaseURL }}/users/{{ .User.ID }}/{{ .Category }}.atom.xml?page={{ .PageLimit }}"/>
{{ if .Page - 1 >= 1 }}
<link rel="previous" href="{{ BaseURL }}/users/{{ .User.ID }}/{{ .Category }}.atom.xml?page={{ .Page - 1 }}"/>
{{ end }}
{{ if Page + 1 <= PageLimit }}
<link rel="next" href="{{ BaseURL }}/users/{{ User.ID }}/{{ Category }}.atom.xml?page={{ Page + 1 }}"/>
{{ if .Page + 1 <= .PageLimit }}
<link rel="next" href="{{ BaseURL }}/users/{{ .User.ID }}/{{ .Category }}.atom.xml?page={{ .Page + 1 }}"/>
{{ end }}
<updated>{{ Updated }}</updated>
<title>{{ Title }}</title>
<updated>{{ .Updated }}</updated>
<title>{{ .Title }}</title>
<author>
<name>{{ User.Name }}</name>
<uri>{{ BaseURL }}/users/{{ User.ID }}/</uri>
<name>{{ .User.Name }}</name>
<uri>{{ BaseURL }}/users/{{ .User.ID }}/</uri>
</author>
{{ range User.Artworks }}
{{ range .User.Artworks }}
<entry>
<id>{{ BaseURL }}/artworks/{{ .ID }}/</id>
<link rel="alternate" href="{{ BaseURL }}/artworks/{{ .ID }}/"/>
+2 -2
View File
@@ -21,7 +21,7 @@ func IndexPage(c *fiber.Ctx) error {
return Render(c, Data_index{
Title: "Landing",
Data: *works,
IsLoggedIn: true,
LoggedIn: true,
})
}
@@ -33,7 +33,7 @@ func IndexPage(c *fiber.Ctx) error {
return Render(c, Data_index{
Title: "Landing",
NoTokenData: works,
IsLoggedIn: false,
LoggedIn: false,
})
}
+17 -5
View File
@@ -3,6 +3,7 @@ package routes
import (
"io"
"log"
"os"
"reflect"
"strings"
"testing"
@@ -12,28 +13,36 @@ import (
)
func TestTemplates(t *testing.T) {
autoTest[Data_error](t)
{
data := fakeData[Data_error]()
data.Error = io.EOF
manualTest(t, data)
}
autoTest[Data_about](t)
autoTest[Data_artwork](t)
autoTest[Data_artworkMulti](t)
autoTest[Data_discovery](t)
autoTest[Data_novelDiscovery](t)
autoTest[Data_following](t)
autoTest[Data_index](t)
autoTest[Data_newest](t)
autoTest[Data_novel](t)
autoTest[Data_unauthorized](t)
autoTest[Data_following](t)
autoTest[Data_pixivision_index](t)
autoTest[Data_novelDiscovery](t)
autoTest[Data_pixivision_article](t)
autoTest[Data_pixivision_index](t)
autoTest[Data_rank](t)
autoTest[Data_rankingCalendar](t)
autoTest[Data_settings](t)
autoTest[Data_tag](t)
autoTest[Data_unauthorized](t)
autoTest[Data_user](t)
autoTest[Data_userAtom](t)
}
func TestMain(m *testing.M) {
err := os.Chdir("..")
if err != nil {
panic(err)
}
InitTemplatingEngine(false)
m.Run()
@@ -55,6 +64,9 @@ func manualTest[T any](t *testing.T, data T) {
if !found {
log.Panicf("struct name does not start with 'Data_': %s", route_name)
}
// log.Println("Testing " + route_name)
variables := jet.VarMap{}
for k, v := range map[string]any{
+1 -1
View File
@@ -47,7 +47,7 @@ type Data_userAtom struct {
}
type Data_index struct {
Title string
IsLoggedIn bool
LoggedIn bool
Data core.LandingArtworks
NoTokenData core.Ranking
}