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")