hmn/src/templates/types.go

388 lines
6.7 KiB
Go
Raw Normal View History

2021-03-14 20:49:58 +00:00
package templates
import (
"html/template"
"time"
)
2021-04-22 23:02:50 +00:00
2021-03-14 20:49:58 +00:00
type BaseData struct {
2022-06-02 01:49:19 +00:00
Title string
CanonicalLink string
OpenGraphItems []OpenGraphItem
BackgroundImage BackgroundImage
Theme string
BodyClasses []string
Breadcrumbs []Breadcrumb
Notices []Notice
ReportIssueEmail string
2021-03-26 03:33:00 +00:00
2021-10-28 01:35:53 +00:00
CurrentUrl string
CurrentProjectUrl string
LoginPageUrl string
ProjectCSSUrl string
2021-05-11 22:53:23 +00:00
2021-03-26 03:33:00 +00:00
Project Project
User *User
Session *Session
2021-05-11 22:53:23 +00:00
IsProjectPage bool
Header Header
Footer Footer
2021-05-11 22:53:23 +00:00
}
2021-08-17 05:18:04 +00:00
func (bd *BaseData) AddImmediateNotice(class, content string) {
bd.Notices = append(bd.Notices, Notice{
Class: class,
Content: template.HTML(content),
})
}
2021-05-11 22:53:23 +00:00
type Header struct {
2021-10-21 02:21:24 +00:00
AdminUrl string
UserProfileUrl string
UserSettingsUrl string
LoginActionUrl string
LogoutActionUrl string
ForgotPasswordUrl string
RegisterUrl string
HMNHomepageUrl string
ProjectIndexUrl string
PodcastUrl string
FishbowlUrl string
2021-10-21 02:21:24 +00:00
ForumsUrl string
LibraryUrl string
ConferencesUrl string
2021-10-28 01:35:53 +00:00
Project *ProjectHeader
}
type ProjectHeader struct {
HasForums bool
HasBlog bool
HasEpisodeGuide bool
2021-12-04 14:55:45 +00:00
CanEdit bool
2021-10-28 01:35:53 +00:00
ForumsUrl string
BlogUrl string
EpisodeGuideUrl string
2021-12-04 14:55:45 +00:00
EditUrl string
2021-05-11 22:53:23 +00:00
}
type Footer struct {
HomepageUrl string
AboutUrl string
ManifestoUrl string
CodeOfConductUrl string
CommunicationGuidelinesUrl string
ProjectIndexUrl string
ForumsUrl string
ContactUrl string
2022-02-10 20:27:28 +00:00
SearchActionUrl string
2021-03-14 20:49:58 +00:00
}
2021-04-22 23:02:50 +00:00
type Thread struct {
Title string
2021-04-29 04:52:27 +00:00
Locked bool
Sticky bool
2021-04-22 23:02:50 +00:00
}
type Post struct {
ID int
Url string
DeleteUrl string
EditUrl string
ReplyUrl string
Preview string
ReadOnly bool
Author User
Content template.HTML
PostDate time.Time
2021-08-28 17:07:45 +00:00
AuthorNumPosts int
AuthorNumProjects int
Editor *User
EditDate time.Time
EditReason string
2021-04-23 04:07:44 +00:00
IP string
2021-07-20 03:07:15 +00:00
ReplyPost *Post
}
2021-03-18 01:25:06 +00:00
type Project struct {
2022-08-05 04:03:45 +00:00
ID int
2021-06-06 23:48:43 +00:00
Name string
Subdomain string
Color1 string
Color2 string
Url string
Blurb string
ParsedDescription template.HTML
Owners []User
Logo string
2021-06-06 23:48:43 +00:00
LifecycleBadgeClass string
LifecycleString string
2021-03-18 01:25:06 +00:00
IsHMN bool
HasBlog bool
HasForum bool
UUID string
DateApproved time.Time
2021-03-18 01:25:06 +00:00
}
2021-11-25 03:59:51 +00:00
type ProjectSettings struct {
2022-06-19 22:26:33 +00:00
Name string
Slug string
Hidden bool
Featured bool
Personal bool
Lifecycle string
Tag string
JamParticipation []ProjectJamParticipation
2021-11-25 03:59:51 +00:00
Blurb string
Description string
LinksText string
2021-11-25 03:59:51 +00:00
Owners []User
LightLogo string
DarkLogo string
}
2022-06-19 22:26:33 +00:00
type ProjectJamParticipation struct {
JamName string
JamSlug string
Participating bool
}
2022-08-05 04:03:45 +00:00
type SnippetEdit struct {
AvailableProjectsJSON string
SubmitUrl string
AssetMaxSize int
}
2021-03-26 03:33:00 +00:00
type User struct {
2021-07-22 02:16:10 +00:00
ID int
Username string
Email string
IsStaff bool
2021-12-15 01:17:42 +00:00
Status int
2021-04-17 00:01:13 +00:00
2021-04-22 23:02:50 +00:00
Name string
Blurb string
Bio string
2021-04-22 23:02:50 +00:00
Signature string
2021-06-22 09:50:40 +00:00
DateJoined time.Time
2021-04-22 23:02:50 +00:00
AvatarUrl string
ProfileUrl string
2021-04-17 00:01:13 +00:00
2021-08-08 20:05:52 +00:00
DarkTheme bool
ShowEmail bool
2021-08-08 20:05:52 +00:00
Timezone string
2021-04-17 00:01:13 +00:00
CanEditLibrary bool
DiscordSaveShowcase bool
DiscordDeleteSnippetOnMessageDelete bool
2021-03-26 03:33:00 +00:00
}
2021-06-22 09:50:40 +00:00
type Link struct {
Name string
Url string
LinkText string
Icon string
2021-07-08 07:40:30 +00:00
}
2021-07-23 03:09:46 +00:00
type Podcast struct {
Title string
Description string
Language string
ImageUrl string
Url string
RSSUrl string
AppleUrl string
GoogleUrl string
SpotifyUrl string
}
type PodcastEpisode struct {
GUID string
Title string
Description string
DescriptionHtml template.HTML
EpisodeNumber int
Url string
ImageUrl string
FileUrl string
FileSize int64
PublicationDate time.Time
Duration int
}
2021-08-08 20:05:52 +00:00
// NOTE(asaf): See /src/rawdata/scss/_notices.scss for a list of classes.
2021-07-08 07:40:30 +00:00
type Notice struct {
Content template.HTML
Class string
2021-06-22 09:50:40 +00:00
}
type Session struct {
CSRFToken string
}
2021-03-14 20:49:58 +00:00
type OpenGraphItem struct {
Property string
Name string
Value string
}
type BackgroundImage struct {
Url string
Size string // A valid CSS background-size value
}
2021-04-22 23:02:50 +00:00
type PostType int
const (
PostTypeUnknown PostType = iota
PostTypeBlogPost
PostTypeBlogComment
PostTypeForumThread
PostTypeForumReply
)
2021-04-22 23:02:50 +00:00
// Data from post_list_item.html
type PostListItem struct {
Title string
Url string
UUID string
2021-04-22 23:02:50 +00:00
Breadcrumbs []Breadcrumb
PostType PostType
PostTypePrefix string
User User
Date time.Time
Unread bool
Classes string
Preview string
LastEditDate time.Time
}
// Data from thread_list_item.html
type ThreadListItem struct {
2021-06-22 10:27:27 +00:00
Title string
Url string
FirstUser User
FirstDate time.Time
LastUser User
LastDate time.Time
Unread bool
Classes string
Content string
2021-04-22 23:02:50 +00:00
}
2021-06-22 09:50:40 +00:00
type TimelineItem struct {
2022-08-05 04:03:45 +00:00
ID string
Date time.Time
Title string
TypeTitle string
FilterTitle string
Breadcrumbs []Breadcrumb
Url string
DiscordMessageUrl string
2021-06-22 09:50:40 +00:00
OwnerAvatarUrl string
OwnerName string
OwnerUrl string
2022-08-05 04:03:45 +00:00
Projects []Project
Description template.HTML
RawDescription string
2021-06-22 09:50:40 +00:00
PreviewMedia TimelineItemMedia
EmbedMedia []TimelineItemMedia
2021-10-25 14:07:14 +00:00
SmallInfo bool
AllowTitleWrap bool
TruncateDescription bool
CanShowcase bool // whether this snippet can be shown in a showcase gallery
2022-08-05 04:03:45 +00:00
Editable bool
}
type TimelineItemMediaType int
const (
TimelineItemMediaTypeUnknown TimelineItemMediaType = iota
TimelineItemMediaTypeImage
TimelineItemMediaTypeVideo
TimelineItemMediaTypeAudio
TimelineItemMediaTypeEmbed
)
type TimelineItemMedia struct {
Type TimelineItemMediaType
AssetUrl string
EmbedHTML template.HTML
ThumbnailUrl string
MimeType string
Width, Height int
Filename string
FileSize int
ExtraOpenGraphItems []OpenGraphItem
2021-06-22 09:50:40 +00:00
}
2021-06-06 23:48:43 +00:00
type ProjectCardData struct {
Project *Project
Classes string
}
2021-11-25 03:59:51 +00:00
type ImageSelectorData struct {
Name string
Src string
Required bool
}
2021-04-22 23:02:50 +00:00
type Breadcrumb struct {
Name, Url string
}
2021-04-25 19:33:22 +00:00
type Pagination struct {
Current int
Total int
FirstUrl string
LastUrl string
PreviousUrl string
NextUrl string
}
2021-08-08 20:05:52 +00:00
type EmailBaseData struct {
To template.HTML
From template.HTML
Subject template.HTML
Separator template.HTML
}
2021-08-16 04:40:56 +00:00
type DiscordUser struct {
Username string
Discriminator string
Avatar string
}
2021-11-11 19:00:46 +00:00
type Tag struct {
Text string
Url string
}