package templates import ( "arimelody-web/log" _ "embed" "fmt" "html/template" "strings" "time" ) //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"))) //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 var IndexTemplate = template.Must(template.Must(BaseTemplate.Clone()).Parse( strings.Join([]string{ indexHTML, componentReleaseHTML, componentArtistHTML, componentTrackHTML, }, "\n"), )) //go:embed "html/login.html" var loginHTML string var LoginTemplate = template.Must(template.Must(BaseTemplate.Clone()).Parse(loginHTML)) //go:embed "html/login-totp.html" var loginTotpHTML string var LoginTOTPTemplate = template.Must(template.Must(BaseTemplate.Clone()).Parse(loginTotpHTML)) //go:embed "html/register.html" var registerHTML string var RegisterTemplate = template.Must(template.Must(BaseTemplate.Clone()).Parse(registerHTML)) //go:embed "html/logout.html" var logoutHTML string var LogoutTemplate = template.Must(template.Must(BaseTemplate.Clone()).Parse(logoutHTML)) //go:embed "html/edit-account.html" var editAccountHTML string var AccountTemplate = template.Must(template.Must(BaseTemplate.Clone()).Parse(editAccountHTML)) //go:embed "html/totp-setup.html" var totpSetupHTML string var TOTPSetupTemplate = template.Must(template.Must(BaseTemplate.Clone()).Parse(totpSetupHTML)) //go:embed "html/totp-confirm.html" var totpConfirmHTML string var TOTPConfirmTemplate = template.Must(template.Must(BaseTemplate.Clone()).Parse(totpConfirmHTML)) var LogsTemplate = template.Must(template.Must(BaseTemplate.Clone()).Funcs(template.FuncMap{ "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") }, }).Parse(logsHTML)) //go:embed "html/releases.html" var releasesHTML string var ReleasesTemplate = template.Must(template.Must(BaseTemplate.Clone()).Parse( strings.Join([]string{ releasesHTML, componentReleaseHTML, }, "\n"), )) //go:embed "html/artists.html" var artistsHTML string var ArtistsTemplate = template.Must(template.Must(BaseTemplate.Clone()).Parse( strings.Join([]string{ artistsHTML, componentArtistHTML, }, "\n"), )) //go:embed "html/tracks.html" var tracksHTML string var TracksTemplate = template.Must(template.Must(BaseTemplate.Clone()).Parse( strings.Join([]string{ tracksHTML, componentTrackHTML, }, "\n"), )) //go:embed "html/edit-release.html" var editReleaseHTML string var EditReleaseTemplate = template.Must(template.Must(BaseTemplate.Clone()).Parse( strings.Join([]string{ editReleaseHTML, componentTrackHTML, }, "\n"), )) //go:embed "html/edit-artist.html" var editArtistHTML string var EditArtistTemplate = template.Must(template.Must(BaseTemplate.Clone()).Parse(editArtistHTML)) //go:embed "html/edit-track.html" var editTrackHTML string var EditTrackTemplate = template.Must(template.Must(BaseTemplate.Clone()).Parse( strings.Join([]string{ editTrackHTML, componentReleaseHTML, }, "\n"), )) //go:embed "html/components/credit/newcredit.html" var componentNewCreditHTML string var EditCreditsTemplate = template.Must(template.Must(BaseTemplate.Clone()).Parse(componentEditCreditsHTML)) //go:embed "html/components/credit/addcredit.html" var componentAddCreditHTML string var AddCreditTemplate = template.Must(template.Must(BaseTemplate.Clone()).Parse(componentAddCreditHTML)) //go:embed "html/components/credit/editcredits.html" var componentEditCreditsHTML string var NewCreditTemplate = template.Must(template.Must(BaseTemplate.Clone()).Parse(componentNewCreditHTML)) //go:embed "html/components/link/editlinks.html" var componentEditLinksHTML string var EditLinksTemplate = template.Must(template.Must(BaseTemplate.Clone()).Parse(componentEditLinksHTML)) //go:embed "html/components/track/newtrack.html" var componentNewTrackHTML string var EditTracksTemplate = template.Must(template.Must(BaseTemplate.Clone()).Parse(componentEditTracksHTML)) //go:embed "html/components/track/addtrack.html" var componentAddTrackHTML string var AddTrackTemplate = template.Must(template.Must(BaseTemplate.Clone()).Parse(componentAddTrackHTML)) //go:embed "html/components/track/edittracks.html" var componentEditTracksHTML string var NewTrackTemplate = template.Must(template.Must(BaseTemplate.Clone()).Parse(componentNewTrackHTML)) //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"), )) //go:embed "html/edit-blog.html" var editBlogHTML string var EditBlogTemplate = template.Must(template.Must(BaseTemplate.Clone()).Parse( strings.Join([]string{ editBlogHTML, componentBlogPostHTML, }, "\n"), ))