diff --git a/src/hmnurl/urls.go b/src/hmnurl/urls.go index 4022435..0cfd413 100644 --- a/src/hmnurl/urls.go +++ b/src/hmnurl/urls.go @@ -77,6 +77,13 @@ func BuildJamIndex2023_Visibility() string { return Url("/jam/visibility-2023", nil) } +var RegexJamFeed2023_Visibility = regexp.MustCompile("^/jam/visibility-2023/feed$") + +func BuildJamFeed2023_Visibility() string { + defer CatchPanic() + return Url("/jam/visibility-2023/feed", nil) +} + var RegexJamFeed2022 = regexp.MustCompile("^/jam/2022/feed$") func BuildJamFeed2022() string { diff --git a/src/templates/src/jam_2023_vj_feed.html b/src/templates/src/jam_2023_vj_feed.html new file mode 100644 index 0000000..8838dfa --- /dev/null +++ b/src/templates/src/jam_2023_vj_feed.html @@ -0,0 +1,41 @@ +{{ template "jam_2023_visibility_base.html" . }} {{ define "content" }} + + +
+

Visibility Jam

+

April 14 - 16, 2023

+
See things in a new way.
+
+ +
+
+
+ {{ if eq .DaysUntilEnd 0 }} +

Project updates

+ {{ else }} +

Recent updates

+ {{ end }} +
+ {{ range .TimelineItems }} {{ template "timeline_item.html" . }} {{ end + }} +
+
+
+

Projects

+
+ {{ range .JamProjects }} {{ template "project_card.html" projectcarddata + . "" }} {{ end }} +
+
+
+
+{{ end }} diff --git a/src/website/jam.go b/src/website/jam.go index 97eee9e..37a2935 100644 --- a/src/website/jam.go +++ b/src/website/jam.go @@ -111,6 +111,76 @@ func JamIndex2023_Visibility(c *RequestContext) ResponseData { return res } +func JamFeed2023_Visibility(c *RequestContext) ResponseData { + jamProjects, err := hmndata.FetchProjects(c, c.Conn, c.CurrentUser, hmndata.ProjectsQuery{ + JamSlugs: []string{hmndata.VJ2023.Slug}, + }) + if err != nil { + return c.ErrorResponse(http.StatusInternalServerError, oops.New(err, "failed to fetch jam projects for current user")) + } + + projectIds := make([]int, 0, len(jamProjects)) + for _, jp := range jamProjects { + projectIds = append(projectIds, jp.Project.ID) + } + + var timelineItems []templates.TimelineItem + if len(projectIds) > 0 { + snippets, err := hmndata.FetchSnippets(c, c.Conn, c.CurrentUser, hmndata.SnippetQuery{ + ProjectIDs: projectIds, + }) + if err != nil { + return c.ErrorResponse(http.StatusInternalServerError, oops.New(err, "failed to fetch snippets for jam showcase")) + } + + timelineItems = make([]templates.TimelineItem, 0, len(snippets)) + for _, s := range snippets { + timelineItem := SnippetToTimelineItem(&s.Snippet, s.Asset, s.DiscordMessage, s.Projects, s.Owner, c.Theme, false) + timelineItem.SmallInfo = true + timelineItems = append(timelineItems, timelineItem) + } + } + + pageProjects := make([]templates.Project, 0, len(jamProjects)) + for _, p := range jamProjects { + pageProjects = append(pageProjects, templates.ProjectAndStuffToTemplate(&p, hmndata.UrlContextForProject(&p.Project).BuildHomepage(), c.Theme)) + } + + type JamFeedData struct { + templates.BaseData + DaysUntilStart, DaysUntilEnd int + + JamProjects []templates.Project + TimelineItems []templates.TimelineItem + } + + daysUntilStart := daysUntil(hmndata.VJ2023.StartTime) + daysUntilEnd := daysUntil(hmndata.VJ2023.EndTime) + + baseData := getBaseDataAutocrumb(c, hmndata.VJ2023.Name) + + baseData.OpenGraphItems = []templates.OpenGraphItem{ + {Property: "og:title", Value: "Visibility Jam"}, + {Property: "og:site_name", Value: "Handmade Network"}, + {Property: "og:type", Value: "website"}, + {Property: "og:image", Value: hmnurl.BuildPublic("visjam2023/opengraph.png", true)}, + {Property: "og:description", Value: "See things in a new way. April 14 - 16."}, + {Property: "og:url", Value: hmnurl.BuildJamIndex()}, + {Name: "twitter:card", Value: "summary_large_image"}, + {Name: "twitter:image", Value: hmnurl.BuildPublic("visjam2023/TwitterCard.png", true)}, + } + + var res ResponseData + res.MustWriteTemplate("jam_2023_vj_feed.html", JamFeedData{ + BaseData: baseData, + DaysUntilStart: daysUntilStart, + DaysUntilEnd: daysUntilEnd, + JamProjects: pageProjects, + TimelineItems: timelineItems, + }, c.Perf) + return res +} + func JamIndex2022(c *RequestContext) ResponseData { var res ResponseData diff --git a/src/website/routes.go b/src/website/routes.go index 5502cf8..293c0c7 100644 --- a/src/website/routes.go +++ b/src/website/routes.go @@ -60,6 +60,7 @@ func NewWebsiteRoutes(conn *pgxpool.Pool) http.Handler { hmnOnly.GET(hmnurl.RegexJamIndex2022, JamIndex2022) hmnOnly.GET(hmnurl.RegexJamFeed2022, JamFeed2022) hmnOnly.GET(hmnurl.RegexJamIndex2023_Visibility, JamIndex2023_Visibility) + hmnOnly.GET(hmnurl.RegexJamFeed2023_Visibility, JamFeed2023_Visibility) hmnOnly.GET(hmnurl.RegexStaffRolesIndex, StaffRolesIndex) hmnOnly.GET(hmnurl.RegexStaffRole, StaffRole)