Feature: error page

This commit is contained in:
VnPower 2023-06-24 19:59:18 +07:00
parent fbc727efff
commit 516d68b8a6
Signed by: vnpower
GPG key ID: 881DE3DEB966106C
5 changed files with 78 additions and 119 deletions

20
main.go
View file

@ -35,6 +35,26 @@ func setup_router() *fiber.App {
EnableTrustedProxyCheck: true,
TrustedProxies: []string{"0.0.0.0/0"},
ProxyHeader: fiber.HeaderXForwardedFor,
ErrorHandler: func(c *fiber.Ctx, err error) error {
// Status code defaults to 500
code := fiber.StatusInternalServerError
// // Retrieve the custom status code if it's a *fiber.Error
// var e *fiber.Error
// if errors.As(err, &e) {
// code = e.Code
// }
// Send custom error page
err = c.Status(code).Render("error", fiber.Map{"Title": code, "Error": err})
if err != nil {
// In case the SendFile fails
return c.Status(fiber.StatusInternalServerError).SendString("Internal Server Error")
}
// Return from handler
return nil
},
})
server.Use(logger.New())

View file

@ -1,6 +0,0 @@
{{ template "header.html" .Title }}
<div class="container" style="text-align: center">
<h2>Error: {{ .Title }}</h2>
{{ .Error }}
</div>
{{ template "footer.html" }}

4
template/error.jet.html Normal file
View file

@ -0,0 +1,4 @@
<div class="container" style="text-align: center">
<h2>Error: {{ Title }}</h2>
{{ Error }}
</div>

View file

@ -1,121 +1,63 @@
<div class="container">
<h2>{{ Title }}</h2>
<h2>{{ Title }}</h2>
<div class="switcher">
<span class="switch-title">Content</span>
<a href="/ranking?content=all&mode={{ Mode }}&page=1" class="switch-button"
>Overall</a
>
<a
href="/ranking?content=illust&mode={{ Mode }}&page=1"
class="switch-button"
>Illustrations</a
>
<a
href="/ranking?content=manga&mode={{ Mode }}&page=1"
class="switch-button"
>Mangas</a
>
</div>
<br />
<div class="switcher">
<span class="switch-title">Content</span>
<a href="/ranking?content=all&mode={{ Mode }}&page=1" class="switch-button">Overall</a>
<a href="/ranking?content=illust&mode={{ Mode }}&page=1" class="switch-button">Illustrations</a>
<a href="/ranking?content=manga&mode={{ Mode }}&page=1" class="switch-button">Mangas</a>
</div>
<br />
<div class="switcher">
<span class="switch-title">Modes</span>
<a
href="/ranking?content={{ Content }}&mode=daily&page=1"
class="switch-button"
>Daily</a
>
<a
href="/ranking?content={{ Content }}&mode=weekly&page=1"
class="switch-button"
>Weekly</a
>
<a
href="/ranking?content={{ Content }}&mode=monthly&page=1"
class="switch-button"
>Monthly</a
>
<a
href="/ranking?content={{ Content }}&mode=rookie&page=1"
class="switch-button"
>Rookie</a
>
<span class="switch-seperator"></span>
<a
href="/ranking?content={{ Content }}&mode=daily_r18&page=1"
class="switch-button"
>Daily (R-18)</a
>
<a
href="/ranking?content={{ Content }}&mode=weekly_r18&page=1"
class="switch-button"
>Weekly (R-18)</a
>
</div>
<br />
<div class="switcher">
<span class="switch-title">Modes</span>
<a href="/ranking?content={{ Content }}&mode=daily&page=1" class="switch-button">Daily</a>
<a href="/ranking?content={{ Content }}&mode=weekly&page=1" class="switch-button">Weekly</a>
<a href="/ranking?content={{ Content }}&mode=monthly&page=1" class="switch-button">Monthly</a>
<a href="/ranking?content={{ Content }}&mode=rookie&page=1" class="switch-button">Rookie</a>
<span class="switch-seperator"></span>
<a href="/ranking?content={{ Content }}&mode=daily_r18&page=1" class="switch-button">Daily (R-18)</a>
<a href="/ranking?content={{ Content }}&mode=weekly_r18&page=1" class="switch-button">Weekly (R-18)</a>
</div>
<br />
{{ range Items }}
<div class="artwork-thumbnail-small artwork-thumbnail artwork-mobile">
<div class="artwork-rank-circle">{{ .Rank }}</div>
{{ if toInt(.Pages) > 1 }}
<div class="artwork-page-count"><span>&boxbox; {{ .Pages }}</span></div>
{{ end }}
<a href="/artworks/{{ .ID }}">
<img
src="{{ proxyImage(.Image) }}"
alt="{{ .Title }}"
class="artwork-master-image"
/>
</a>
{{ range Items }}
<div class="artwork-thumbnail-small artwork-thumbnail artwork-mobile">
<div class="artwork-rank-circle">{{ .Rank }}</div>
{{ if toInt(.Pages) > 1 }}
<div class="artwork-page-count"><span>&boxbox; {{ .Pages }}</span></div>
{{ end }}
<a href="/artworks/{{ .ID }}">
<img src="{{ .Image }}" alt="{{ .Title }}" class="artwork-master-image" />
</a>
<a class="artwork-thumbnail-title" href="/artworks/{{ .ID }}">
<h3 class="no-margin">{{ .Title }}</h3>
</a>
<a href="/users/{{ .ArtistID }}" class="artwork-thumbnail-artist flex"
><img
src="{{ proxyImage(.ArtistAvatar) }}"
alt="{{ .ArtistName }}"
class="artwork-thumbnail-artist-avatar border-rounded"
/>
{{ .ArtistName }}</a
>
</div>
{{ end }}
<div class="pagination">
{{ if Page >= 1 }}
<a href="#" class="pagination-button disabled">First</a>
<a href="#" class="pagination-button disabled">Previous</a>
{{ else }}
<a
href="/ranking?content={{ Content }}&mode={{ Mode }}&page=1"
class="pagination-button"
>First</a
>
<a
href="/ranking?content={{ Content }}&mode={{ Mode }}&page={{ dec(Page) }}"
class="pagination-button"
>Previous</a
>
<a class="artwork-thumbnail-title" href="/artworks/{{ .ID }}">
<h3 class="no-margin">{{ .Title }}</h3>
</a>
<a href="/users/{{ .ArtistID }}" class="artwork-thumbnail-artist flex"><img src="{{ .ArtistAvatar }}"
alt="{{ .ArtistName }}" class="artwork-thumbnail-artist-avatar border-rounded" />
{{ .ArtistName }}</a>
</div>
{{ end }}
<a href="#" class="pagination-button disabled">{{ Page }}</a>
<div class="pagination">
{{ if Page >= 1 }}
<a href="#" class="pagination-button disabled">First</a>
<a href="#" class="pagination-button disabled">Previous</a>
{{ else }}
<a href="/ranking?content={{ Content }}&mode={{ Mode }}&page=1" class="pagination-button">First</a>
<a href="/ranking?content={{ Content }}&mode={{ Mode }}&page={{ dec(Page) }}"
class="pagination-button">Previous</a>
{{ end }}
{{ if Page == 10 }}
<a href="#" class="pagination-button disabled">Next</a>
<a href="#" class="pagination-button disabled">Last</a>
{{ else }}
<a
href="/ranking?content={{ Content }}&mode={{ Mode }}&page={{ inc(Page) }}"
class="pagination-button"
>Next</a
>
<a
href="/ranking?content={{ Content }}&mode={{ Mode }}&page=10"
class="pagination-button"
>Last</a
>
{{ end }}
</div>
<a href="#" class="pagination-button disabled">{{ Page }}</a>
{{ if Page == 10 }}
<a href="#" class="pagination-button disabled">Next</a>
<a href="#" class="pagination-button disabled">Last</a>
{{ else }}
<a href="/ranking?content={{ Content }}&mode={{ Mode }}&page={{ inc(Page) }}" class="pagination-button">Next</a>
<a href="/ranking?content={{ Content }}&mode={{ Mode }}&page=10" class="pagination-button">Last</a>
{{ end }}
</div>
</div>

View file

@ -122,7 +122,6 @@ func ranking_page(c *fiber.Ctx) error {
if image_proxy == nil {
image_proxy = &configs.ProxyServer
}
mode := c.Query("mode", "daily")
content := c.Query("content", "all")