hswaw/site: wip new layout
Change-Id: I4da3a668429dee42c7292accb9e24b93703f1538
diff --git a/hswaw/site/views.go b/hswaw/site/views.go
index 09755b2..6109a55 100644
--- a/hswaw/site/views.go
+++ b/hswaw/site/views.go
@@ -5,9 +5,11 @@
"fmt"
"html/template"
"net/http"
+ "strings"
"github.com/golang/glog"
+ "code.hackerspace.pl/hscloud/hswaw/site/calendar"
"code.hackerspace.pl/hscloud/hswaw/site/templates"
)
@@ -60,11 +62,47 @@
render(w, tmplIndex, map[string]interface{}{
"Entries": s.getFeeds(),
+ "Events": s.getEvents(),
"AtStatus": atStatus,
"AtError": atError,
})
}
+func (s *service) handleJSONEvents(w http.ResponseWriter, r *http.Request) {
+ w.Header().Set("Content-Type", "application/json")
+ json.NewEncoder(w).Encode(s.getEvents())
+}
+
+// handleEvent is a fallback HTML-only event render view.
+// TODO(q3k): make this pretty by either making a template or redirecting to a
+// pretty viewer.
+func (s *service) handleEvent(w http.ResponseWriter, r *http.Request) {
+ parts := strings.Split(r.URL.Path, "/")
+ uid := parts[len(parts)-1]
+
+ events := s.getEvents()
+ var event *calendar.UpcomingEvent
+ for _, ev := range events {
+ if ev.UID == uid {
+ event = ev
+ break
+ }
+ }
+ if event == nil {
+ http.NotFound(w, r)
+ return
+ }
+
+ render(w, template.Must(template.New("event").Parse(`<!DOCTYPE html>
+ <meta charset="utf-8">
+ <title>Event details: {{ .Summary }}</title>
+ <body>
+ <i>this interface intentionally left ugly...</i><br/>
+ <b>summary:</b> {{ .Summary }}<br />
+ <b>date:</b> {{ .WarsawDate }}<br />
+ <pre>{{ .Description }}</pre>`)), event)
+}
+
func (s *service) handleSpaceAPI(w http.ResponseWriter, r *http.Request) {
ctx := r.Context()
w.Header().Set("Content-Type", "application/json")