diff --git a/public/wheeljam2021/TwitterCard.png b/public/wheeljam2021/TwitterCard.png new file mode 100644 index 00000000..49af5533 Binary files /dev/null and b/public/wheeljam2021/TwitterCard.png differ diff --git a/public/wheeljam2022/TwitterCard.png b/public/wheeljam2022/TwitterCard.png new file mode 100644 index 00000000..51392abf Binary files /dev/null and b/public/wheeljam2022/TwitterCard.png differ diff --git a/src/hmnurl/urls.go b/src/hmnurl/urls.go index 19c7ad90..f175a7d8 100644 --- a/src/hmnurl/urls.go +++ b/src/hmnurl/urls.go @@ -49,6 +49,13 @@ func BuildWhenIsIt() string { return Url("/whenisit", nil) } +var RegexJamsIndex = regexp.MustCompile("^/jams$") + +func BuildJamsIndex() string { + defer CatchPanic() + return Url("/jams", nil) +} + var RegexJamIndex = regexp.MustCompile("^/jam$") func BuildJamIndex() string { diff --git a/src/templates/src/fishbowl_index.html b/src/templates/src/fishbowl_index.html index d083c5cd..707e9ee8 100644 --- a/src/templates/src/fishbowl_index.html +++ b/src/templates/src/fishbowl_index.html @@ -4,7 +4,7 @@

Fishbowls

-

Every two months on the Discord, we host a fishbowl: a panel conversation where a select few community members can discuss a topic in detail. Fishbowls give us the opportunity to discuss difficult subjects with more nuance and detail than you can find anywhere else on the Internet. In many ways, they're a distillation of everything the network is about.

+

Every so often on the Discord, we host a fishbowl: a panel conversation where a select few community members can discuss a topic in detail. Fishbowls give us the opportunity to discuss difficult subjects with more nuance and detail than you can find anywhere else on the Internet. In many ways, they're a distillation of everything the network is about.

This is an archive of those conversations. If you would like to catch one live, join the Discord!

diff --git a/src/templates/src/include/header.html b/src/templates/src/include/header.html index a88bb25c..60f45329 100644 --- a/src/templates/src/include/header.html +++ b/src/templates/src/include/header.html @@ -71,13 +71,14 @@ Projects
- - diff --git a/src/templates/src/jams_index.html b/src/templates/src/jams_index.html new file mode 100644 index 00000000..5f7eddc4 --- /dev/null +++ b/src/templates/src/jams_index.html @@ -0,0 +1,41 @@ +{{ template "base.html" . }} + +{{ define "extrahead" }} + +{{ end }} + +{{ define "content" }} +
+

Jams

+ +

Since 2020, we have been running programming jams to encourage community members to explore new ideas and start projects. You can view all the past submissions and results here.

+ + +
+{{ end }} diff --git a/src/templates/types.go b/src/templates/types.go index 1cc6851f..acbf187d 100644 --- a/src/templates/types.go +++ b/src/templates/types.go @@ -52,6 +52,7 @@ type Header struct { FishbowlUrl string ForumsUrl string ConferencesUrl string + JamsUrl string EducationUrl string Project *ProjectHeader diff --git a/src/website/base_data.go b/src/website/base_data.go index 01410380..d6a95c65 100644 --- a/src/website/base_data.go +++ b/src/website/base_data.go @@ -76,6 +76,7 @@ func getBaseData(c *RequestContext, title string, breadcrumbs []templates.Breadc FishbowlUrl: hmnurl.BuildFishbowlIndex(), ForumsUrl: hmnurl.HMNProjectContext.BuildForum(nil, 1), ConferencesUrl: hmnurl.BuildConferences(), + JamsUrl: hmnurl.BuildJamsIndex(), EducationUrl: hmnurl.BuildEducationIndex(), }, Footer: templates.Footer{ diff --git a/src/website/jam.go b/src/website/jam.go index 924ff1f5..c538526a 100644 --- a/src/website/jam.go +++ b/src/website/jam.go @@ -12,6 +12,29 @@ import ( "git.handmade.network/hmn/hmn/src/utils" ) +func JamsIndex(c *RequestContext) ResponseData { + var res ResponseData + + type TemplateData struct { + templates.BaseData + + LispJamUrl string + WRJ2021Url string + WRJ2022Url string + VJ2023Url string + } + + res.MustWriteTemplate("jams_index.html", TemplateData{ + BaseData: getBaseDataAutocrumb(c, "Jams"), + + LispJamUrl: hmnurl.BuildFishbowl("lisp-jam"), + WRJ2021Url: hmnurl.BuildJamIndex2021(), + WRJ2022Url: hmnurl.BuildJamIndex2022(), + VJ2023Url: hmnurl.BuildJamIndex2023_Visibility(), + }, c.Perf) + return res +} + func JamIndex2023_Visibility(c *RequestContext) ResponseData { var res ResponseData diff --git a/src/website/routes.go b/src/website/routes.go index d720f986..219da3de 100644 --- a/src/website/routes.go +++ b/src/website/routes.go @@ -55,6 +55,8 @@ func NewWebsiteRoutes(conn *pgxpool.Pool) http.Handler { hmnOnly.GET(hmnurl.RegexProjectSubmissionGuidelines, ProjectSubmissionGuidelines) hmnOnly.GET(hmnurl.RegexConferences, Conferences) hmnOnly.GET(hmnurl.RegexWhenIsIt, WhenIsIt) + + hmnOnly.GET(hmnurl.RegexJamsIndex, JamsIndex) hmnOnly.GET(hmnurl.RegexJamIndex, func(c *RequestContext) ResponseData { return c.Redirect(hmnurl.BuildJamIndex2023_Visibility(), http.StatusFound) })