package grils import ( "fagott.pw/charakterin" "fagott.pw/grilist/frontend" "fagott.pw/grilist/grilist" "fmt" "github.com/julienschmidt/httprouter" "net/http" "strconv" "time" ) type GrilsModule struct { g *grilist.Grilist } func (m *GrilsModule) Name() string { return "Grils" } func (m *GrilsModule) Init(g *grilist.Grilist) { m.g = g m.g.Router.GET("/gril/:id", m.viewGril) } func (m *GrilsModule) Interface() interface{} { return m } func (m *GrilsModule) ProvideDashboardData(user *charakterin.User) []grilist.DashboardCategory { var categories []grilist.DashboardCategory var grils []*Gril // TODO // NUR TEMPORÄR g, _ := m.FromID(1) grils = append(grils, g) cat := grilist.DashboardCategory{ Title: "Neue Grils", } for _, gril := range grils { cat.Cards = append(cat.Cards, frontend.Card{ Title: gril.RomajiName, Description: gril.KanjiName, Size: "medium", Actions: []frontend.Action{ frontend.Action{ Name: "anguckieren", Link: fmt.Sprintf("/gril/%d", gril.ID), }, }, }) } categories = append(categories, cat) return categories } func (m *GrilsModule) FromID(id int) (*Gril, error) { return &Gril{ ID: id, KanjiName: "藤林 杏", RomajiName: "Kyou Fujibayashi", OtherNames: []string{"ふじばやし きょう"}, Age: 17, Birthday: time.Now(), Tags: []string{"tsundere", "hair intakes", "hair ribbon", "school uniform", "school crest"}, }, nil } func (m *GrilsModule) viewGril(w http.ResponseWriter, r *http.Request, p httprouter.Params) { user, _ := m.g.Charakterin.GetUserFromRequest(r) sid := p.ByName("id") id, err := strconv.Atoi(sid) if err != nil { http.Redirect(w, r, "/", 302) return } gril, err := m.FromID(id) if err != nil { http.Redirect(w, r, "/", 302) return } data := m.g.Renderer.DefaultData() data["user"] = user data["gril"] = gril m.g.Renderer.RenderPage("gril", w, data) } func New() *GrilsModule { return &GrilsModule{} }