arimelody-web/admin/templates/templates.go

212 lines
6 KiB
Go
Raw Normal View History

2025-09-30 19:03:35 +01:00
package templates
import (
"arimelody-web/log"
_ "embed"
"fmt"
"html/template"
"strings"
"time"
2025-09-30 19:03:35 +01:00
)
//go:embed "html/layout.html"
var layoutHTML string
//go:embed "html/prideflag.html"
var prideflagHTML string
//go:embed "html/index.html"
var indexHTML string
//go:embed "html/logs.html"
var logsHTML string
var BaseTemplate = template.Must(
template.New("base").Funcs(
template.FuncMap{
"hasPrefix": strings.HasPrefix,
},
).Parse(strings.Join([]string{
layoutHTML,
prideflagHTML,
}, "\n")))
2025-09-30 19:03:35 +01:00
2025-11-07 01:04:10 +00:00
//go:embed "html/components/release/release.html"
var componentReleaseHTML string
//go:embed "html/components/artist/artist.html"
var componentArtistHTML string
//go:embed "html/components/track/track.html"
var componentTrackHTML string
2025-09-30 19:03:35 +01:00
var IndexTemplate = template.Must(template.Must(BaseTemplate.Clone()).Parse(
strings.Join([]string{
indexHTML,
componentReleaseHTML,
componentArtistHTML,
componentTrackHTML,
2025-09-30 19:03:35 +01:00
}, "\n"),
))
2025-11-07 01:04:10 +00:00
//go:embed "html/login.html"
var loginHTML string
2025-09-30 19:03:35 +01:00
var LoginTemplate = template.Must(template.Must(BaseTemplate.Clone()).Parse(loginHTML))
2025-11-07 01:04:10 +00:00
//go:embed "html/login-totp.html"
var loginTotpHTML string
2025-09-30 19:03:35 +01:00
var LoginTOTPTemplate = template.Must(template.Must(BaseTemplate.Clone()).Parse(loginTotpHTML))
2025-11-07 01:04:10 +00:00
//go:embed "html/register.html"
var registerHTML string
2025-09-30 19:03:35 +01:00
var RegisterTemplate = template.Must(template.Must(BaseTemplate.Clone()).Parse(registerHTML))
2025-11-07 01:04:10 +00:00
//go:embed "html/logout.html"
var logoutHTML string
2025-09-30 19:03:35 +01:00
var LogoutTemplate = template.Must(template.Must(BaseTemplate.Clone()).Parse(logoutHTML))
2025-11-07 01:04:10 +00:00
//go:embed "html/edit-account.html"
var editAccountHTML string
2025-09-30 19:03:35 +01:00
var AccountTemplate = template.Must(template.Must(BaseTemplate.Clone()).Parse(editAccountHTML))
2025-11-07 01:04:10 +00:00
//go:embed "html/totp-setup.html"
var totpSetupHTML string
2025-09-30 19:03:35 +01:00
var TOTPSetupTemplate = template.Must(template.Must(BaseTemplate.Clone()).Parse(totpSetupHTML))
2025-11-07 01:04:10 +00:00
//go:embed "html/totp-confirm.html"
var totpConfirmHTML string
2025-09-30 19:03:35 +01:00
var TOTPConfirmTemplate = template.Must(template.Must(BaseTemplate.Clone()).Parse(totpConfirmHTML))
2025-09-30 19:03:35 +01:00
var LogsTemplate = template.Must(template.Must(BaseTemplate.Clone()).Funcs(template.FuncMap{
2025-11-07 01:04:10 +00:00
"parseLevel": func (level log.LogLevel) string {
switch level {
case log.LEVEL_INFO:
return "INFO"
case log.LEVEL_WARN:
return "WARN"
}
return fmt.Sprintf("%d?", level)
},
"titleCase": func (logType string) string {
runes := []rune(logType)
for i, r := range runes {
if (i == 0 || runes[i - 1] == ' ') && r >= 'a' && r <= 'z' {
runes[i] = r + ('A' - 'a')
}
}
return string(runes)
},
"toLower": func (str string) string {
return strings.ToLower(str)
},
"prettyTime": func (t time.Time) string {
return t.Format("02 Jan 2006, 15:04:05")
},
2025-09-30 19:03:35 +01:00
}).Parse(logsHTML))
2025-11-07 01:04:10 +00:00
//go:embed "html/releases.html"
var releasesHTML string
var ReleasesTemplate = template.Must(template.Must(BaseTemplate.Clone()).Parse(
strings.Join([]string{
releasesHTML,
componentReleaseHTML,
}, "\n"),
))
2025-11-07 01:04:10 +00:00
//go:embed "html/artists.html"
var artistsHTML string
var ArtistsTemplate = template.Must(template.Must(BaseTemplate.Clone()).Parse(
strings.Join([]string{
artistsHTML,
componentArtistHTML,
}, "\n"),
))
2025-11-07 01:04:10 +00:00
//go:embed "html/tracks.html"
var tracksHTML string
var TracksTemplate = template.Must(template.Must(BaseTemplate.Clone()).Parse(
strings.Join([]string{
tracksHTML,
componentTrackHTML,
}, "\n"),
))
2025-11-07 01:04:10 +00:00
//go:embed "html/edit-release.html"
var editReleaseHTML string
var EditReleaseTemplate = template.Must(template.Must(BaseTemplate.Clone()).Parse(
strings.Join([]string{
editReleaseHTML,
componentTrackHTML,
}, "\n"),
))
2025-11-07 01:04:10 +00:00
//go:embed "html/edit-artist.html"
var editArtistHTML string
2025-09-30 19:03:35 +01:00
var EditArtistTemplate = template.Must(template.Must(BaseTemplate.Clone()).Parse(editArtistHTML))
2025-11-07 01:04:10 +00:00
//go:embed "html/edit-track.html"
var editTrackHTML string
2025-09-30 19:03:35 +01:00
var EditTrackTemplate = template.Must(template.Must(BaseTemplate.Clone()).Parse(
strings.Join([]string{
editTrackHTML,
componentReleaseHTML,
2025-09-30 19:03:35 +01:00
}, "\n"),
))
2025-11-07 01:04:10 +00:00
//go:embed "html/components/credit/newcredit.html"
var componentNewCreditHTML string
2025-09-30 19:03:35 +01:00
var EditCreditsTemplate = template.Must(template.Must(BaseTemplate.Clone()).Parse(componentEditCreditsHTML))
2025-11-07 01:04:10 +00:00
//go:embed "html/components/credit/addcredit.html"
var componentAddCreditHTML string
2025-09-30 19:03:35 +01:00
var AddCreditTemplate = template.Must(template.Must(BaseTemplate.Clone()).Parse(componentAddCreditHTML))
2025-11-07 01:04:10 +00:00
//go:embed "html/components/credit/editcredits.html"
var componentEditCreditsHTML string
2025-09-30 19:03:35 +01:00
var NewCreditTemplate = template.Must(template.Must(BaseTemplate.Clone()).Parse(componentNewCreditHTML))
2025-11-07 01:04:10 +00:00
//go:embed "html/components/link/editlinks.html"
var componentEditLinksHTML string
2025-09-30 19:03:35 +01:00
var EditLinksTemplate = template.Must(template.Must(BaseTemplate.Clone()).Parse(componentEditLinksHTML))
2025-11-07 01:04:10 +00:00
//go:embed "html/components/track/newtrack.html"
var componentNewTrackHTML string
2025-09-30 19:03:35 +01:00
var EditTracksTemplate = template.Must(template.Must(BaseTemplate.Clone()).Parse(componentEditTracksHTML))
2025-11-07 01:04:10 +00:00
//go:embed "html/components/track/addtrack.html"
var componentAddTrackHTML string
2025-09-30 19:03:35 +01:00
var AddTrackTemplate = template.Must(template.Must(BaseTemplate.Clone()).Parse(componentAddTrackHTML))
2025-11-07 01:04:10 +00:00
//go:embed "html/components/track/edittracks.html"
var componentEditTracksHTML string
2025-09-30 19:03:35 +01:00
var NewTrackTemplate = template.Must(template.Must(BaseTemplate.Clone()).Parse(componentNewTrackHTML))
2025-11-07 01:04:10 +00:00
//go:embed "html/blogs.html"
var blogsHTML string
//go:embed "html/components/blog/blogpost.html"
var componentBlogPostHTML string
var BlogsTemplate = template.Must(template.Must(BaseTemplate.Clone()).Parse(
strings.Join([]string{
blogsHTML,
componentBlogPostHTML,
}, "\n"),
))
2025-11-07 02:35:51 +00:00
//go:embed "html/edit-blog.html"
var editBlogHTML string
var EditBlogTemplate = template.Must(template.Must(BaseTemplate.Clone()).Parse(
strings.Join([]string{
editBlogHTML,
componentBlogPostHTML,
}, "\n"),
))